summaryrefslogtreecommitdiff
path: root/src/soc/intel/xeon_sp
diff options
context:
space:
mode:
Diffstat (limited to 'src/soc/intel/xeon_sp')
-rw-r--r--src/soc/intel/xeon_sp/acpi/iiostack.asl9
-rw-r--r--src/soc/intel/xeon_sp/spr/acpi/cxl_resource.asl27
-rw-r--r--src/soc/intel/xeon_sp/spr/acpi/pci_resource.asl10
3 files changed, 28 insertions, 18 deletions
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 */
{
+ If (Arg2 < 0x03) /* Number of DWORDs in Arg3 must be at least 3 */
+ {
+ CDW1 |= 0x02 /* Unknown failure */
+ Return (Arg3)
+ }
CreateDWordField (Arg3, 0x04, CDW2)
- If (Arg2 > 0x02)
+ CreateDWordField (Arg3, 0x08, CDW3)
+
+ SUPP = CDW2
+ CTRL = CDW3
+ If (Arg0 == ToUUID ("68f2d50b-c469-4d8a-bd3d-941a103fd3fc")) /* CXL 2.0 */
{
- CreateDWordField (Arg3, 0x08, CDW3)
CreateDWordField (Arg3, 0x0C, CDW4)
CreateDWordField (Arg3, 0x10, CDW5)
+ SUPC = CDW4
+ CTRC = CDW5
}
- SUPP = CDW2
- CTRL = CDW3
- 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