Input: i8042 - signal wakeup from atkbd/psmouse
Instead of signalling wakeup directly from i8042, let psmouse and atkbd drivers execute basic protocol handling and only then signal wakeup condition. This solves the issue where we increment wakeup counter simply because we are getting responses from keyboard/mouse to the commands we ourselves send to them as part of suspend transition. Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
This commit is contained in:
parent
a5f50c5013
commit
aaca981e45
|
@ -401,6 +401,8 @@ static irqreturn_t atkbd_interrupt(struct serio *serio, unsigned char data,
|
|||
if (ps2_handle_response(&atkbd->ps2dev, data))
|
||||
goto out;
|
||||
|
||||
pm_wakeup_event(&serio->dev, 0);
|
||||
|
||||
if (!atkbd->enabled)
|
||||
goto out;
|
||||
|
||||
|
|
|
@ -373,6 +373,8 @@ static irqreturn_t psmouse_interrupt(struct serio *serio,
|
|||
if (ps2_handle_response(&psmouse->ps2dev, data))
|
||||
goto out;
|
||||
|
||||
pm_wakeup_event(&serio->dev, 0);
|
||||
|
||||
if (psmouse->state <= PSMOUSE_RESYNCING)
|
||||
goto out;
|
||||
|
||||
|
|
|
@ -573,9 +573,6 @@ static irqreturn_t i8042_interrupt(int irq, void *dev_id)
|
|||
port = &i8042_ports[port_no];
|
||||
serio = port->exists ? port->serio : NULL;
|
||||
|
||||
if (irq && serio)
|
||||
pm_wakeup_event(&serio->dev, 0);
|
||||
|
||||
filter_dbg(port->driver_bound, data, "<- i8042 (interrupt, %d, %d%s%s)\n",
|
||||
port_no, irq,
|
||||
dfl & SERIO_PARITY ? ", bad parity" : "",
|
||||
|
|
Loading…
Reference in New Issue