|
@@ -39,18 +39,8 @@ static irqreturn_t powerbutton_irq(int irq, void *_pwr)
|
|
|
int err;
|
|
|
u8 value;
|
|
|
|
|
|
-#ifdef CONFIG_LOCKDEP
|
|
|
- /* WORKAROUND for lockdep forcing IRQF_DISABLED on us, which
|
|
|
- * we don't want and can't tolerate since this is a threaded
|
|
|
- * IRQ and can sleep due to the i2c reads it has to issue.
|
|
|
- * Although it might be friendlier not to borrow this thread
|
|
|
- * context...
|
|
|
- */
|
|
|
- local_irq_enable();
|
|
|
-#endif
|
|
|
-
|
|
|
err = twl_i2c_read_u8(TWL4030_MODULE_PM_MASTER, &value,
|
|
|
- STS_HW_CONDITIONS);
|
|
|
+ STS_HW_CONDITIONS);
|
|
|
if (!err) {
|
|
|
input_report_key(pwr, KEY_POWER, value & PWR_PWRON_IRQ);
|
|
|
input_sync(pwr);
|
|
@@ -80,7 +70,7 @@ static int __devinit twl4030_pwrbutton_probe(struct platform_device *pdev)
|
|
|
pwr->phys = "twl4030_pwrbutton/input0";
|
|
|
pwr->dev.parent = &pdev->dev;
|
|
|
|
|
|
- err = request_irq(irq, powerbutton_irq,
|
|
|
+ err = request_threaded_irq(irq, NULL, powerbutton_irq,
|
|
|
IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING,
|
|
|
"twl4030_pwrbutton", pwr);
|
|
|
if (err < 0) {
|