HID: i2c-hid: Call device suspend callback before disabling irq
i2c-hid takes care of requesting and handling IRQs for HID devices which in turns might expect them to be always active when working in normal conditions. Hence, disabling IRQs before calling the suspend callbacks can potentially cause problems since device drivers might try to perform operations needing them. Fix this by disabling IRQs only after the suspend callbacks had been executed. Signed-off-by: Gabriele Mazzotta <gabriele.mzt@gmail.com> Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> Signed-off-by: Jiri Kosina <jkosina@suse.com>
This commit is contained in:
parent
67db8a8086
commit
af4739c281
|
@ -1092,13 +1092,13 @@ static int i2c_hid_suspend(struct device *dev)
|
|||
struct hid_device *hid = ihid->hid;
|
||||
int ret = 0;
|
||||
|
||||
if (hid->driver && hid->driver->suspend)
|
||||
ret = hid->driver->suspend(hid, PMSG_SUSPEND);
|
||||
|
||||
disable_irq(ihid->irq);
|
||||
if (device_may_wakeup(&client->dev))
|
||||
enable_irq_wake(ihid->irq);
|
||||
|
||||
if (hid->driver && hid->driver->suspend)
|
||||
ret = hid->driver->suspend(hid, PMSG_SUSPEND);
|
||||
|
||||
/* Save some power */
|
||||
i2c_hid_set_power(client, I2C_HID_PWR_SLEEP);
|
||||
|
||||
|
|
Loading…
Reference in New Issue