[edk2] [PATCH edk2-platforms 0/5] SynQuacer ACPI support

Ard Biesheuvel posted 5 patches 6 years, 1 month ago
Failed in applying to current master (apply log)
There is a newer version of this series
Platform/Socionext/DeveloperBox/DeveloperBox.dsc                                                     |   2 +
Platform/Socionext/DeveloperBox/DeveloperBox.fdf                                                     |  14 ++
Platform/Socionext/SynQuacerEvalBoard/SynQuacerEvalBoard.dsc                                         |   2 +
Platform/Socionext/SynQuacerEvalBoard/SynQuacerEvalBoard.fdf                                         |  14 ++
Silicon/Socionext/SynQuacer/Acpi.dsc.inc                                                             |  48 ++++
Silicon/Socionext/SynQuacer/AcpiTables/AcpiSsdtRootPci.asl                                           | 262 ++++++++++++++++++++
Silicon/Socionext/SynQuacer/AcpiTables/AcpiTables.h                                                  |  73 ++++++
Silicon/Socionext/SynQuacer/AcpiTables/AcpiTables.inf                                                |  64 +++++
Silicon/Socionext/SynQuacer/AcpiTables/Dsdt.asl                                                      | 187 ++++++++++++++
Silicon/Socionext/SynQuacer/AcpiTables/Fadt.aslc                                                     |  91 +++++++
Silicon/Socionext/SynQuacer/AcpiTables/Gtdt.aslc                                                     |  93 +++++++
Silicon/Socionext/SynQuacer/AcpiTables/Iort.aslc                                                     | 101 ++++++++
Silicon/Socionext/SynQuacer/AcpiTables/Madt.aslc                                                     | 182 ++++++++++++++
Silicon/Socionext/SynQuacer/AcpiTables/Mcfg.aslc                                                     |  63 +++++
Silicon/Socionext/SynQuacer/AcpiTables/Spcr.aslc                                                     | 128 ++++++++++
Silicon/Socionext/SynQuacer/DeviceTree/SynQuacer.dtsi                                                |   2 +-
Silicon/Socionext/SynQuacer/Drivers/PlatformDxe/Emmc.asl                                             |  41 +++
Silicon/Socionext/SynQuacer/Drivers/PlatformDxe/Emmc.c                                               |  55 ++++
Silicon/Socionext/SynQuacer/Drivers/PlatformDxe/PlatformDxe.c                                        |  32 ++-
Silicon/Socionext/SynQuacer/Drivers/PlatformDxe/PlatformDxe.h                                        |   4 +
Silicon/Socionext/SynQuacer/Drivers/PlatformDxe/PlatformDxe.inf                                      |   5 +
Silicon/Socionext/SynQuacer/Drivers/PlatformDxe/PlatformDxeHii.uni                                   |   8 +-
Silicon/Socionext/SynQuacer/Drivers/PlatformDxe/PlatformDxeHii.vfr                                   |  10 +-
Silicon/Socionext/SynQuacer/Include/Platform/Pcie.h                                                  |  22 +-
Silicon/Socionext/SynQuacer/Include/Platform/VarStore.h                                              |   8 +-
Silicon/Socionext/SynQuacer/Library/SynQuacerPciHostBridgeLib/SynQuacerPciHostBridgeLibConstructor.c |   4 +-
26 files changed, 1490 insertions(+), 25 deletions(-)
create mode 100644 Silicon/Socionext/SynQuacer/Acpi.dsc.inc
create mode 100644 Silicon/Socionext/SynQuacer/AcpiTables/AcpiSsdtRootPci.asl
create mode 100644 Silicon/Socionext/SynQuacer/AcpiTables/AcpiTables.h
create mode 100644 Silicon/Socionext/SynQuacer/AcpiTables/AcpiTables.inf
create mode 100644 Silicon/Socionext/SynQuacer/AcpiTables/Dsdt.asl
create mode 100644 Silicon/Socionext/SynQuacer/AcpiTables/Fadt.aslc
create mode 100644 Silicon/Socionext/SynQuacer/AcpiTables/Gtdt.aslc
create mode 100644 Silicon/Socionext/SynQuacer/AcpiTables/Iort.aslc
create mode 100644 Silicon/Socionext/SynQuacer/AcpiTables/Madt.aslc
create mode 100644 Silicon/Socionext/SynQuacer/AcpiTables/Mcfg.aslc
create mode 100644 Silicon/Socionext/SynQuacer/AcpiTables/Spcr.aslc
create mode 100644 Silicon/Socionext/SynQuacer/Drivers/PlatformDxe/Emmc.asl
[edk2] [PATCH edk2-platforms 0/5] SynQuacer ACPI support
Posted by Ard Biesheuvel 6 years, 1 month ago
This implements ACPI support for the SynQuacer platforms.

Note that supporting ACPI on this SoC is non-trivial, due to the quirky 
DesignWare RCs and the pre-ITS that sits between the PCIe RCs and the GICv3. 
However, the most important issue has been addressed by modifying the static 
SMMU mapping that sits between the CPUs and the PCIe config space, working 
around the ghosting issue that occurs on these RCs, due the complete lack of 
type 0 config TLP filtering by the [non-existent] root port. (This was tested
using the 20180226-LB1.1-ACPI-ramfw.bin SCP firmware image, which is not [yet]
installed by default on DeveloperBox hardware)

That leaves the MSI issue, which is worked around by limiting MSI support to a 
single RC. In the presented configuration, this is RC #1, which connects to the 
x16 slot [and nothing else] on the DeveloperBox PCB. The onboard PCIe devices 
(XHCI + SATA) work without problem using wired interrupts only, and so RC #0 
has MSI support disabled. This means cards that require MSI support should
be inserted into the x16 slot, which is likely to be the preferred slot in
such cases anwyay (e.g., when using NVME or high end networking plugin cards)

