#define PWRBTN_PRESSED 1
static int pwrbtn_state;
-static struct input_dev pwrbtn_dev;
+static struct input_dev *pwrbtn_dev;
static struct timer_list pwrbtn_timer;
static void retubutton_timer_func(unsigned long arg)
state = PWRBTN_PRESSED;
if (pwrbtn_state != state) {
- input_report_key(&pwrbtn_dev, KEY_POWER, state);
+ input_report_key(pwrbtn_dev, KEY_POWER, state);
pwrbtn_state = state;
}
}
return -EBUSY;
}
- pwrbtn_dev.evbit[0] = BIT(EV_KEY);
- pwrbtn_dev.keybit[LONG(KEY_POWER)] = BIT(KEY_POWER);
- pwrbtn_dev.name = "retu-pwrbutton";
+ pwrbtn_dev = input_allocate_device();
+ if (!pwrbtn_dev)
+ return -ENOMEM;
+
+ pwrbtn_dev->evbit[0] = BIT(EV_KEY);
+ pwrbtn_dev->keybit[LONG(KEY_POWER)] = BIT(KEY_POWER);
+ pwrbtn_dev->name = "retu-pwrbutton";
- input_register_device(&pwrbtn_dev);
+ input_register_device(pwrbtn_dev);
return 0;
}
{
retu_free_irq(RETU_INT_PWR);
del_timer_sync(&pwrbtn_timer);
- input_unregister_device(&pwrbtn_dev);
+ input_unregister_device(pwrbtn_dev);
}
module_init(retubutton_init);