summaryrefslogtreecommitdiff
path: root/src/drivers/spi/acpi
diff options
context:
space:
mode:
Diffstat (limited to 'src/drivers/spi/acpi')
-rw-r--r--src/drivers/spi/acpi/acpi.c5
-rw-r--r--src/drivers/spi/acpi/chip.h5
2 files changed, 9 insertions, 1 deletions
diff --git a/src/drivers/spi/acpi/acpi.c b/src/drivers/spi/acpi/acpi.c
index 6d92776683..687dd52d56 100644
--- a/src/drivers/spi/acpi/acpi.c
+++ b/src/drivers/spi/acpi/acpi.c
@@ -131,7 +131,7 @@ static void spi_acpi_fill_ssdt_generator(const struct device *dev)
/* Write device properties if needed */
if (config->compat_string || irq_gpio_index >= 0 ||
- reset_gpio_index >= 0 || enable_gpio_index >= 0) {
+ reset_gpio_index >= 0 || enable_gpio_index >= 0 || config->property_count) {
struct acpi_dp *dsd = acpi_dp_new_table("_DSD");
if (config->compat_string)
acpi_dp_add_string(dsd, "compatible",
@@ -148,6 +148,9 @@ static void spi_acpi_fill_ssdt_generator(const struct device *dev)
acpi_dp_add_gpio(dsd, "enable-gpios", path,
enable_gpio_index, 0,
config->enable_gpio.active_low);
+ /* Add generic property list */
+ acpi_dp_add_property_list(dsd, config->property_list,
+ config->property_count);
acpi_dp_write(dsd);
}
diff --git a/src/drivers/spi/acpi/chip.h b/src/drivers/spi/acpi/chip.h
index 9bee847f2b..b7b39f7c3a 100644
--- a/src/drivers/spi/acpi/chip.h
+++ b/src/drivers/spi/acpi/chip.h
@@ -5,6 +5,8 @@
#include <acpi/acpi_device.h>
+#define MAX_GENERIC_PROPERTY_LIST 10
+
struct drivers_spi_acpi_config {
const char *hid; /* ACPI _HID (required) */
const char *cid; /* ACPI _CID */
@@ -42,6 +44,9 @@ struct drivers_spi_acpi_config {
unsigned int stop_delay_ms;
/* Delay to be inserted after enabling stop. */
unsigned int stop_off_delay_ms;
+ /* Generic properties for exporting device-specific data to the OS */
+ struct acpi_dp property_list[MAX_GENERIC_PROPERTY_LIST];
+ unsigned int property_count;
};
#endif /* __SPI_ACPI_CHIP_H__ */