aboutsummaryrefslogtreecommitdiff
path: root/src/include/device/pnp.h
diff options
context:
space:
mode:
authorPatrick Rudolph <patrick.rudolph@9elements.com>2019-12-10 13:15:42 +0100
committerFelix Held <felix-coreboot@felixheld.de>2019-12-22 13:47:39 +0000
commit7db16ddc8879a5b5acb7681135c7d9439dd1bd99 (patch)
tree63dc4a817763731d34f5dbfe660322ca77bc8fa4 /src/include/device/pnp.h
parent0142d441c63a9bb1a7955ea0ba764a2ddbc38d48 (diff)
superio/common/conf_mode: Add op to write SSDT
Add functions to write ACPI SSDT code for entering and leaving the config mode. To be used by ACPI generators. Tested on Linux 5.2 using the Aspeed SSDT generator. Change-Id: I14b55b885f1c384536bafafed39ad399639868e4 Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/37639 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Felix Held <felix-coreboot@felixheld.de>
Diffstat (limited to 'src/include/device/pnp.h')
-rw-r--r--src/include/device/pnp.h23
1 files changed, 22 insertions, 1 deletions
diff --git a/src/include/device/pnp.h b/src/include/device/pnp.h
index d459fd2fd0..800bcc0557 100644
--- a/src/include/device/pnp.h
+++ b/src/include/device/pnp.h
@@ -67,13 +67,34 @@ struct resource *pnp_get_resource(struct device *dev, unsigned int index);
void pnp_enable_devices(struct device *dev, struct device_operations *ops,
unsigned int functions, struct pnp_info *info);
+
struct pnp_mode_ops {
void (*enter_conf_mode)(struct device *dev);
void (*exit_conf_mode)(struct device *dev);
+#if CONFIG(HAVE_ACPI_TABLES)
+ /*
+ * Generates ASL code to enter/exit config mode.
+ *
+ * @param idx The ACPI name of the SuperIO index port register. eg. 'INDX'.
+ * @param data The ACPI name of the SuperIO data port register. eg. 'DATA'.
+ */
+ void (*ssdt_enter_conf_mode)(struct device *dev, const char *idx, const char *data);
+ void (*ssdt_exit_conf_mode)(struct device *dev, const char *idx, const char *data);
+#endif
};
void pnp_enter_conf_mode(struct device *dev);
void pnp_exit_conf_mode(struct device *dev);
-
+#if CONFIG(HAVE_ACPI_TABLES)
+/*
+ * Generates ASL code to enter/exit config mode if supported.
+ * The calling code has to place this within an ASL MethodOP.
+ *
+ * @param idx The ACPI name of the SuperIO index port register. eg. 'INDX'.
+ * @param data The ACPI name of the SuperIO data port register. eg. 'DATA'.
+ */
+void pnp_ssdt_enter_conf_mode(struct device *dev, const char *idx, const char *data);
+void pnp_ssdt_exit_conf_mode(struct device *dev, const char *idx, const char *data);
+#endif
/* PNP indexed I/O operations */
/*