
Hi Simon,
-----"Simon Glass" sjg@chromium.org schrieb: -----
Betreff: [PATCH v2 19/35] acpi: Support writing Device Properties objects via _DSD
More complex device properties can be provided to drivers via a device-specific data (_DSD) object.
To create this we need to build it up in a separate data structure and then generate the ACPI code, due to its recursive nature.
Add an implementation of this.
Signed-off-by: Simon Glass sjg@chromium.org
Changes in v2: None Changes in v1: None
include/acpi/acpi_dp.h | 215 ++++++++++++++++++++++ include/acpi/acpigen.h | 1 + lib/acpi/Makefile | 1 + lib/acpi/acpi_dp.c | 324 +++++++++++++++++++++++++++++++++ lib/acpi/acpigen.c | 3 + test/dm/Makefile | 1 + test/dm/acpi_dp.c | 405 +++++++++++++++++++++++++++++++++++++++++ 7 files changed, 950 insertions(+) create mode 100644 include/acpi/acpi_dp.h create mode 100644 lib/acpi/acpi_dp.c create mode 100644 test/dm/acpi_dp.c
[snip]
diff --git a/lib/acpi/acpi_dp.c b/lib/acpi/acpi_dp.c new file mode 100644 index 0000000000..479cb6743c --- /dev/null +++ b/lib/acpi/acpi_dp.c @@ -0,0 +1,324 @@ +// SPDX-License-Identifier: GPL-2.0 +/*
- Generation of tables for particular device types
- Copyright 2019 Google LLC
- Mostly taken from coreboot file acpi_device.v
Typo: acpi_device.c
- */
+#include <common.h> +#include <dm.h> +#include <log.h> +#include <malloc.h> +#include <uuid.h> +#include <acpi/acpigen.h> +#include <acpi/acpi_dp.h> +#include <dm/acpi.h>
+static void acpi_dp_write_array(struct acpi_ctx *ctx,
const struct acpi_dp *array);
[snip]
diff --git a/lib/acpi/acpigen.c b/lib/acpi/acpigen.c index f781ad4d87..7321a98c0f 100644 --- a/lib/acpi/acpigen.c +++ b/lib/acpi/acpigen.c @@ -15,6 +15,9 @@ #include <acpi/acpigen.h> #include <dm/acpi.h>
+/* CPU path format */ +#define ACPI_CPU_STRING "\_PR.CP%02d"
Nit: This change seems unrelated to the rest of the patch, is it here on purpose?
u8 *acpigen_get_current(struct acpi_ctx *ctx) { return ctx->current;
[snip]
Reviewed-by: Wolfgang Wallner wolfgang.wallner@br-automation.com