ec/google/wilco: Correct scope of UCSI ACPI device

Set the USCI device scope to _SB and set HID to USBC000 so Windows
driver attaches. This matches the ACPI used by the non-Chromebook
version of the Dell Latittude 7410 (which uses the same EC).

TEST=build/boot Win11 on google/drallion

Change-Id: If482fa4a4856c7bc085795bc72b35ebefe2f15c4
Signed-off-by: Matt DeVillier <matt.devillier@gmail.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/77281
Reviewed-by: Subrata Banik <subratabanik@google.com>
Reviewed-by: CoolStar <coolstarorganization@gmail.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
diff --git a/src/ec/google/wilco/acpi/ec.asl b/src/ec/google/wilco/acpi/ec.asl
index 7b41ef2..2e84328 100644
--- a/src/ec/google/wilco/acpi/ec.asl
+++ b/src/ec/google/wilco/acpi/ec.asl
@@ -50,7 +50,7 @@
 		}
 
 		/* Initialize UCSI */
-		^UCSI.INIT ()
+		\_SB.UCSI.INIT ()
 
 		// Initialize LID switch state
 		\LIDS = R (P1LC)
diff --git a/src/ec/google/wilco/acpi/ec_ram.asl b/src/ec/google/wilco/acpi/ec_ram.asl
index 665fa1b..5d44629 100644
--- a/src/ec/google/wilco/acpi/ec_ram.asl
+++ b/src/ec/google/wilco/acpi/ec_ram.asl
@@ -131,53 +131,59 @@
 Name (CSOS, Package () { 0xb8, 0xff, WR })	/* OS support for S0ix */
 Name (CSEX, Package () { 0xb9, 0xff, WR })	/* OS enter(1)/exit(0) S0ix */
 
-/*
- * EC UCSI
- */
-Name (UVR0, Package () { 0x80, 0xff, RD })	/* UCSI Version */
-Name (UVR1, Package () { 0x81, 0xff, RD })	/* UCSI Version */
-Name (UCI0, Package () { 0x84, 0xff, RD })	/* UCSI Change Indicator */
-Name (UCI1, Package () { 0x85, 0xff, RD })	/* UCSI Change Indicator */
-Name (UCI2, Package () { 0x86, 0xff, RD })	/* UCSI Change Indicator */
-Name (UCI3, Package () { 0x87, 0xff, RD })	/* UCSI Change Indicator */
-Name (UCL0, Package () { 0x88, 0xff, WR })	/* UCSI Control */
-Name (UCL1, Package () { 0x89, 0xff, WR })	/* UCSI Control */
-Name (UCL2, Package () { 0x8a, 0xff, WR })	/* UCSI Control */
-Name (UCL3, Package () { 0x8b, 0xff, WR })	/* UCSI Control */
-Name (UCL4, Package () { 0x8c, 0xff, WR })	/* UCSI Control */
-Name (UCL5, Package () { 0x8d, 0xff, WR })	/* UCSI Control */
-Name (UCL6, Package () { 0x8e, 0xff, WR })	/* UCSI Control */
-Name (UCL7, Package () { 0x8f, 0xff, WR })	/* UCSI Control */
-Name (UMI0, Package () { 0x90, 0xff, RD })	/* UCSI Message In */
-Name (UMI1, Package () { 0x91, 0xff, RD })	/* UCSI Message In */
-Name (UMI2, Package () { 0x92, 0xff, RD })	/* UCSI Message In */
-Name (UMI3, Package () { 0x93, 0xff, RD })	/* UCSI Message In */
-Name (UMI4, Package () { 0x94, 0xff, RD })	/* UCSI Message In */
-Name (UMI5, Package () { 0x95, 0xff, RD })	/* UCSI Message In */
-Name (UMI6, Package () { 0x96, 0xff, RD })	/* UCSI Message In */
-Name (UMI7, Package () { 0x97, 0xff, RD })	/* UCSI Message In */
-Name (UMI8, Package () { 0x98, 0xff, RD })	/* UCSI Message In */
-Name (UMI9, Package () { 0x99, 0xff, RD })	/* UCSI Message In */
-Name (UMIA, Package () { 0x9a, 0xff, RD })	/* UCSI Message In */
-Name (UMIB, Package () { 0x9b, 0xff, RD })	/* UCSI Message In */
-Name (UMIC, Package () { 0x9c, 0xff, RD })	/* UCSI Message In */
-Name (UMID, Package () { 0x9d, 0xff, RD })	/* UCSI Message In */
-Name (UMIE, Package () { 0x9e, 0xff, RD })	/* UCSI Message In */
-Name (UMIF, Package () { 0x9f, 0xff, RD })	/* UCSI Message In */
-Name (UMO0, Package () { 0xa0, 0xff, WR })	/* UCSI Message Out */
-Name (UMO1, Package () { 0xa1, 0xff, WR })	/* UCSI Message Out */
-Name (UMO2, Package () { 0xa2, 0xff, WR })	/* UCSI Message Out */
-Name (UMO3, Package () { 0xa3, 0xff, WR })	/* UCSI Message Out */
-Name (UMO4, Package () { 0xa4, 0xff, WR })	/* UCSI Message Out */
-Name (UMO5, Package () { 0xa5, 0xff, WR })	/* UCSI Message Out */
-Name (UMO6, Package () { 0xa6, 0xff, WR })	/* UCSI Message Out */
-Name (UMO7, Package () { 0xa7, 0xff, WR })	/* UCSI Message Out */
-Name (UMO8, Package () { 0xa8, 0xff, WR })	/* UCSI Message Out */
-Name (UMO9, Package () { 0xa9, 0xff, WR })	/* UCSI Message Out */
-Name (UMOA, Package () { 0xaa, 0xff, WR })	/* UCSI Message Out */
-Name (UMOB, Package () { 0xab, 0xff, WR })	/* UCSI Message Out */
-Name (UMOC, Package () { 0xac, 0xff, WR })	/* UCSI Message Out */
-Name (UMOD, Package () { 0xad, 0xff, WR })	/* UCSI Message Out */
-Name (UMOE, Package () { 0xae, 0xff, WR })	/* UCSI Message Out */
-Name (UMOF, Package () { 0xaf, 0xff, WR })	/* UCSI Message Out */
-Name (UCTL, Package () { 0xb0, 0xff, WR })	/* UCSI Control Register */
+Scope (\_SB)
+{
+	Name (RD, 0)
+	Name (WR, 1)
+
+	/*
+	 * EC UCSI
+	 */
+	Name (UVR0, Package () { 0x80, 0xff, RD })	/* UCSI Version */
+	Name (UVR1, Package () { 0x81, 0xff, RD })	/* UCSI Version */
+	Name (UCI0, Package () { 0x84, 0xff, RD })	/* UCSI Change Indicator */
+	Name (UCI1, Package () { 0x85, 0xff, RD })	/* UCSI Change Indicator */
+	Name (UCI2, Package () { 0x86, 0xff, RD })	/* UCSI Change Indicator */
+	Name (UCI3, Package () { 0x87, 0xff, RD })	/* UCSI Change Indicator */
+	Name (UCL0, Package () { 0x88, 0xff, WR })	/* UCSI Control */
+	Name (UCL1, Package () { 0x89, 0xff, WR })	/* UCSI Control */
+	Name (UCL2, Package () { 0x8a, 0xff, WR })	/* UCSI Control */
+	Name (UCL3, Package () { 0x8b, 0xff, WR })	/* UCSI Control */
+	Name (UCL4, Package () { 0x8c, 0xff, WR })	/* UCSI Control */
+	Name (UCL5, Package () { 0x8d, 0xff, WR })	/* UCSI Control */
+	Name (UCL6, Package () { 0x8e, 0xff, WR })	/* UCSI Control */
+	Name (UCL7, Package () { 0x8f, 0xff, WR })	/* UCSI Control */
+	Name (UMI0, Package () { 0x90, 0xff, RD })	/* UCSI Message In */
+	Name (UMI1, Package () { 0x91, 0xff, RD })	/* UCSI Message In */
+	Name (UMI2, Package () { 0x92, 0xff, RD })	/* UCSI Message In */
+	Name (UMI3, Package () { 0x93, 0xff, RD })	/* UCSI Message In */
+	Name (UMI4, Package () { 0x94, 0xff, RD })	/* UCSI Message In */
+	Name (UMI5, Package () { 0x95, 0xff, RD })	/* UCSI Message In */
+	Name (UMI6, Package () { 0x96, 0xff, RD })	/* UCSI Message In */
+	Name (UMI7, Package () { 0x97, 0xff, RD })	/* UCSI Message In */
+	Name (UMI8, Package () { 0x98, 0xff, RD })	/* UCSI Message In */
+	Name (UMI9, Package () { 0x99, 0xff, RD })	/* UCSI Message In */
+	Name (UMIA, Package () { 0x9a, 0xff, RD })	/* UCSI Message In */
+	Name (UMIB, Package () { 0x9b, 0xff, RD })	/* UCSI Message In */
+	Name (UMIC, Package () { 0x9c, 0xff, RD })	/* UCSI Message In */
+	Name (UMID, Package () { 0x9d, 0xff, RD })	/* UCSI Message In */
+	Name (UMIE, Package () { 0x9e, 0xff, RD })	/* UCSI Message In */
+	Name (UMIF, Package () { 0x9f, 0xff, RD })	/* UCSI Message In */
+	Name (UMO0, Package () { 0xa0, 0xff, WR })	/* UCSI Message Out */
+	Name (UMO1, Package () { 0xa1, 0xff, WR })	/* UCSI Message Out */
+	Name (UMO2, Package () { 0xa2, 0xff, WR })	/* UCSI Message Out */
+	Name (UMO3, Package () { 0xa3, 0xff, WR })	/* UCSI Message Out */
+	Name (UMO4, Package () { 0xa4, 0xff, WR })	/* UCSI Message Out */
+	Name (UMO5, Package () { 0xa5, 0xff, WR })	/* UCSI Message Out */
+	Name (UMO6, Package () { 0xa6, 0xff, WR })	/* UCSI Message Out */
+	Name (UMO7, Package () { 0xa7, 0xff, WR })	/* UCSI Message Out */
+	Name (UMO8, Package () { 0xa8, 0xff, WR })	/* UCSI Message Out */
+	Name (UMO9, Package () { 0xa9, 0xff, WR })	/* UCSI Message Out */
+	Name (UMOA, Package () { 0xaa, 0xff, WR })	/* UCSI Message Out */
+	Name (UMOB, Package () { 0xab, 0xff, WR })	/* UCSI Message Out */
+	Name (UMOC, Package () { 0xac, 0xff, WR })	/* UCSI Message Out */
+	Name (UMOD, Package () { 0xad, 0xff, WR })	/* UCSI Message Out */
+	Name (UMOE, Package () { 0xae, 0xff, WR })	/* UCSI Message Out */
+	Name (UMOF, Package () { 0xaf, 0xff, WR })	/* UCSI Message Out */
+	Name (UCTL, Package () { 0xb0, 0xff, WR })	/* UCSI Control Register */
+}
diff --git a/src/ec/google/wilco/acpi/event.asl b/src/ec/google/wilco/acpi/event.asl
index 3f59946..e611ab0 100644
--- a/src/ec/google/wilco/acpi/event.asl
+++ b/src/ec/google/wilco/acpi/event.asl
@@ -141,7 +141,7 @@
 {
 	If (ISSX == 0) {
 		Printf ("EC _Q79 UCSI Event")
-		Notify (^UCSI, 0x80)
+		Notify (\_SB.UCSI, 0x80)
 		^UCEP = 0
 	} Else {
 		Printf ("EC _Q79 UCSI Event Masked in S0ix")
diff --git a/src/ec/google/wilco/acpi/ucsi.asl b/src/ec/google/wilco/acpi/ucsi.asl
index 97e153b..a3f9750 100644
--- a/src/ec/google/wilco/acpi/ucsi.asl
+++ b/src/ec/google/wilco/acpi/ucsi.asl
@@ -1,143 +1,155 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-Device (UCSI)
+Scope (\_SB)
 {
-	Name (_HID, "GOOG000E")
-	Name (_CID, EisaId ("PNP0CA0"))
-	Name (_DDN, "Wilco EC UCSI")
-	Name (_UID, 1)
-	Name (_STA, 0xb)
-
-	/* Value written to EC control register to start UCSI command */
-	Name (UCMD, 0xE0)
-
-	/* Shared memory fields are defined in the SSDT */
-	External (VER0, FieldUnitObj)
-	External (VER1, FieldUnitObj)
-	External (CCI0, FieldUnitObj)
-	External (CCI1, FieldUnitObj)
-	External (CCI2, FieldUnitObj)
-	External (CCI3, FieldUnitObj)
-	External (CTL0, FieldUnitObj)
-	External (CTL1, FieldUnitObj)
-	External (CTL2, FieldUnitObj)
-	External (CTL3, FieldUnitObj)
-	External (CTL4, FieldUnitObj)
-	External (CTL5, FieldUnitObj)
-	External (CTL6, FieldUnitObj)
-	External (CTL7, FieldUnitObj)
-	External (MGI0, FieldUnitObj)
-	External (MGI1, FieldUnitObj)
-	External (MGI2, FieldUnitObj)
-	External (MGI3, FieldUnitObj)
-	External (MGI4, FieldUnitObj)
-	External (MGI5, FieldUnitObj)
-	External (MGI6, FieldUnitObj)
-	External (MGI7, FieldUnitObj)
-	External (MGI8, FieldUnitObj)
-	External (MGI9, FieldUnitObj)
-	External (MGIA, FieldUnitObj)
-	External (MGIB, FieldUnitObj)
-	External (MGIC, FieldUnitObj)
-	External (MGID, FieldUnitObj)
-	External (MGIE, FieldUnitObj)
-	External (MGIF, FieldUnitObj)
-	External (MGO0, FieldUnitObj)
-	External (MGO1, FieldUnitObj)
-	External (MGO2, FieldUnitObj)
-	External (MGO3, FieldUnitObj)
-	External (MGO4, FieldUnitObj)
-	External (MGO5, FieldUnitObj)
-	External (MGO6, FieldUnitObj)
-	External (MGO7, FieldUnitObj)
-	External (MGO8, FieldUnitObj)
-	External (MGO9, FieldUnitObj)
-	External (MGOA, FieldUnitObj)
-	External (MGOB, FieldUnitObj)
-	External (MGOC, FieldUnitObj)
-	External (MGOD, FieldUnitObj)
-	External (MGOE, FieldUnitObj)
-	External (MGOF, FieldUnitObj)
-
-	Method (INIT)
+	Device (UCSI)
 	{
-		/* Read UCSI version from EC into shared memory */
-		^VER0 = R (^^UVR0)
-		^VER1 = R (^^UVR1)
-	}
+		Name (_HID, EisaId("USBC000"))
+		Name (_CID, Package { "GOOG000E", EisaId ("PNP0CA0") })
+		Name (_DDN, "Wilco EC UCSI")
+		Name (_UID, 1)
+		Name (_STA, 0xf)
 
-	Method (_DSM, 4, Serialized)
-	{
-		If (Arg0 != ToUUID ("6f8398c2-7ca4-11e4-ad36-631042b5008f")) {
+		/* Value written to EC control register to start UCSI command */
+		Name (UCMD, 0xE0)
+
+		/* Shared memory fields are defined in the SSDT */
+		External (VER0, FieldUnitObj)
+		External (VER1, FieldUnitObj)
+		External (CCI0, FieldUnitObj)
+		External (CCI1, FieldUnitObj)
+		External (CCI2, FieldUnitObj)
+		External (CCI3, FieldUnitObj)
+		External (CTL0, FieldUnitObj)
+		External (CTL1, FieldUnitObj)
+		External (CTL2, FieldUnitObj)
+		External (CTL3, FieldUnitObj)
+		External (CTL4, FieldUnitObj)
+		External (CTL5, FieldUnitObj)
+		External (CTL6, FieldUnitObj)
+		External (CTL7, FieldUnitObj)
+		External (MGI0, FieldUnitObj)
+		External (MGI1, FieldUnitObj)
+		External (MGI2, FieldUnitObj)
+		External (MGI3, FieldUnitObj)
+		External (MGI4, FieldUnitObj)
+		External (MGI5, FieldUnitObj)
+		External (MGI6, FieldUnitObj)
+		External (MGI7, FieldUnitObj)
+		External (MGI8, FieldUnitObj)
+		External (MGI9, FieldUnitObj)
+		External (MGIA, FieldUnitObj)
+		External (MGIB, FieldUnitObj)
+		External (MGIC, FieldUnitObj)
+		External (MGID, FieldUnitObj)
+		External (MGIE, FieldUnitObj)
+		External (MGIF, FieldUnitObj)
+		External (MGO0, FieldUnitObj)
+		External (MGO1, FieldUnitObj)
+		External (MGO2, FieldUnitObj)
+		External (MGO3, FieldUnitObj)
+		External (MGO4, FieldUnitObj)
+		External (MGO5, FieldUnitObj)
+		External (MGO6, FieldUnitObj)
+		External (MGO7, FieldUnitObj)
+		External (MGO8, FieldUnitObj)
+		External (MGO9, FieldUnitObj)
+		External (MGOA, FieldUnitObj)
+		External (MGOB, FieldUnitObj)
+		External (MGOC, FieldUnitObj)
+		External (MGOD, FieldUnitObj)
+		External (MGOE, FieldUnitObj)
+		External (MGOF, FieldUnitObj)
+
+		Method (INIT)
+		{
+			/* Read UCSI version from EC into shared memory */
+			^VER0 = R (^^UVR0)
+			^VER1 = R (^^UVR1)
+		}
+
+		Method (R, 1, Serialized, 2){
+			Local0 = \_SB.PCI0.LPCB.EC0.R(Arg0)
+			Return (Local0)
+		}
+
+		Method (W, 2, Serialized, 2){
+			\_SB.PCI0.LPCB.EC0.W(Arg0, Arg1)
+		}
+
+		Method (_DSM, 4, Serialized)
+		{
+			If (Arg0 != ToUUID ("6f8398c2-7ca4-11e4-ad36-631042b5008f")) {
+				Return (Buffer (1) { 0 })
+			}
+
+			Switch (ToInteger (Arg2))
+			{
+				Case (0)
+				{
+					Return (Buffer (1) { 0x07 })
+				}
+				Case (1)
+				{
+					/* Write Message Out */
+					W (^^UMO0, ^MGO0)
+					W (^^UMO1, ^MGO1)
+					W (^^UMO2, ^MGO2)
+					W (^^UMO3, ^MGO3)
+					W (^^UMO4, ^MGO4)
+					W (^^UMO5, ^MGO5)
+					W (^^UMO6, ^MGO6)
+					W (^^UMO7, ^MGO7)
+					W (^^UMO8, ^MGO8)
+					W (^^UMO9, ^MGO9)
+					W (^^UMOA, ^MGOA)
+					W (^^UMOB, ^MGOB)
+					W (^^UMOC, ^MGOC)
+					W (^^UMOD, ^MGOD)
+					W (^^UMOE, ^MGOE)
+					W (^^UMOF, ^MGOF)
+
+					/* Write Control */
+					W (^^UCL0, ^CTL0)
+					W (^^UCL1, ^CTL1)
+					W (^^UCL2, ^CTL2)
+					W (^^UCL3, ^CTL3)
+					W (^^UCL4, ^CTL4)
+					W (^^UCL5, ^CTL5)
+					W (^^UCL6, ^CTL6)
+					W (^^UCL7, ^CTL7)
+
+					/* Start EC Command */
+					W (^^UCTL, ^UCMD)
+				}
+				Case (2)
+				{
+					/* Read Message In */
+					^MGI0 = R (^^UMI0)
+					^MGI1 = R (^^UMI1)
+					^MGI2 = R (^^UMI2)
+					^MGI3 = R (^^UMI3)
+					^MGI4 = R (^^UMI4)
+					^MGI5 = R (^^UMI5)
+					^MGI6 = R (^^UMI6)
+					^MGI7 = R (^^UMI7)
+					^MGI8 = R (^^UMI8)
+					^MGI9 = R (^^UMI9)
+					^MGIA = R (^^UMIA)
+					^MGIB = R (^^UMIB)
+					^MGIC = R (^^UMIC)
+					^MGID = R (^^UMID)
+					^MGIE = R (^^UMIE)
+					^MGIF = R (^^UMIF)
+
+					/* Read Status */
+					^CCI0 = R (^^UCI0)
+					^CCI1 = R (^^UCI1)
+					^CCI2 = R (^^UCI2)
+					^CCI3 = R (^^UCI3)
+				}
+			}
 			Return (Buffer (1) { 0 })
 		}
-
-		Switch (ToInteger (Arg2))
-		{
-			Case (0)
-			{
-				Return (Buffer (1) { 0x07 })
-			}
-			Case (1)
-			{
-				/* Write Message Out */
-				W (^^UMO0, ^MGO0)
-				W (^^UMO1, ^MGO1)
-				W (^^UMO2, ^MGO2)
-				W (^^UMO3, ^MGO3)
-				W (^^UMO4, ^MGO4)
-				W (^^UMO5, ^MGO5)
-				W (^^UMO6, ^MGO6)
-				W (^^UMO7, ^MGO7)
-				W (^^UMO8, ^MGO8)
-				W (^^UMO9, ^MGO9)
-				W (^^UMOA, ^MGOA)
-				W (^^UMOB, ^MGOB)
-				W (^^UMOC, ^MGOC)
-				W (^^UMOD, ^MGOD)
-				W (^^UMOE, ^MGOE)
-				W (^^UMOF, ^MGOF)
-
-				/* Write Control */
-				W (^^UCL0, ^CTL0)
-				W (^^UCL1, ^CTL1)
-				W (^^UCL2, ^CTL2)
-				W (^^UCL3, ^CTL3)
-				W (^^UCL4, ^CTL4)
-				W (^^UCL5, ^CTL5)
-				W (^^UCL6, ^CTL6)
-				W (^^UCL7, ^CTL7)
-
-				/* Start EC Command */
-				W (^^UCTL, ^UCMD)
-			}
-			Case (2)
-			{
-				/* Read Message In */
-				^MGI0 = R (^^UMI0)
-				^MGI1 = R (^^UMI1)
-				^MGI2 = R (^^UMI2)
-				^MGI3 = R (^^UMI3)
-				^MGI4 = R (^^UMI4)
-				^MGI5 = R (^^UMI5)
-				^MGI6 = R (^^UMI6)
-				^MGI7 = R (^^UMI7)
-				^MGI8 = R (^^UMI8)
-				^MGI9 = R (^^UMI9)
-				^MGIA = R (^^UMIA)
-				^MGIB = R (^^UMIB)
-				^MGIC = R (^^UMIC)
-				^MGID = R (^^UMID)
-				^MGIE = R (^^UMIE)
-				^MGIF = R (^^UMIF)
-
-				/* Read Status */
-				^CCI0 = R (^^UCI0)
-				^CCI1 = R (^^UCI1)
-				^CCI2 = R (^^UCI2)
-				^CCI3 = R (^^UCI3)
-			}
-		}
-		Return (Buffer (1) { 0 })
 	}
 }
diff --git a/src/ec/google/wilco/chip.c b/src/ec/google/wilco/chip.c
index 7d85c6f..88d416d 100644
--- a/src/ec/google/wilco/chip.c
+++ b/src/ec/google/wilco/chip.c
@@ -196,7 +196,7 @@
 	opreg.regionoffset = (uintptr_t)region_ptr;
 	opreg.regionlen = ucsi_alloc_region_len;
 
-	acpigen_write_scope(acpi_device_path_join(dev, "UCSI"));
+	acpigen_write_scope("\\_SB.UCSI");
 	acpigen_write_name("_CRS");
 	acpigen_write_resourcetemplate_header();
 	acpigen_write_mem32fixed(1, (uintptr_t)region_ptr, ucsi_region_len);