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>
diff --git a/src/drivers/intel/gma/acpi/configure_brightness_levels.asl b/src/drivers/intel/gma/acpi/configure_brightness_levels.asl
index dfd878c..23637b0 100644
--- a/src/drivers/intel/gma/acpi/configure_brightness_levels.asl
+++ b/src/drivers/intel/gma/acpi/configure_brightness_levels.asl
@@ -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)
 			}