This is split from the original series in an attempt to get things applied
in chunks.
This part includes:
- writing basic ACPI code for integers, strings, names, packages
- writing descriptors for GPIO, I2C, interrupts, SPI
- writing code to enable/disable ACPI peripherals via GPIOs
- writing SSDT and DSDT tables
- additional ways to determine ACPI device names
Much of this code is taken from coreboot and I have tried to avoid
changing the original code for no reason. Changes include:
- splitting the acpi_dp functions into their own file
- adding tests
- adding (lots of) comments
- using a context pointer instead of global variables
- tidying up some code where couldn't resist (e.g. acpigen_emit_namestring())
Changes in v8:
- Capitalise ACPI_OPS_PTR
- Split into more patches for review
- Add tests
- Move header definitions into this patch
- Update sandbox driver slightly for testing
- Update ACPI_DSTATUS enum
- Rename to acpi_device_infer_name()
- Update newly created sandbox tests
Changes in v3:
- Fix 'the an' typo
- Fix 'sentinal' and 'METHOD_FILL_SDDT' typos
- Correct the commit subject
- Use acpi,ddn instead of acpi,desc
Changes in v2:
- 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()
- Use OEM_TABLE_ID instead of ACPI_TABLE_CREATOR
- Generalise the ACPI function recursion with acpi_recurse_method()
Simon Glass (35):
dm: core: Add an ACPI name for the root node
acpi: Add a function to get a device path and scope
acpi: Add a way to check device status
irq: Add a method to convert an interrupt to ACPI
acpi: Support generation of ACPI code
acpi: Support generation of interrupt descriptor
gpio: Add a method to convert a GPIO to ACPI
acpi: Support string output
acpi: Support generation of GPIO descriptor
acpi: Support generation of a GPIO/irq for a device
acpi: Support generation of I2C descriptor
acpi: Support generation of SPI descriptor
acpigen: Support writing a length
acpigen: Support writing a package
acpi: Support writing an integer
acpi: Support writing a string
acpi: Support writing a name
acpi: Support writing a UUID
acpi: Support writing Device Properties objects via _DSD
acpi: Support writing a GPIO
acpi: Support copying properties from device tree to ACPI
acpi: Add support for various misc ACPI opcodes
acpi: Add support for writing a Power Resource
acpi: Add support for writing a GPIO power sequence
acpi: Add support for a generic power sequence
acpi: Add support for SSDT generation
x86: acpi: Move MADT down 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
pci: Avoid a crash in device_is_on_pci_bus()
dm: acpi: Enhance acpi_get_name()
acpi: Add an acpi split command
arch/sandbox/dts/test.dts | 14 +-
arch/x86/lib/acpi_table.c | 75 ++-
cmd/acpi.c | 15 +-
doc/device-tree-bindings/chosen.txt | 9 +
doc/device-tree-bindings/device.txt | 13 +
drivers/core/acpi.c | 207 ++++++-
drivers/core/root.c | 13 +
drivers/gpio/gpio-uclass.c | 21 +
drivers/gpio/sandbox.c | 78 +++
drivers/i2c/sandbox_i2c.c | 1 +
drivers/misc/irq-uclass.c | 18 +-
drivers/misc/irq_sandbox.c | 16 +
drivers/rtc/sandbox_rtc.c | 11 +
drivers/spi/sandbox_spi.c | 1 +
include/acpi/acpi_device.h | 400 +++++++++++++
include/acpi/acpi_dp.h | 283 +++++++++
include/acpi/acpi_table.h | 6 +
include/acpi/acpigen.h | 347 +++++++++++
include/asm-generic/gpio.h | 27 +
include/dm/acpi.h | 63 ++
include/dm/device.h | 2 +-
include/irq.h | 43 ++
include/spi.h | 4 +-
include/test/ut.h | 17 +
lib/acpi/Makefile | 3 +
lib/acpi/acpi_device.c | 808 ++++++++++++++++++++++++++
lib/acpi/acpi_dp.c | 395 +++++++++++++
lib/acpi/acpigen.c | 475 +++++++++++++++
test/dm/Makefile | 2 +
test/dm/acpi.c | 277 ++++++++-
test/dm/acpi_dp.c | 510 ++++++++++++++++
test/dm/acpigen.c | 861 ++++++++++++++++++++++++++++
test/dm/gpio.c | 62 ++
test/dm/irq.c | 23 +
test/dm/pci.c | 14 +
35 files changed, 5081 insertions(+), 33 deletions(-)
create mode 100644 include/acpi/acpi_device.h
create mode 100644 include/acpi/acpi_dp.h
create mode 100644 include/acpi/acpigen.h
create mode 100644 lib/acpi/acpi_device.c
create mode 100644 lib/acpi/acpi_dp.c
create mode 100644 lib/acpi/acpigen.c
create mode 100644 test/dm/acpi_dp.c
create mode 100644 test/dm/acpigen.c