ec/google/chromeec: Add retimer flag for mux device

Not all ports have retimers. Add a property to denote that a particular
port has a retimer (instead of assuming that all ports have retimers).

BUG=b:263964979
TEST=Verified on guybrush; SSDT shows retimer-switch on port1 when
device tree is updated accordingly.

Change-Id: I754323236d2912777b63cede0fce2ccf7882cfea
Signed-off-by: Prashant Malani <pmalani@chromium.org>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/71663
Reviewed-by: Robert Zieba <robertzieba@google.com>
Reviewed-by: Caveh Jalali <caveh@chromium.org>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
Prashant Malani 2022-12-29 18:46:47 +00:00 committed by Patrick Georgi
parent c807d55798
commit 8c3fa461f3
2 changed files with 11 additions and 4 deletions

View File

@ -5,9 +5,11 @@
struct ec_google_chromeec_mux_conn_config {
/* When set to true, this signifies that the mux device
* is used as a Type-C mode switch in addition to
* a retimer switch. */
* is used as a Type-C mode switch. */
bool mode_switch;
/* When set to true, this signifies that the mux device
* is used as a Type-C retimer switch. */
bool retimer_switch;
};
#endif /* EC_GOOGLE_CHROMEEC_MUX_CONN_CHIP_H */

View File

@ -24,9 +24,14 @@ static void conn_fill_ssdt(const struct device *dev)
acpigen_write_name_integer("_ADR", dev->path.generic.id);
if (config && config->mode_switch) {
if (config) {
struct acpi_dp *dsd = acpi_dp_new_table("_DSD");
acpi_dp_add_integer(dsd, "mode-switch", 1);
if (config->mode_switch)
acpi_dp_add_integer(dsd, "mode-switch", 1);
if (config->retimer_switch)
acpi_dp_add_integer(dsd, "retimer-switch", 1);
acpi_dp_write(dsd);
}