summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPrashant Malani <pmalani@chromium.org>2022-04-21 18:01:40 +0000
committerFelix Held <felix-coreboot@felixheld.de>2022-05-04 13:15:30 +0000
commitda6e9a047241fb414c24c3e7f5829d62df3c114c (patch)
tree7237f19b2a3b2f4aedcb67cf92b4232da9f91b4f /src
parent688105bc60e0a352b2f89e51bc34fd9b04d495c7 (diff)
ec/google/chromeec: Add retimer handle to Type C conn
Some platforms have retimers which can be configured via the EC. Add a handle to these retimer devices to the Type C connector device, using devicetree references. BUG=b:208883648 TEST=Verify disassembled SSDT on brya. BRANCH=None Signed-off-by: Prashant Malani <pmalani@chromium.org> Change-Id: Ic0480b08c6d6a7562cca57192e49b8ea2a33b51e Reviewed-on: https://review.coreboot.org/c/coreboot/+/63793 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Tim Wawrzynczak <twawrzynczak@chromium.org>
Diffstat (limited to 'src')
-rw-r--r--src/acpi/acpigen_usb.c1
-rw-r--r--src/ec/google/chromeec/chip.h1
-rw-r--r--src/ec/google/chromeec/ec_acpi.c1
-rw-r--r--src/include/acpi/acpigen_usb.h3
4 files changed, 6 insertions, 0 deletions
diff --git a/src/acpi/acpigen_usb.c b/src/acpi/acpigen_usb.c
index e32dfc46b6..e71e6dabb5 100644
--- a/src/acpi/acpigen_usb.c
+++ b/src/acpi/acpigen_usb.c
@@ -106,6 +106,7 @@ static void add_device_references(struct acpi_dp *dsd,
add_device_ref(dsd, "orientation-switch", config->orientation_switch);
add_device_ref(dsd, "usb-role-switch", config->usb_role_switch);
add_device_ref(dsd, "mode-switch", config->mode_switch);
+ add_device_ref(dsd, "retimer-switch", config->retimer_switch);
}
void acpigen_write_typec_connector(const struct typec_connector_class_config *config,
diff --git a/src/ec/google/chromeec/chip.h b/src/ec/google/chromeec/chip.h
index 3915cf92e7..bb03e5731d 100644
--- a/src/ec/google/chromeec/chip.h
+++ b/src/ec/google/chromeec/chip.h
@@ -11,6 +11,7 @@
struct ec_google_chromeec_config {
/* Pointer to PMC Mux connector for each Type-C port */
DEVTREE_CONST struct device *mux_conn[MAX_TYPEC_PORTS];
+ DEVTREE_CONST struct device *retimer_conn[MAX_TYPEC_PORTS];
};
#endif /* EC_GOOGLE_CHROMEEC_CHIP_H */
diff --git a/src/ec/google/chromeec/ec_acpi.c b/src/ec/google/chromeec/ec_acpi.c
index 7f946264bd..69b10784b3 100644
--- a/src/ec/google/chromeec/ec_acpi.c
+++ b/src/ec/google/chromeec/ec_acpi.c
@@ -195,6 +195,7 @@ static void fill_ssdt_typec_device(const struct device *dev)
.orientation_switch = config->mux_conn[i],
.usb_role_switch = config->mux_conn[i],
.mode_switch = config->mux_conn[i],
+ .retimer_switch = config->retimer_conn[i],
.pld = &pld,
};
diff --git a/src/include/acpi/acpigen_usb.h b/src/include/acpi/acpigen_usb.h
index 8042874ba1..b065129a05 100644
--- a/src/include/acpi/acpigen_usb.h
+++ b/src/include/acpi/acpigen_usb.h
@@ -41,6 +41,8 @@ enum usb_typec_data_role {
* host or device, for the USB port
* @mode_switch: Reference to the ACPI device that controls routing of data lines to
* various endpoints (xHCI, DP, etc.) on the SoC.
+ * @retimer_switch: Reference to the ACPI device that controls the configuration
+ * of the retimer in the Type C signal chain.
* @pld: Reference to PLD information.
*/
struct typec_connector_class_config {
@@ -53,6 +55,7 @@ struct typec_connector_class_config {
const struct device *orientation_switch;
const struct device *usb_role_switch;
const struct device *mode_switch;
+ const struct device *retimer_switch;
const struct acpi_pld *pld;
};