diff --git a/drivers/usb/typec/ucsi/ucsi.c b/drivers/usb/typec/ucsi/ucsi.c index 96ef4fc0bcf0..6da0ce066785 100644 --- a/drivers/usb/typec/ucsi/ucsi.c +++ b/drivers/usb/typec/ucsi/ucsi.c @@ -739,6 +739,8 @@ static int ucsi_dr_swap(struct typec_port *port, enum typec_data_role role) role == TYPEC_HOST)) goto out_unlock; + reinit_completion(&con->complete); + UCSI_CMD_SET_UOR(ctrl, con, role); ret = ucsi_role_cmd(con, &ctrl); if (ret < 0) @@ -774,6 +776,8 @@ static int ucsi_pr_swap(struct typec_port *port, enum typec_role role) if (con->status.pwr_dir == role) goto out_unlock; + reinit_completion(&con->complete); + UCSI_CMD_SET_PDR(ctrl, con, role); ret = ucsi_role_cmd(con, &ctrl); if (ret < 0)