From patchwork Mon Mar 9 03:44:24 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 243374 List-Id: U-Boot discussion From: sjg at chromium.org (Simon Glass) Date: Sun, 8 Mar 2020 21:44:24 -0600 Subject: [PATCH v2 00/39] dm: Add programmatic generation of ACPI tables (part A) Message-ID: <20200309034504.149659-1-sjg@chromium.org> This is split from the original series in an attempt to get things applied in chunks. The first 20 or so patches here have been reviewed and the changes here incorporate those comments. Changes in v2: - Don't bracket the definitions with DM_SPI - Drop the other comment change since it is already applied - Drop the Chrome OS pieces - Rename the 'coreboot' console to 'U-Boot' - Move LOGC_ACPI definition to this patch - Fix definition of HID - Infer hid-over-i2c CID value - Add the hid-over-i2c binding document - Add in the acpi_table.h header file to this patch - Move the sandbox acpi_table.h header file to an earlier patch - Use #defines for MADT and MCFG version numbers - Drop two unnecessary __packed - Move __packed to after struct - Drop definition of ACPI_TABLE_CREATOR - Make _acpi_write_dev_tables() static and switch argument order - Generalise the ACPI function recursion with acpi_recurse_method() - Drop CID value from i2c struct - Switch parameter order of _acpi_fill_ssdt() and make it static - Generalise the ACPI function recursion with acpi_recurse_method() - Generalise the ACPI function recursion with acpi_recurse_method() - Move ACPI_TABLE_CREATOR to here - Generalise the ACPI function recursion with acpi_recurse_method() Simon Glass (39): cpu: Support querying the address width spi: Add SPI mode enums tpm: cr50: Release locality on exit tpm: cr50: Add a comment for cr50_priv tpm: cr50: Use the correct GPIO binding tpm: Don't cleanup unless an error happens dm: pci: Allow disabling auto-config for a device x86: Correct wording of coreboot source code x86: apl: Move p2sb ofdata reading to the correct method pci: Adjust dm_pci_read_bar32() to return errors correctly x86: apl: Add Global NVS table header dm: core: Add basic ACPI support acpi: Add a binding for ACPI settings in the device tree acpi: Add a simple sandbox test x86: Move acpi_table header to main include/ directory acpi: Add an __ACPI__ preprocessor symbol acpi: Add a central location for table version numbers acpi: Add support for DMAR acpi: Move acpi_fill_header() to generic code acpi: Add a method to write tables for a device acpi: Convert part of acpi_table to use acpi_ctx x86: Allow devices to write ACPI tables acpi: Drop code for missing XSDT from acpi_write_rsdp() acpi: Move acpi_add_table() to generic code acpi: Put table-setup code in its own function acpi: Move the xsdt pointer to acpi_ctx acpi: Add an acpi command acpi: Add some tables required by the generation code acpi: Add generation code for devices acpi: Add functions to generate ACPI code gpio: Add a method to convert a GPIO to ACPI irq: Add a method to convert an interrupt to ACPI acpi: Add support for SSDT generation x86: acpi: Move MADT up a bit acpi: Record the items added to SSDT acpi: Support ordering SSDT data by device x86: Allow devices to write an SSDT acpi: Add support for DSDT generation x86: Allow devices to write to DSDT arch/sandbox/dts/test.dts | 13 + arch/sandbox/include/asm/acpi_table.h | 9 + arch/sandbox/include/asm/global_data.h | 1 + arch/x86/cpu/baytrail/acpi.c | 2 +- arch/x86/cpu/coreboot/timestamp.c | 4 +- arch/x86/cpu/cpu.c | 2 +- arch/x86/cpu/intel_common/p2sb.c | 35 +- arch/x86/cpu/quark/acpi.c | 2 +- arch/x86/cpu/tangier/acpi.c | 2 +- arch/x86/dts/chromebook_coral.dts | 2 +- arch/x86/include/asm/acpi_table.h | 376 ---- .../include/asm/arch-apollolake/global_nvs.h | 37 + .../x86/include/asm/arch-coreboot/timestamp.h | 4 +- arch/x86/include/asm/global_data.h | 1 + arch/x86/include/asm/intel_pinctrl_defs.h | 2 - arch/x86/lib/acpi.c | 2 +- arch/x86/lib/acpi_s3.c | 2 +- arch/x86/lib/acpi_table.c | 312 ++- arch/x86/lib/tables.c | 2 +- arch/x86/lib/zimage.c | 2 +- cmd/Kconfig | 14 + cmd/Makefile | 1 + cmd/acpi.c | 179 ++ doc/device-tree-bindings/chosen.txt | 9 + doc/device-tree-bindings/device.txt | 36 + .../gpio/intel,apl-gpio.txt | 2 +- .../input/hid-over-i2c.txt | 44 + .../interrupt-controller/intel,acpi-gpe.txt | 2 +- doc/device-tree-bindings/pci/x86-pci.txt | 24 + drivers/core/Kconfig | 9 + drivers/core/Makefile | 1 + drivers/core/acpi.c | 267 +++ drivers/cpu/cpu_sandbox.c | 1 + drivers/gpio/gpio-uclass.c | 21 + drivers/misc/irq-uclass.c | 18 +- drivers/pci/pci-uclass.c | 11 +- drivers/tpm/cr50_i2c.c | 24 +- drivers/tpm/tpm-uclass.c | 13 +- include/acpi_device.h | 744 ++++++++ include/acpi_table.h | 632 +++++++ include/acpigen.h | 482 +++++ include/asm-generic/gpio.h | 27 + include/cpu.h | 2 + include/dm/acpi.h | 167 ++ include/dm/device.h | 5 + include/dm/uclass-id.h | 1 + include/irq.h | 43 + include/log.h | 2 + include/spi.h | 33 + lib/Makefile | 1 + lib/acpi/Makefile | 6 + lib/acpi/acpi_device.c | 1204 ++++++++++++ lib/acpi/acpi_table.c | 259 +++ lib/acpi/acpigen.c | 1683 +++++++++++++++++ lib/efi_loader/efi_acpi.c | 2 +- scripts/Makefile.lib | 4 +- test/dm/Makefile | 1 + test/dm/acpi.c | 399 ++++ test/dm/cpu.c | 1 + 59 files changed, 6555 insertions(+), 631 deletions(-) create mode 100644 arch/sandbox/include/asm/acpi_table.h create mode 100644 arch/x86/include/asm/arch-apollolake/global_nvs.h create mode 100644 cmd/acpi.c create mode 100644 doc/device-tree-bindings/device.txt create mode 100644 doc/device-tree-bindings/input/hid-over-i2c.txt create mode 100644 drivers/core/acpi.c create mode 100644 include/acpi_device.h create mode 100644 include/acpi_table.h create mode 100644 include/acpigen.h create mode 100644 include/dm/acpi.h create mode 100644 lib/acpi/Makefile create mode 100644 lib/acpi/acpi_device.c create mode 100644 lib/acpi/acpi_table.c create mode 100644 lib/acpi/acpigen.c create mode 100644 test/dm/acpi.c