From patchwork Wed Apr 8 22:57:19 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 237456 List-Id: U-Boot discussion From: sjg at chromium.org (Simon Glass) Date: Wed, 8 Apr 2020 16:57:19 -0600 Subject: [PATCH v5 00/29] dm: Add programmatic generation of ACPI tables (part A) Message-ID: <20200408225749.171380-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 v5: - Tweak unused naming and comments - Capitalise ACPI_OPS_PTR since it includes a comma - Capitalise ACPI_OPS_PTR since it includes a comma - Update commit message to mention dropping the #ifdef CONFIG_X86 - Mess with the table ordering a little more - Add #ifndef CONFIG_SANDBOX to maintain bisectability without merging patches - Drop bisectability changes Changes in v4: - Fix indentation of unused - Calculate the padding - Put 'interrupts-extended' property on one line - Rename acpi-probed to linux,probed - Note that linux,probed is an out-of-tree feature - Move ACPI makefile line outside the ifdef CONFIG_SPL_BUILD - Add a comment about the MADT table version - Add SPCR - Update comment to include tables defined or reserved by ACPI - Drop ASL_REVISION - Separate out the log newline - Update comment in acpi_inc_align() to show the alignment - Put back cast on table_compute_checksum() - Rename list_fact() to list_fadt() - Add a comment to dump_hdr() Changes in v3: Drop acpi,name in example - Fix indenting error mentioned by Andy Shevchenko - Fix stray #endif - Drop 'Intel' from 'Intel ACPI' - Reword commit message to drop the bit about ACPI being complicated - Compute ACPI_NAME_MAX from ACPI_NAME_LEN - Rename acpi_return_name() to acpi_copy_name() - Use strncpy() instead of strcpy() in acpi_copy_name() - Split out hid-over-i2c into its own patch - Drop mention of PRIC - Rename acpi,desc to acpi,ddn - Correct description of acpi,probed - Drop hid-descr-addr - Just add the device.txt binding file in this patch - Change the example to ELAN - Add a pointer to information about acpi,compatible - Add new patch to move acpi_s3.h to include/acpi/ - Update commit message to say that we move most of its contents - Move acpi_table.h to include/acpi - Add forward declarations for the functions - Fix file comment for acpi_table.c - Fix a few typos - Make use of BIT() - Fix DMA_ typo - Add missing error check in acpi_create_dmar() - Drop duplicate assert - Add new patch to add hexdump.h to the unit test header - Rename acpi_align_large() to acpi_align64() - Fix 'RSDP' typo - Fix 'XDST' typo - Move acpi_align_large() out of dm_test_acpi_setup_base_tables() - Beef up the comment explaining how the unaligned address is used Changes in v2: - Don't bracket the definitions with DM_SPI - Add trailing commas to enum - 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() Simon Glass (29): 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 dts: Add a binding for hid-over-i2c acpi: Add a binding for ACPI settings in the device tree acpi: Add a simple sandbox test x86: Move acpi_s3.h to include/acpi/ 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 test: Add hexdump.h to the unit test header 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 arch/sandbox/dts/test.dts | 8 + arch/sandbox/include/asm/acpi_table.h | 9 + arch/sandbox/include/asm/global_data.h | 1 + arch/x86/cpu/apollolake/cpu_spl.c | 2 +- arch/x86/cpu/apollolake/fsp_s.c | 2 +- arch/x86/cpu/apollolake/pmc.c | 2 +- arch/x86/cpu/baytrail/acpi.c | 6 +- arch/x86/cpu/coreboot/timestamp.c | 4 +- arch/x86/cpu/cpu.c | 4 +- arch/x86/cpu/intel_common/p2sb.c | 33 +- arch/x86/cpu/quark/acpi.c | 2 +- arch/x86/cpu/tangier/acpi.c | 4 +- arch/x86/cpu/wakeup.S | 2 +- arch/x86/dts/chromebook_coral.dts | 2 +- arch/x86/include/asm/acpi_table.h | 381 +----------- .../include/asm/arch-apollolake/global_nvs.h | 36 ++ .../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 | 4 +- arch/x86/lib/acpi_table.c | 241 ++------ arch/x86/lib/coreboot_table.c | 2 +- arch/x86/lib/fsp/fsp_common.c | 2 +- arch/x86/lib/fsp1/fsp_common.c | 2 +- arch/x86/lib/fsp2/fsp_dram.c | 2 +- arch/x86/lib/tables.c | 2 +- arch/x86/lib/zimage.c | 2 +- cmd/Kconfig | 14 + cmd/Makefile | 1 + cmd/acpi.c | 186 ++++++ configs/tools-only_defconfig | 1 + 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 | 23 + drivers/core/Kconfig | 9 + drivers/core/Makefile | 1 + drivers/core/acpi.c | 95 +++ drivers/cpu/cpu_sandbox.c | 1 + drivers/pci/pci-uclass.c | 11 +- drivers/pci/pci_rom.c | 4 +- drivers/power/acpi_pmc/acpi-pmc-uclass.c | 2 +- drivers/sysreset/sysreset_x86.c | 2 +- drivers/tpm/cr50_i2c.c | 24 +- drivers/tpm/tpm-uclass.c | 13 +- include/{ => acpi}/acpi_s3.h | 0 include/acpi/acpi_table.h | 577 ++++++++++++++++++ include/cpu.h | 2 + include/dm/acpi.h | 114 ++++ include/dm/device.h | 5 + include/dm/uclass-id.h | 1 + include/log.h | 2 + include/spi.h | 33 + include/test/ut.h | 1 + lib/Makefile | 1 + lib/acpi/Makefile | 4 + lib/acpi/acpi_table.c | 259 ++++++++ lib/efi_loader/efi_acpi.c | 2 +- scripts/Makefile.lib | 4 +- test/dm/Makefile | 1 + test/dm/acpi.c | 317 ++++++++++ test/dm/cpu.c | 1 + 64 files changed, 1921 insertions(+), 638 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 rename include/{ => acpi}/acpi_s3.h (100%) create mode 100644 include/acpi/acpi_table.h create mode 100644 include/dm/acpi.h create mode 100644 lib/acpi/Makefile create mode 100644 lib/acpi/acpi_table.c create mode 100644 test/dm/acpi.c