diff --git a/src/soc/intel/xeon_sp/acpi/iiostack.asl b/src/soc/intel/xeon_sp/acpi/iiostack.asl index 91a5c6cd4d..e5e6bdc267 100644 --- a/src/soc/intel/xeon_sp/acpi/iiostack.asl +++ b/src/soc/intel/xeon_sp/acpi/iiostack.asl @@ -27,17 +27,18 @@ CreateDWordField (Arg3, 0x00, CDW1) \ If ((Arg0 == ToUUID ("33db4d5b-1ff7-401c-9657-7441c03dd766") /* PCI Host Bridge Device */)) \ { \ - CreateDWordField (Arg3, 0x04, CDW2) \ - If ((Arg2 > 0x02)) \ + If (Arg2 < 0x03) \ { \ - CreateDWordField (Arg3, 0x08, CDW3) \ + CDW1 |= 0x02 /* Unknown failure */ \ + Return (Arg3) \ } \ + CreateDWordField (Arg3, 0x04, CDW2) \ + CreateDWordField (Arg3, 0x08, CDW3) \ SUPP = CDW2 \ CTRL = CDW3 \ If ((AHPE || ((SUPP & 0x16) != 0x16))) \ { \ CTRL &= 0x1E \ - Sleep (0x03E8) \ } \ /* Never allow SHPC (no SHPC controller in system) */ \ CTRL &= 0x1D \ diff --git a/src/soc/intel/xeon_sp/spr/acpi/cxl_resource.asl b/src/soc/intel/xeon_sp/spr/acpi/cxl_resource.asl index 299247f9a1..3644e879c7 100644 --- a/src/soc/intel/xeon_sp/spr/acpi/cxl_resource.asl +++ b/src/soc/intel/xeon_sp/spr/acpi/cxl_resource.asl @@ -40,24 +40,28 @@ Device (IIO_DEVICE_NAME(DEVPREFIX, SOCKET, STACK)) { CreateDWordField (Arg3, 0x00, CDW1) If (Arg0 == ToUUID ("33db4d5b-1ff7-401c-9657-7441c03dd766") /* PCI Host Bridge Device */ - || Arg0 == ToUUID ("68f2d50b-c469-4d8a-bd3d-941a103fd3fc")) - /* CXL */ + || Arg0 == ToUUID ("68f2d50b-c469-4d8a-bd3d-941a103fd3fc")) /* CXL 2.0 */ { - CreateDWordField (Arg3, 0x04, CDW2) - If (Arg2 > 0x02) + If (Arg2 < 0x03) /* Number of DWORDs in Arg3 must be at least 3 */ { - CreateDWordField (Arg3, 0x08, CDW3) - CreateDWordField (Arg3, 0x0C, CDW4) - CreateDWordField (Arg3, 0x10, CDW5) + CDW1 |= 0x02 /* Unknown failure */ + Return (Arg3) } + CreateDWordField (Arg3, 0x04, CDW2) + CreateDWordField (Arg3, 0x08, CDW3) + SUPP = CDW2 CTRL = CDW3 - SUPC = CDW4 - CTRC = CDW5 + If (Arg0 == ToUUID ("68f2d50b-c469-4d8a-bd3d-941a103fd3fc")) /* CXL 2.0 */ + { + CreateDWordField (Arg3, 0x0C, CDW4) + CreateDWordField (Arg3, 0x10, CDW5) + SUPC = CDW4 + CTRC = CDW5 + } If (SUPP & 0x16 != 0x16) { CTRL &= 0x1E - Sleep (0x03E8) } /* Never allow SHPC (no SHPC controller in system) */ CTRL &= 0x1D @@ -72,7 +76,10 @@ Device (IIO_DEVICE_NAME(DEVPREFIX, SOCKET, STACK)) CDW1 |= 0x10 } CDW3 = CTRL - CDW5 = CTRC + If (Arg0 == ToUUID ("68f2d50b-c469-4d8a-bd3d-941a103fd3fc")) /* CXL 2.0 */ + { + CDW5 = CTRC + } Return (Arg3) } Else diff --git a/src/soc/intel/xeon_sp/spr/acpi/pci_resource.asl b/src/soc/intel/xeon_sp/spr/acpi/pci_resource.asl index 7988a16242..a369b11862 100644 --- a/src/soc/intel/xeon_sp/spr/acpi/pci_resource.asl +++ b/src/soc/intel/xeon_sp/spr/acpi/pci_resource.asl @@ -35,17 +35,19 @@ Device (IIO_DEVICE_NAME(DEVPREFIX, SOCKET, STACK)) CreateDWordField (Arg3, 0x00, CDW1) If (Arg0 == ToUUID ("33db4d5b-1ff7-401c-9657-7441c03dd766") /* PCI Host Bridge Device */) { - CreateDWordField (Arg3, 0x04, CDW2) - If (Arg2 > 0x02) + If (Arg2 < 0x03) /* Number of DWORDs in Arg3 must be at least 3 */ { - CreateDWordField (Arg3, 0x08, CDW3) + CDW1 |= 0x02 /* Unknown failure */ + Return (Arg3) } + CreateDWordField (Arg3, 0x04, CDW2) + CreateDWordField (Arg3, 0x08, CDW3) + SUPP = CDW2 CTRL = CDW3 If (SUPP & 0x16 != 0x16) { CTRL &= 0x1E - Sleep (0x03E8) } /* Never allow SHPC (no SHPC controller in system) */ CTRL &= 0x1D