All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 00/35] dm: Add programmatic generation of ACPI tables (part B)
@ 2020-07-07 19:11 Simon Glass
  2020-07-07 19:11 ` [PATCH v4 01/35] dm: core: Add an ACPI name for the root node Simon Glass
                   ` (35 more replies)
  0 siblings, 36 replies; 54+ messages in thread
From: Simon Glass @ 2020-07-07 19:11 UTC (permalink / raw)
  To: u-boot

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 v4:
- Add a comment about sandbox to dm_test_irq_get_acpi()
- Setup ctx->base as well as ctx->current in acpi_setup_base_tables()
- Add a comment about little-endian in acpigen_emit_dword()
- Add a #define for the context size in alloc_context()
- Rename the length-writing functions to indicate they are for large resources
- Use memset() to zero struct acpi_gpio in gpio_get_acpi()
- Move common code about the if...else in sb_gpio_get_acpi()
- Don't set zero fields in sb_gpio_get_acpi(), and add a comment about it
- Update acpi_device_write_interrupt_irq() to return IRQ pin number
- Use NULL instead of NUL and drop the 'NUL character' comment
- Drop comment about the type always being ACPI_GPIO_TYPE_IO
- Rename the length-writing functions to indicate they are for large resources
- Update functions to return a GPIO pin number
- Update functions to return GPIO/IRQ pin number
- Move SPI macros to next patch
- Rename the length-writing functions to indicate they are for large
- Update functions to return GPIO/IRQ pin number
- Move SPI macros to next patch
- Rename the length-writing functions to indicate they are for large resources
- Add a note about the hard-coded 3-byte length used
- Fix 'gas' typo
- Use 'null' instead of 'nul'
- Use 'writing' instead of emitting in test comment
- Use 'writing' instead of emitting in test comment
- Change 'nul' to 'null' in commit message and acpigen_write_string()
- Move emit->write comment changes to previous patches
- s/nul/null/ in the comment
- Drop embedded // comments in file comment
- Correct return value comment in acpi_dp_add_child()
- Rename acpi_dp_write_() to acpi_dp_write_internal() and make static
- Use a #define for the test context size
- Add a header file for test to allow sharing the context init function
- Rename and get_length() into a shared test file
- Add missing arg to comment for acpi_dp_write()
- Correct reference to device tree in the commit message
- Squash in comment change to an earlier patch
- Rename acpigen_write_method_()
- Use acpi_test_get_length() instead of get_length()
- Use acpi_test_get_length() instead of get_length()
- Update functions to return GPIO/IRQ pin number
- Use a separate variables for reading and writing DW0
- Correct bug in acpigen_set_gpio_val() by putting tx_state_val in LOCAL0
- Fix up the comment for acpigen_set_enable_tx_gpio()
- Explain access to DW0 register a bit better and provide a sample
- Expand the comments for acpigen_get_dw0_in_local5()
- Fix 'diabl' typo
- Use new shared acpi_test_alloc_context_size() in test
- Update functions to return GPIO/IRQ pin number
- Use a separate variables for reading and writing DW0
- Explain in sort_acpi_item_type() why ctx->current is not updated
- Explain why 'fill' is used for one method and 'inject' for another
- Mention that acpi_device_infer_name() only supports x86
- Add a comment about only supporting USB3.0

Changes in v3:
- s/NUL/NULL/ for the NUL character, since that is in more common use
- Fix 'an GPIO is found' typo
- Update comment in acpi_device_set_i2c() to talk about scope parameter
- Make acpi_device_write_spi() static
- Add an extra comment about scope to acpi_device_set_spi()
- Use BIT() in a few places
- Resist the temptation to go to >80 characters
- Add a reference to the ACPI spec
- Add a define for the 0x80 constant
- Move the function comments into this patch
- Fix 'easy of testing' typo
- Move two function comments into the previous patch
- Allow the name parameter to be NULL
- Add error checking to acpi_dp_add_integer_array()
- Fix 'acpi_device.v' typo
- Drop unused ACPI_CPU_STRING
- Use an enum for the GPIO priority
- Add error checking
- Fix incorrect function names and arguments in commments
- Add error checking for acpi_dp_add...() functions
- Fix function name in comment for acpigen_write_not()
- Use #defines for the mask values
- Fix 'THe' typo
- Rename MAX_ITEMS to MAX_ACPI_ITEMS
- Make find_item() static and rename to find_acpi_item()
- Rename build_type() and add a comment
Drop coreboot_acpi_ids enum
- Fix 'THe' typo
- Rename build_type() to sort_acpi_item_type()
- Refactor the code to remove the extra memcpy()
- Recalculate the DSDT checksum only once
- Add a comment as to why the checksum byte is set to 0
- Fix 'of' typo
- Update acpi_dump_items() to take an enum
- Update commit message and subject for clarity

