From: Al Stone ahs3@redhat.com
This patch set is in the acpi-topic-seattle branch of acpi.git.
The basic idea is that these patches are an example of how to implement ACPI for the AMD Seattle platform. Many of them have been borrowed from the Fedora arm64 kernel tree which is at:
git://git.fedorahosted.org/git/kernel-arm64.git
Additional patches come from Linaro and LKMLA. With the exception of the PCI patches, or others mentioned below, the intent is that the original authors of these patches will submit them upstream. As always, they rely on the ACPI core patches already being in place.
Patches 0001-006 are some cleanup and nice-to-have patches that let ACPI, UEFI and the Seattle platform work better together.
Patch 0007 is Graeme's SBSA console patch, which ultimately needs to be replaced with a proper pl011 console driver (still being worked on by ARM, I believe).
Patch 0008 introduces ACPI support for the Seattle's AHCI code.
Patch 0009 fixes a compilation error in the PNP code.
Patch 0010 introduces some skeleton PCI functions to be replaced later.
Patch 0011 adds support for the secondary CPU parking protocol.
Patches 0011 and 0012 add general support for the AMD XGBE 10Gbe network interface.
Patches 0014-0025 are from the device properties previously posted on the ACPI mailing list; these may need updates if the final versions put into the Linux tree differ. NB: 0017-0025 are not strictly required for Seattle, but have been included so that the entire patch set posted on LKMLA is included.
Patch 0026 adds ACPI support to the AMD XGBE 10Gbe interface. Yes, just one patch.
Patch 0027 adds code to make it easy to set up DMA coherency on a device using ACPI.
Patch 0028 may or may not be useful for upstream; it corrects a problem with DMA operations when ACPI and PCI are being used but there may be better ways to handle it.
Patch 0029 removes at DT dependency in the arch timer that can cause a hang when using ACPI.
Patches 0030-0034 do basic PCI setup based on the contents of the MCFG table in ACPI (for PCIe); these are also a first generation and definitely need refinement and refactoring -- in some cases, there is code duplicated from x86 or ia64, for example.
Patches 0035-0037 fix compiler warnings that annoyed me.
Patch 0038 allows one to skip adding a console= parameter on the command line.
These patches were tested on an AMD Seattle platform, using the 71C version of their firmware (future versions will have needed fixes for PCI windows and some other odds and ends). The kernel command line was:
BOOT_IMAGE=/Image.acpi.git root=UUID=d5f87d27-cd7d-4ac5-9e16-dfa850ae32ad \ ro console=ttySBSA0,115200 earlycon=sbsauart,0xe1010000 vconsole.keymap=us \ crashkernel=auto vconsole.font=latarcyrheb-sun16 acpi=force \ acpi_force_table_verification uefi_debug
The console, SATA, and NIC all work as expected. PCIe works (PCI will need a new DSDT) with a SATA card I had laying around. It is known to work with a couple of other PCIe devices, but that's all I tried.
Things to do: -- Get PCI re-done; there are way too many x86-isms in the code, and some serious refactoring and cleanup is needed; the ia64 seems to have taken some good steps in this direction.
-- MSI(-X) support: a DT version has been posted, and some ACPI work is under way.
-- KVM support: ACPI support patches are available, but were not included here since I have not had time to test them.
-- Subject the code to the full FWTS; this is pending available LAVA machines and some patches to FWTS, but the CI loop is set up.
-- Plus whatever ACPI spec changes or additions arise....
Tested-by: Al Stone al.stone@linaro.org
Aaron Lu (2): input: gpio_keys_polled - Add support for GPIO descriptors input: gpio_keys_polled - Make use of device property API
Al Stone (5): Fix arm64 compilation error in PNP code arm64/pci/acpi: initial support for ACPI probing of PCI drivers/base: correct function prototype to remove compiler warning drivers/of: fix new device property function that could return a bad value AMD / XGBE : remove duplicate function definition
Graeme Gregory (2): acpi: add arm to the platforms that use ioremap tty: SBSA compatible UART
Hanjun Guo (1): ARM64 / ACPI: Introduce some PCI functions when PCI is enabled
Mark Salter (11): arm64: use EFI as last resort for reboot and poweroff acpi: fix acpi_os_ioremap for arm64 arm64: add parking protocol support acpi: add utility to test for device dma coherency arm64: [NOT FOR UPSTREAM] fix dma_ops for ACPI and PCI devices clocksource: arm_arch_timer: fix system hang arm64/pci: replace weak raw pci ops with settable ops arm64/acpi/pci: add support for parsing MCFG table arm64/acpi/pci: provide hook for MCFG fixups iommu/arm-smmu: fix NULL dereference with ACPI PCI devices arm64: avoid need for console= to enable serial console
Mika Westerberg (7): ACPI: Add support for device specific properties ACPI: Allow drivers to match using Device Tree compatible property misc: at25: Make use of device property API gpio / ACPI: Add support for _DSD device properties gpio: sch: Consolidate core and resume banks leds: leds-gpio: Add support for GPIO descriptors gpio: Support for unified device properties interface
Rafael J. Wysocki (3): Driver core: Unified device properties interface for platform firmware Driver core: Unified interface for firmware node properties leds: leds-gpio: Make use of device property API
Russell King (2): ARM: Blacklist GCC 4.8.0 to GCC 4.8.2 - PR58854 ARM: fix some printk formats
Suravee Suthikulpanit (1): ata: ahci_platform: Add ACPI support for AMD Seattle SATA controller
Tom Lendacky (3): drivers: net: AMD Seattle XGBE 10GbE support for A0 silicon drivers: net: AMD Seattle XGBE PHY support for A0 silicon amd-xgbe: AMD 10GbE driver APCI support for A0
Will Deacon (1): zap_pte_range: update addr when forcing flush after TLB batching faiure
Documentation/acpi/gpio-properties.txt | 52 ++ arch/arm/kernel/asm-offsets.c | 12 +- arch/arm/mm/init.c | 8 +- arch/arm64/Kconfig | 6 + arch/arm64/Makefile | 1 + arch/arm64/include/asm/acpi.h | 3 + arch/arm64/include/asm/pci.h | 57 +++ arch/arm64/include/asm/smp.h | 5 + arch/arm64/kernel/Makefile | 3 +- arch/arm64/kernel/acpi.c | 54 +- arch/arm64/kernel/cpu_ops.c | 4 + arch/arm64/kernel/efi.c | 11 + arch/arm64/kernel/pci.c | 108 ++-- arch/arm64/kernel/process.c | 6 + arch/arm64/kernel/setup.c | 22 + arch/arm64/kernel/smp_parking_protocol.c | 107 ++++ arch/arm64/mm/dma-mapping.c | 103 ++++ arch/arm64/pci/Makefile | 2 + arch/arm64/pci/mmconfig.c | 431 ++++++++++++++++ arch/arm64/pci/pci.c | 375 ++++++++++++++ drivers/acpi/Makefile | 1 + drivers/acpi/internal.h | 6 + drivers/acpi/osl.c | 6 +- drivers/acpi/property.c | 567 +++++++++++++++++++++ drivers/acpi/scan.c | 120 ++++- drivers/acpi/utils.c | 26 + drivers/ata/Kconfig | 2 +- drivers/ata/ahci_platform.c | 13 + drivers/base/Makefile | 2 +- drivers/base/dma-coherent.c | 6 +- drivers/base/property.c | 625 +++++++++++++++++++++++ drivers/clocksource/arm_arch_timer.c | 11 +- drivers/gpio/devres.c | 36 ++ drivers/gpio/gpio-sch.c | 293 +++++------ drivers/gpio/gpiolib-acpi.c | 78 ++- drivers/gpio/gpiolib.c | 86 +++- drivers/gpio/gpiolib.h | 7 +- drivers/input/keyboard/gpio_keys_polled.c | 112 ++--- drivers/iommu/arm-smmu.c | 8 +- drivers/irqchip/irq-gic-v3.c | 10 + drivers/irqchip/irq-gic.c | 10 + drivers/leds/leds-gpio.c | 186 +++---- drivers/misc/eeprom/at25.c | 34 +- drivers/net/ethernet/amd/Kconfig | 2 +- drivers/net/ethernet/amd/xgbe/xgbe-dev.c | 16 +- drivers/net/ethernet/amd/xgbe/xgbe-drv.c | 3 + drivers/net/ethernet/amd/xgbe/xgbe-main.c | 289 ++++++++--- drivers/net/ethernet/amd/xgbe/xgbe-mdio.c | 20 +- drivers/net/ethernet/amd/xgbe/xgbe-ptp.c | 4 +- drivers/net/ethernet/amd/xgbe/xgbe.h | 13 + drivers/net/phy/Kconfig | 2 +- drivers/net/phy/amd-xgbe-phy.c | 791 ++++++++++++++++-------------- drivers/of/base.c | 103 +++- drivers/pnp/resource.c | 2 + drivers/tty/Kconfig | 6 + drivers/tty/Makefile | 1 + drivers/tty/sbsauart.c | 355 ++++++++++++++ include/acpi/acpi_bus.h | 27 + include/acpi/acpi_io.h | 6 + include/asm-generic/vmlinux.lds.h | 7 + include/linux/acpi.h | 106 +++- include/linux/gpio/consumer.h | 8 + include/linux/gpio_keys.h | 3 + include/linux/irqchip/arm-gic.h | 2 + include/linux/leds.h | 1 + include/linux/of.h | 44 ++ include/linux/property.h | 107 ++++ mm/memory.c | 1 + 68 files changed, 4611 insertions(+), 923 deletions(-) create mode 100644 Documentation/acpi/gpio-properties.txt create mode 100644 arch/arm64/kernel/smp_parking_protocol.c create mode 100644 arch/arm64/pci/Makefile create mode 100644 arch/arm64/pci/mmconfig.c create mode 100644 arch/arm64/pci/pci.c create mode 100644 drivers/acpi/property.c create mode 100644 drivers/base/property.c create mode 100644 drivers/tty/sbsauart.c create mode 100644 include/linux/property.h