drivers/intel/gma: Fix OpRegion Mailbox3 synchronization

Make XBCM `Serialized` (obvious), and check for the callee clearing the
request bit (we checked only the status for 0 which we potentially wrote
ourselves).

Change-Id: Ic92d525eda8d0a159fa5ddaacf230658d71c1578
Signed-off-by: Nico Huber <nico.h@gmx.de>
Reviewed-on: https://review.coreboot.org/28302
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Felix Held <felix-coreboot@felixheld.de>
This commit is contained in:
Nico Huber 2018-08-23 22:36:09 +02:00
parent b4be50c9ca
commit c48d883d8b
1 changed files with 9 additions and 4 deletions

View File

@ -55,7 +55,7 @@
* * Driver not loaded or not ready
* * Driver reported an error during ASLE IRQ
*/
Method (XBCM, 1, NotSerialized)
Method (XBCM, 1, Serialized)
{
If (LEqual(ASLS, Zero))
{
@ -89,9 +89,14 @@
While (LGreater(Local0, Zero))
{
Sleep (1)
If (LEqual(And(ShiftRight(ASLC, 12), 0x3), Zero))
{
Return (Zero)
If (LEqual (And (ASLC, 0x2), 0)) {
/* Request has been processed, check status: */
And (ShiftRight (ASLC, 12), 0x3, Local1)
If (LEqual (Local1, 0)) {
Return (Zero)
} Else {
Return (Ones)
}
}
Decrement (Local0)
}