Changes in v2:
- Update to add a new 'base' field to struct acpi_ctx
- Free the memory allocated to the table and context
- Fix memset of I2C descriptor
- Fix memset of SPI descriptor

Changes in v1:
- Capitalise ACPI_OPS_PTR
- Split into more patches for review
- Add tests
- Rebase on top of common.h series
- Fix 'the an' typo
- Move header definitions into this patch
- Update sandbox driver slightly for testing
- Switch parameter order of _acpi_fill_ssdt() and make it static
- Fix 'sentinal' and 'METHOD_FILL_SDDT' typos
- Correct the commit subject
- 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
- Update ACPI_DSTATUS enum
- Drop writing of coreboot tables
- Generalise the ACPI function recursion with acpi_recurse_method()
- Use acpi,ddn instead of acpi,desc
- Rename to acpi_device_infer_name()
- Update newly created sandbox tests

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 command to list/dump generated ACPI items

 arch/sandbox/dts/test.dts           |  14 +-
 arch/x86/lib/acpi_table.c           |  55 +-
 cmd/acpi.c                          |  15 +-
 doc/device-tree-bindings/chosen.txt |   9 +
 doc/device-tree-bindings/device.txt |  13 +
 drivers/core/acpi.c                 | 229 +++++++-
 drivers/core/root.c                 |  13 +
 drivers/gpio/gpio-uclass.c          |  22 +
 drivers/gpio/sandbox.c              |  77 +++
 drivers/i2c/sandbox_i2c.c           |   1 +
 drivers/misc/irq-uclass.c           |  18 +-
 drivers/misc/irq_sandbox.c          |  16 +
 drivers/rtc/sandbox_rtc.c           |  13 +
 drivers/spi/sandbox_spi.c           |   1 +
 include/acpi/acpi_device.h          | 405 +++++++++++++
 include/acpi/acpi_dp.h              | 287 +++++++++
 include/acpi/acpigen.h              | 402 +++++++++++++
 include/asm-generic/gpio.h          |  27 +
 include/dm/acpi.h                   |  80 ++-
 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              | 823 ++++++++++++++++++++++++++
 lib/acpi/acpi_dp.c                  | 402 +++++++++++++
 lib/acpi/acpi_table.c               |   1 +
 lib/acpi/acpigen.c                  | 482 +++++++++++++++
 test/dm/Makefile                    |   2 +
 test/dm/acpi.c                      | 277 ++++++++-
 test/dm/acpi.h                      |  29 +
 test/dm/acpi_dp.c                   | 492 ++++++++++++++++
 test/dm/acpigen.c                   | 876 ++++++++++++++++++++++++++++
 test/dm/gpio.c                      |  62 ++
 test/dm/irq.c                       |  23 +
 test/dm/pci.c                       |  14 +
 36 files changed, 5215 insertions(+), 34 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.h
 create mode 100644 test/dm/acpi_dp.c
 create mode 100644 test/dm/acpigen.c

-- 
2.27.0.383.g050319c2ae-goog

^ permalink raw reply	[flat|nested] 54+ messages in thread

end of thread, other threads:[~2020-08-29 21:20 UTC | newest]

