x86, olpc: Wait for last byte of EC command to be accepted
authorPaul Fox <pgf@laptop.org>
Tue, 26 Jul 2011 15:42:26 +0000 (16:42 +0100)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 29 Aug 2011 20:29:14 +0000 (13:29 -0700)
commit656e041651bdb780ad525c0983004d01b6f44fd8
tree8a97eb5fe50b070dc7f0549a23845fff1c13ffda
parent6aaaf4e6f976f93f6e7d67bf21874412bf124582
x86, olpc: Wait for last byte of EC command to be accepted

commit a3ea14df0e383f44dcb2e61badb71180dbffe526 upstream.

When executing EC commands, only waiting when there are still
more bytes to write is usually fine. However, if the system
suspends very quickly after a call to olpc_ec_cmd(), the last
data byte may not yet be transferred to the EC, and the command
will not complete.

This solves a bug where the SCI wakeup mask was not correctly
written when going into suspend.

It means that sometimes, on XO-1.5 (but not XO-1), the
devices that were marked as wakeup sources can't wake up
the system. e.g. you ask for wifi wakeups, suspend, but then
incoming wifi frames don't wake up the system as they should.

Signed-off-by: Paul Fox <pgf@laptop.org>
Signed-off-by: Daniel Drake <dsd@laptop.org>
Acked-by: Andres Salomon <dilinger@queued.net>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
arch/x86/platform/olpc/olpc.c