diff --git a/ArmVirtPkg/FdtClientDxe/FdtClientDxe.c b/ArmVirtPkg/FdtClientDxe/FdtClientDxe.c index 2063a59732..382e9af6bf 100644 --- a/ArmVirtPkg/FdtClientDxe/FdtClientDxe.c +++ b/ArmVirtPkg/FdtClientDxe/FdtClientDxe.c @@ -159,7 +159,8 @@ FindCompatibleNodeReg ( IN FDT_CLIENT_PROTOCOL *This, IN CONST CHAR8 *CompatibleString, OUT CONST VOID **Reg, - OUT UINT32 *RegElemSize, + OUT UINTN *AddressCells, + OUT UINTN *SizeCells, OUT UINT32 *RegSize ) { @@ -185,7 +186,8 @@ FindCompatibleNodeReg ( return EFI_NOT_FOUND; } - *RegElemSize = 8; + *AddressCells = 2; + *SizeCells = 2; return EFI_SUCCESS; } diff --git a/ArmVirtPkg/Include/Protocol/FdtClient.h b/ArmVirtPkg/Include/Protocol/FdtClient.h index 79a8f3ce1b..b593c74414 100644 --- a/ArmVirtPkg/Include/Protocol/FdtClient.h +++ b/ArmVirtPkg/Include/Protocol/FdtClient.h @@ -80,7 +80,8 @@ EFI_STATUS IN FDT_CLIENT_PROTOCOL *This, IN CONST CHAR8 *CompatibleString, OUT CONST VOID **Reg, - OUT UINT32 *RegElemSize, + OUT UINTN *AddressCells, + OUT UINTN *SizeCells, OUT UINT32 *RegSize ); diff --git a/ArmVirtPkg/Library/ArmVirtGicArchLib/ArmVirtGicArchLib.c b/ArmVirtPkg/Library/ArmVirtGicArchLib/ArmVirtGicArchLib.c index a1cd2da2d4..64afc4de6b 100644 --- a/ArmVirtPkg/Library/ArmVirtGicArchLib/ArmVirtGicArchLib.c +++ b/ArmVirtPkg/Library/ArmVirtGicArchLib/ArmVirtGicArchLib.c @@ -36,7 +36,8 @@ ArmVirtGicArchLibConstructor ( UINT32 IccSre; FDT_CLIENT_PROTOCOL *FdtClient; CONST UINT64 *Reg; - UINT32 RegElemSize, RegSize; + UINT32 RegSize; + UINTN AddressCells, SizeCells; UINTN GicRevision; EFI_STATUS Status; UINT64 DistBase, CpuBase, RedistBase; @@ -47,11 +48,13 @@ ArmVirtGicArchLibConstructor ( GicRevision = 2; Status = FdtClient->FindCompatibleNodeReg (FdtClient, "arm,cortex-a15-gic", - (CONST VOID **)&Reg, &RegElemSize, &RegSize); + (CONST VOID **)&Reg, &AddressCells, &SizeCells, + &RegSize); if (Status == EFI_NOT_FOUND) { GicRevision = 3; Status = FdtClient->FindCompatibleNodeReg (FdtClient, "arm,gic-v3", - (CONST VOID **)&Reg, &RegElemSize, &RegSize); + (CONST VOID **)&Reg, &AddressCells, &SizeCells, + &RegSize); } if (EFI_ERROR (Status)) { return Status; diff --git a/ArmVirtPkg/Library/QemuFwCfgLib/QemuFwCfgLib.c b/ArmVirtPkg/Library/QemuFwCfgLib/QemuFwCfgLib.c index 377262563e..8ecbe3fb5f 100644 --- a/ArmVirtPkg/Library/QemuFwCfgLib/QemuFwCfgLib.c +++ b/ArmVirtPkg/Library/QemuFwCfgLib/QemuFwCfgLib.c @@ -122,7 +122,8 @@ QemuFwCfgInitialize ( EFI_STATUS Status; FDT_CLIENT_PROTOCOL *FdtClient; CONST UINT64 *Reg; - UINT32 RegElemSize, RegSize; + UINT32 RegSize; + UINTN AddressCells, SizeCells; UINT64 FwCfgSelectorAddress; UINT64 FwCfgSelectorSize; UINT64 FwCfgDataAddress; @@ -135,7 +136,8 @@ QemuFwCfgInitialize ( ASSERT_EFI_ERROR (Status); Status = FdtClient->FindCompatibleNodeReg (FdtClient, "qemu,fw-cfg-mmio", - (CONST VOID **)&Reg, &RegElemSize, &RegSize); + (CONST VOID **)&Reg, &AddressCells, &SizeCells, + &RegSize); if (EFI_ERROR (Status)) { DEBUG ((EFI_D_WARN, "%a: No 'qemu,fw-cfg-mmio' compatible DT node found (Status == %r)\n", @@ -143,7 +145,8 @@ QemuFwCfgInitialize ( return EFI_SUCCESS; } - ASSERT (RegElemSize == sizeof (UINT64)); + ASSERT (AddressCells == 2); + ASSERT (SizeCells == 2); ASSERT (RegSize == 2 * sizeof (UINT64)); FwCfgDataAddress = SwapBytes64 (Reg[0]); diff --git a/ArmVirtPkg/XenAcpiPlatformDxe/XenAcpiPlatformDxe.c b/ArmVirtPkg/XenAcpiPlatformDxe/XenAcpiPlatformDxe.c index 37aea80628..203946f97b 100644 --- a/ArmVirtPkg/XenAcpiPlatformDxe/XenAcpiPlatformDxe.c +++ b/ArmVirtPkg/XenAcpiPlatformDxe/XenAcpiPlatformDxe.c @@ -45,7 +45,8 @@ GetXenArmAcpiRsdp ( EFI_STATUS Status; FDT_CLIENT_PROTOCOL *FdtClient; CONST UINT64 *Reg; - UINT32 RegElemSize, RegSize; + UINT32 RegSize; + UINTN AddressCells, SizeCells; UINT64 RegBase; UINT8 Sum; @@ -59,13 +60,16 @@ GetXenArmAcpiRsdp ( ASSERT_EFI_ERROR (Status); Status = FdtClient->FindCompatibleNodeReg (FdtClient, "xen,guest-acpi", - (CONST VOID **)&Reg, &RegElemSize, &RegSize); + (CONST VOID **)&Reg, &AddressCells, &SizeCells, + &RegSize); if (EFI_ERROR (Status)) { DEBUG ((EFI_D_WARN, "%a: No 'xen,guest-acpi' compatible DT node found\n", __FUNCTION__)); return EFI_NOT_FOUND; } + ASSERT (AddressCells == 2); + ASSERT (SizeCells == 2); ASSERT (RegSize == 2 * sizeof (UINT64)); RegBase = SwapBytes64(Reg[0]); diff --git a/ArmVirtPkg/XenioFdtDxe/XenioFdtDxe.c b/ArmVirtPkg/XenioFdtDxe/XenioFdtDxe.c index 4a88db3217..ae012a76f5 100644 --- a/ArmVirtPkg/XenioFdtDxe/XenioFdtDxe.c +++ b/ArmVirtPkg/XenioFdtDxe/XenioFdtDxe.c @@ -31,7 +31,8 @@ InitializeXenioFdtDxe ( EFI_STATUS Status; FDT_CLIENT_PROTOCOL *FdtClient; CONST UINT64 *Reg; - UINT32 RegElemSize, RegSize; + UINT32 RegSize; + UINTN AddressCells, SizeCells; EFI_HANDLE Handle; UINT64 RegBase; @@ -40,14 +41,17 @@ InitializeXenioFdtDxe ( ASSERT_EFI_ERROR (Status); Status = FdtClient->FindCompatibleNodeReg (FdtClient, "xen,xen", - (CONST VOID **)&Reg, &RegElemSize, &RegSize); + (CONST VOID **)&Reg, &AddressCells, &SizeCells, + &RegSize); if (EFI_ERROR (Status)) { DEBUG ((EFI_D_WARN, "%a: No 'xen,xen' compatible DT node found\n", __FUNCTION__)); return EFI_UNSUPPORTED; } - ASSERT (RegSize == 16); + ASSERT (AddressCells == 2); + ASSERT (SizeCells == 2); + ASSERT (RegSize == 2 * sizeof (UINT64)); // // Retrieve the reg base from this node and wire it up to the