Skip to content

Commit af34f11

Browse files
author
Prashant Malani
committed
platform/chrome: cros_ec_typec: Configure muxes at start of port update
There are situations where the mux state reported by the Embedded Controller (EC), might lag the partner "connected" state. So, the mux state might still suggest that a partner is connected, while the PD "connected" state, being in Try.SNK (for example) suggests that the partner is disconnected. In such a scenario, we will end up sending a disconnect command to the mux driver, followed by a connect command, since the mux is configured later. Avoid this by configuring the mux before registering/disconnecting a partner. Signed-off-by: Prashant Malani <pmalani@chromium.org> Reviewed-by: Benson Leung <bleung@chromium.org> Link: https://lore.kernel.org/chrome-platform/20220208184721.1697194-4-pmalani@chromium.org/
1 parent 0d8495d commit af34f11

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

drivers/platform/chrome/cros_ec_typec.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -965,6 +965,11 @@ static int cros_typec_port_update(struct cros_typec_data *typec, int port_num)
965965
if (ret < 0)
966966
return ret;
967967

968+
/* Update the switches if they exist, according to requested state */
969+
ret = cros_typec_configure_mux(typec, port_num, &resp);
970+
if (ret)
971+
dev_warn(typec->dev, "Configure muxes failed, err = %d\n", ret);
972+
968973
dev_dbg(typec->dev, "Enabled %d: 0x%hhx\n", port_num, resp.enabled);
969974
dev_dbg(typec->dev, "Role %d: 0x%hhx\n", port_num, resp.role);
970975
dev_dbg(typec->dev, "Polarity %d: 0x%hhx\n", port_num, resp.polarity);
@@ -980,12 +985,7 @@ static int cros_typec_port_update(struct cros_typec_data *typec, int port_num)
980985
if (typec->typec_cmd_supported)
981986
cros_typec_handle_status(typec, port_num);
982987

983-
/* Update the switches if they exist, according to requested state */
984-
ret = cros_typec_configure_mux(typec, port_num, &resp);
985-
if (ret)
986-
dev_warn(typec->dev, "Configure muxes failed, err = %d\n", ret);
987-
988-
return ret;
988+
return 0;
989989
}
990990

991991
static int cros_typec_get_cmd_version(struct cros_typec_data *typec)

0 commit comments

Comments
 (0)