|
@@ -21,10 +21,10 @@
|
|
|
#pragma pack (1)
|
|
|
|
|
|
typedef struct {
|
|
|
- EFI_ACPI_5_1_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER Header;
|
|
|
- EFI_ACPI_5_1_GIC_STRUCTURE GicInterfaces[4];
|
|
|
+ EFI_ACPI_6_3_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER Header;
|
|
|
+ EFI_ACPI_6_3_GIC_STRUCTURE GicInterfaces[4];
|
|
|
#if (RPI_MODEL != 3)
|
|
|
- EFI_ACPI_5_1_GIC_DISTRIBUTOR_STRUCTURE GicDistributor;
|
|
|
+ EFI_ACPI_6_3_GIC_DISTRIBUTOR_STRUCTURE GicDistributor;
|
|
|
#endif
|
|
|
} PI_MULTIPLE_APIC_DESCRIPTION_TABLE;
|
|
|
|
|
@@ -33,9 +33,9 @@ typedef struct {
|
|
|
PI_MULTIPLE_APIC_DESCRIPTION_TABLE Madt = {
|
|
|
{
|
|
|
ACPI_HEADER (
|
|
|
- EFI_ACPI_5_1_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE,
|
|
|
+ EFI_ACPI_6_3_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE,
|
|
|
PI_MULTIPLE_APIC_DESCRIPTION_TABLE,
|
|
|
- EFI_ACPI_5_1_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION
|
|
|
+ EFI_ACPI_6_3_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION
|
|
|
),
|
|
|
//
|
|
|
// MADT specific fields
|
|
@@ -44,25 +44,30 @@ PI_MULTIPLE_APIC_DESCRIPTION_TABLE Madt = {
|
|
|
0, // Flags
|
|
|
},
|
|
|
{
|
|
|
- EFI_ACPI_5_1_GICC_STRUCTURE_INIT(
|
|
|
- 0, 0, GET_MPID(0, 0), EFI_ACPI_5_1_GIC_ENABLED, FixedPcdGet32 (PcdGicPmuIrq0),
|
|
|
+ EFI_ACPI_6_3_GICC_STRUCTURE_INIT (
|
|
|
+ 0, 0, GET_MPID(0, 0), EFI_ACPI_6_0_GIC_ENABLED, FixedPcdGet32 (PcdGicPmuIrq0),
|
|
|
FixedPcdGet64 (PcdGicInterruptInterfaceBase), FixedPcdGet64 (PcdGicInterruptInterfaceVBase),
|
|
|
- FixedPcdGet64 (PcdGicInterruptInterfaceHBase), FixedPcdGet32 (PcdGicGsivId), 0),
|
|
|
- EFI_ACPI_5_1_GICC_STRUCTURE_INIT(
|
|
|
- 1, 1, GET_MPID(0, 1), EFI_ACPI_5_1_GIC_ENABLED, FixedPcdGet32 (PcdGicPmuIrq1),
|
|
|
+ //
|
|
|
+ // Use 1 for GICR Base Address below, since Windows 10 on Raspberry Pi 3 does not
|
|
|
+ // boot otherwise, and this is the value that Microsoft had in their IoT blobs.
|
|
|
+ // Kept to 1 for GICv2-based Pi 4, since this field only matters for GICv3.
|
|
|
+ //
|
|
|
+ FixedPcdGet64 (PcdGicInterruptInterfaceHBase), FixedPcdGet32 (PcdGicGsivId), 0, 1, 0),
|
|
|
+ EFI_ACPI_6_3_GICC_STRUCTURE_INIT (
|
|
|
+ 1, 1, GET_MPID(0, 1), EFI_ACPI_6_0_GIC_ENABLED, FixedPcdGet32 (PcdGicPmuIrq1),
|
|
|
FixedPcdGet64 (PcdGicInterruptInterfaceBase), FixedPcdGet64 (PcdGicInterruptInterfaceVBase),
|
|
|
- FixedPcdGet64 (PcdGicInterruptInterfaceHBase), FixedPcdGet32 (PcdGicGsivId), 0),
|
|
|
- EFI_ACPI_5_1_GICC_STRUCTURE_INIT(
|
|
|
- 2, 2, GET_MPID(0, 2), EFI_ACPI_5_1_GIC_ENABLED, FixedPcdGet32 (PcdGicPmuIrq2),
|
|
|
+ FixedPcdGet64 (PcdGicInterruptInterfaceHBase), FixedPcdGet32 (PcdGicGsivId), 0, 1, 0),
|
|
|
+ EFI_ACPI_6_3_GICC_STRUCTURE_INIT (
|
|
|
+ 2, 2, GET_MPID(0, 2), EFI_ACPI_6_0_GIC_ENABLED, FixedPcdGet32 (PcdGicPmuIrq2),
|
|
|
FixedPcdGet64 (PcdGicInterruptInterfaceBase), FixedPcdGet64 (PcdGicInterruptInterfaceVBase),
|
|
|
- FixedPcdGet64 (PcdGicInterruptInterfaceHBase), FixedPcdGet32 (PcdGicGsivId), 0),
|
|
|
- EFI_ACPI_5_1_GICC_STRUCTURE_INIT(
|
|
|
- 3, 3, GET_MPID(0, 3), EFI_ACPI_5_1_GIC_ENABLED, FixedPcdGet32 (PcdGicPmuIrq3),
|
|
|
+ FixedPcdGet64 (PcdGicInterruptInterfaceHBase), FixedPcdGet32 (PcdGicGsivId), 0, 1, 0),
|
|
|
+ EFI_ACPI_6_3_GICC_STRUCTURE_INIT (
|
|
|
+ 3, 3, GET_MPID(0, 3), EFI_ACPI_6_0_GIC_ENABLED, FixedPcdGet32 (PcdGicPmuIrq3),
|
|
|
FixedPcdGet64 (PcdGicInterruptInterfaceBase), FixedPcdGet64 (PcdGicInterruptInterfaceVBase),
|
|
|
- FixedPcdGet64 (PcdGicInterruptInterfaceHBase), FixedPcdGet32 (PcdGicGsivId), 0),
|
|
|
+ FixedPcdGet64 (PcdGicInterruptInterfaceHBase), FixedPcdGet32 (PcdGicGsivId), 0, 1, 0),
|
|
|
},
|
|
|
#if (RPI_MODEL != 3)
|
|
|
- EFI_ACPI_5_0_GIC_DISTRIBUTOR_INIT(0, FixedPcdGet64 (PcdGicDistributorBase), 0)
|
|
|
+ EFI_ACPI_6_0_GIC_DISTRIBUTOR_INIT (0, FixedPcdGet64 (PcdGicDistributorBase), 0, 2)
|
|
|
#endif
|
|
|
};
|
|
|
|