Thread overview: 54+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-07 19:11 [PATCH v4 00/35] dm: Add programmatic generation of ACPI tables (part B) Simon Glass
2020-07-07 19:11 ` [PATCH v4 01/35] dm: core: Add an ACPI name for the root node Simon Glass
2020-07-07 19:11 ` [PATCH v4 02/35] acpi: Add a function to get a device path and scope Simon Glass
2020-07-07 19:11 ` [PATCH v4 03/35] acpi: Add a way to check device status Simon Glass
2020-07-07 19:11 ` [PATCH v4 04/35] irq: Add a method to convert an interrupt to ACPI Simon Glass
2020-07-07 19:11 ` [PATCH v4 05/35] acpi: Support generation of ACPI code Simon Glass
2020-07-13  2:38   ` Bin Meng
2020-07-07 19:11 ` [PATCH v4 06/35] acpi: Support generation of interrupt descriptor Simon Glass
2020-07-13  2:41   ` Bin Meng
2020-07-07 19:11 ` [PATCH v4 07/35] gpio: Add a method to convert a GPIO to ACPI Simon Glass
2020-07-13  2:44   ` Bin Meng
2020-07-07 19:11 ` [PATCH v4 08/35] acpi: Support string output Simon Glass
2020-07-07 19:11 ` [PATCH v4 09/35] acpi: Support generation of GPIO descriptor Simon Glass
2020-07-13  2:47   ` Bin Meng
2020-07-13  4:22     ` Bin Meng
2020-07-07 19:11 ` [PATCH v4 10/35] acpi: Support generation of a GPIO/irq for a device Simon Glass
2020-07-07 19:11 ` [PATCH v4 11/35] acpi: Support generation of I2C descriptor Simon Glass
2020-07-07 19:11 ` [PATCH v4 12/35] acpi: Support generation of SPI descriptor Simon Glass
2020-07-13  4:22   ` Bin Meng
2020-07-13  5:48     ` Bin Meng
2020-08-29 21:20       ` Simon Glass
2020-07-07 19:11 ` [PATCH v4 13/35] acpigen: Support writing a length Simon Glass
2020-07-13  2:53   ` Bin Meng
2020-07-07 19:11 ` [PATCH v4 14/35] acpigen: Support writing a package Simon Glass
2020-07-07 19:11 ` [PATCH v4 15/35] acpi: Support writing an integer Simon Glass
2020-07-07 19:11 ` [PATCH v4 16/35] acpi: Support writing a string Simon Glass
2020-07-07 19:11 ` [PATCH v4 17/35] acpi: Support writing a name Simon Glass
2020-07-07 19:11 ` [PATCH v4 18/35] acpi: Support writing a UUID Simon Glass
2020-07-07 19:11 ` [PATCH v4 19/35] acpi: Support writing Device Properties objects via _DSD Simon Glass
2020-07-13  2:58   ` Bin Meng
2020-07-07 19:11 ` [PATCH v4 20/35] acpi: Support writing a GPIO Simon Glass
2020-07-07 19:11 ` [PATCH v4 21/35] acpi: Support copying properties from device tree to ACPI Simon Glass
2020-07-07 19:11 ` [PATCH v4 22/35] acpi: Add support for various misc ACPI opcodes Simon Glass
2020-07-07 19:12 ` [PATCH v4 23/35] acpi: Add support for writing a Power Resource Simon Glass
2020-07-07 19:12 ` [PATCH v4 24/35] acpi: Add support for writing a GPIO power sequence Simon Glass
2020-07-13  3:09   ` Bin Meng
2020-07-07 19:12 ` [PATCH v4 25/35] acpi: Add support for a generic " Simon Glass
2020-07-13  3:10   ` Bin Meng
2020-07-07 19:12 ` [PATCH v4 26/35] acpi: Add support for SSDT generation Simon Glass
2020-07-07 19:12 ` [PATCH v4 27/35] x86: acpi: Move MADT down a bit Simon Glass
2020-07-07 19:12 ` [PATCH v4 28/35] acpi: Record the items added to SSDT Simon Glass
2020-07-07 19:12 ` [PATCH v4 29/35] acpi: Support ordering SSDT data by device Simon Glass
2020-07-13  3:15   ` Bin Meng
2020-07-13  5:15   ` Bin Meng
2020-07-07 19:12 ` [PATCH v4 30/35] x86: Allow devices to write an SSDT Simon Glass
2020-07-07 19:12 ` [PATCH v4 31/35] acpi: Add support for DSDT generation Simon Glass
2020-07-13  3:17   ` Bin Meng
2020-07-13  4:22     ` Bin Meng
2020-07-07 19:12 ` [PATCH v4 32/35] x86: Allow devices to write to DSDT Simon Glass
2020-07-07 19:12 ` [PATCH v4 33/35] pci: Avoid a crash in device_is_on_pci_bus() Simon Glass
2020-07-07 19:12 ` [PATCH v4 34/35] dm: acpi: Enhance acpi_get_name() Simon Glass
2020-07-13  3:18   ` Bin Meng
2020-07-07 19:12 ` [PATCH v4 35/35] acpi: Add an acpi command to list/dump generated ACPI items Simon Glass
2020-07-13  4:25 ` [PATCH v4 00/35] dm: Add programmatic generation of ACPI tables (part B) Bin Meng

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.