Patch #1 fixes a minor issue in the slot-to-BDF mapping.

Patch #2 modifies the static PCIe window configuration so it can be described
using ACPI as well as DT.

Patch #3 introduces the static ACPI tables that describe the fixed platform
devices and peripherals to the OS.

Patch #4 adds a menu option to the platform driver to make ACPI vs DT user
selectable.

Patch #5 adds support for describing the eMMC controller using a SSDT table
which is only installed if eMMC support is enabled.

Note that driver support for the eMMC and network controller only landed in
v4.15, but when using a SATA driver and a plugin network card that does have
driver support, these patches should allow the SynQuacer based platforms to
boot stock Debian Stretch/Fedora/Centos etc installers.

Ard Biesheuvel (5):
  Platform/Socionext/DeveloperBox: fix PCIe slot to B/D/F mapping
  Silicon/SynQuacer: tweak PCI I/O windows for ACPI/Linux support
  Silicon/SynQuacer: add ACPI drivers and tables
  Silicon/SynQuacer/PlatformDxe: add option to enable ACPI mode
  Silicon/SynQuacer/PlatformDxe: add ACPI description of eMMC

 Platform/Socionext/DeveloperBox/DeveloperBox.dsc                                                     |   2 +
 Platform/Socionext/DeveloperBox/DeveloperBox.fdf                                                     |  14 ++
 Platform/Socionext/SynQuacerEvalBoard/SynQuacerEvalBoard.dsc                                         |   2 +
 Platform/Socionext/SynQuacerEvalBoard/SynQuacerEvalBoard.fdf                                         |  14 ++
 Silicon/Socionext/SynQuacer/Acpi.dsc.inc                                                             |  48 ++++
 Silicon/Socionext/SynQuacer/AcpiTables/AcpiSsdtRootPci.asl                                           | 262 ++++++++++++++++++++
 Silicon/Socionext/SynQuacer/AcpiTables/AcpiTables.h                                                  |  73 ++++++
 Silicon/Socionext/SynQuacer/AcpiTables/AcpiTables.inf                                                |  64 +++++
 Silicon/Socionext/SynQuacer/AcpiTables/Dsdt.asl                                                      | 187 ++++++++++++++
 Silicon/Socionext/SynQuacer/AcpiTables/Fadt.aslc                                                     |  91 +++++++
 Silicon/Socionext/SynQuacer/AcpiTables/Gtdt.aslc                                                     |  93 +++++++
 Silicon/Socionext/SynQuacer/AcpiTables/Iort.aslc                                                     | 101 ++++++++
 Silicon/Socionext/SynQuacer/AcpiTables/Madt.aslc                                                     | 182 ++++++++++++++
 Silicon/Socionext/SynQuacer/AcpiTables/Mcfg.aslc                                                     |  63 +++++
 Silicon/Socionext/SynQuacer/AcpiTables/Spcr.aslc                                                     | 128 ++++++++++
 Silicon/Socionext/SynQuacer/DeviceTree/SynQuacer.dtsi                                                |   2 +-
 Silicon/Socionext/SynQuacer/Drivers/PlatformDxe/Emmc.asl                                             |  41 +++
 Silicon/Socionext/SynQuacer/Drivers/PlatformDxe/Emmc.c                                               |  55 ++++
 Silicon/Socionext/SynQuacer/Drivers/PlatformDxe/PlatformDxe.c                                        |  32 ++-
 Silicon/Socionext/SynQuacer/Drivers/PlatformDxe/PlatformDxe.h                                        |   4 +
 Silicon/Socionext/SynQuacer/Drivers/PlatformDxe/PlatformDxe.inf                                      |   5 +
 Silicon/Socionext/SynQuacer/Drivers/PlatformDxe/PlatformDxeHii.uni                                   |   8 +-
 Silicon/Socionext/SynQuacer/Drivers/PlatformDxe/PlatformDxeHii.vfr                                   |  10 +-
 Silicon/Socionext/SynQuacer/Include/Platform/Pcie.h                                                  |  22 +-
 Silicon/Socionext/SynQuacer/Include/Platform/VarStore.h                                              |   8 +-
 Silicon/Socionext/SynQuacer/Library/SynQuacerPciHostBridgeLib/SynQuacerPciHostBridgeLibConstructor.c |   4 +-
 26 files changed, 1490 insertions(+), 25 deletions(-)
 create mode 100644 Silicon/Socionext/SynQuacer/Acpi.dsc.inc
 create mode 100644 Silicon/Socionext/SynQuacer/AcpiTables/AcpiSsdtRootPci.asl
 create mode 100644 Silicon/Socionext/SynQuacer/AcpiTables/AcpiTables.h
 create mode 100644 Silicon/Socionext/SynQuacer/AcpiTables/AcpiTables.inf
 create mode 100644 Silicon/Socionext/SynQuacer/AcpiTables/Dsdt.asl
 create mode 100644 Silicon/Socionext/SynQuacer/AcpiTables/Fadt.aslc
 create mode 100644 Silicon/Socionext/SynQuacer/AcpiTables/Gtdt.aslc
 create mode 100644 Silicon/Socionext/SynQuacer/AcpiTables/Iort.aslc
 create mode 100644 Silicon/Socionext/SynQuacer/AcpiTables/Madt.aslc
 create mode 100644 Silicon/Socionext/SynQuacer/AcpiTables/Mcfg.aslc
 create mode 100644 Silicon/Socionext/SynQuacer/AcpiTables/Spcr.aslc
 create mode 100644 Silicon/Socionext/SynQuacer/Drivers/PlatformDxe/Emmc.asl

-- 
2.11.0

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel