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>
This commit is contained in:
CoolStar 2023-03-26 03:52:54 -07:00 committed by Martin L Roth
parent 23c718c93a
commit 4a587b8e96
5 changed files with 205 additions and 187 deletions

View File

@ -50,7 +50,7 @@ Device (EC0)
}
/* Initialize UCSI */
^UCSI.INIT ()
\_SB.UCSI.INIT ()
// Initialize LID switch state
\LIDS = R (P1LC)

View File

@ -131,53 +131,59 @@ Name (DWTQ, Package () { 0x38, 0xff, WR }) /* DPTF: Write Trip Query */
Name (CSOS, Package () { 0xb8, 0xff, WR }) /* OS support for S0ix */
Name (CSEX, Package () { 0xb9, 0xff, WR }) /* OS enter(1)/exit(0) S0ix */
/*
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 */
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 */
}

View File

@ -141,7 +141,7 @@ Method (_Q79, 0, Serialized)
{
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")

View File

@ -1,12 +1,14 @@
/* SPDX-License-Identifier: GPL-2.0-only */
Device (UCSI)
Scope (\_SB)
{
Name (_HID, "GOOG000E")
Name (_CID, EisaId ("PNP0CA0"))
Device (UCSI)
{
Name (_HID, EisaId("USBC000"))
Name (_CID, Package { "GOOG000E", EisaId ("PNP0CA0") })
Name (_DDN, "Wilco EC UCSI")
Name (_UID, 1)
Name (_STA, 0xb)
Name (_STA, 0xf)
/* Value written to EC control register to start UCSI command */
Name (UCMD, 0xE0)
@ -66,6 +68,15 @@ Device (UCSI)
^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")) {
@ -140,4 +151,5 @@ Device (UCSI)
}
Return (Buffer (1) { 0 })
}
}
}

View File

@ -196,7 +196,7 @@ static void wilco_ec_fill_ssdt_generator(const struct device *dev)
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);