diff options
| author | Greg Kroah-Hartman <[email protected]> | 2024-06-18 11:06:17 +0200 |
|---|---|---|
| committer | Greg Kroah-Hartman <[email protected]> | 2024-06-18 11:06:17 +0200 |
| commit | b0fc24f36191468bcabc72aaea67ab7a2bb2a13e (patch) | |
| tree | bc64adf1363a447ad4582deeaa5bb36ffcf6bfcc /drivers/usb/typec | |
| parent | 5821bf2dffbe18fe1f097dbb027415fa15a38e9a (diff) | |
| parent | 6ba59ff4227927d3a8530fc2973b80e94b54d58f (diff) | |
Merge tag 'v6.10-rc4' into usb-next
We need the USB / Thunderbolt fixes in here as well.
Signed-off-by: Greg Kroah-Hartman <[email protected]>
Diffstat (limited to 'drivers/usb/typec')
| -rw-r--r-- | drivers/usb/typec/tcpm/tcpm.c | 5 | ||||
| -rw-r--r-- | drivers/usb/typec/ucsi/ucsi.c | 7 | ||||
| -rw-r--r-- | drivers/usb/typec/ucsi/ucsi_glink.c | 2 |
3 files changed, 11 insertions, 3 deletions
diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c index bac6866617c8..887c5333b9eb 100644 --- a/drivers/usb/typec/tcpm/tcpm.c +++ b/drivers/usb/typec/tcpm/tcpm.c @@ -3015,8 +3015,10 @@ static int tcpm_register_source_caps(struct tcpm_port *port) memcpy(caps.pdo, port->source_caps, sizeof(u32) * port->nr_source_caps); caps.role = TYPEC_SOURCE; - if (cap) + if (cap) { usb_power_delivery_unregister_capabilities(cap); + port->partner_source_caps = NULL; + } cap = usb_power_delivery_register_capabilities(port->partner_pd, &caps); if (IS_ERR(cap)) @@ -6197,6 +6199,7 @@ static void _tcpm_pd_hard_reset(struct tcpm_port *port) port->tcpc->set_bist_data(port->tcpc, false); switch (port->state) { + case TOGGLING: case ERROR_RECOVERY: case PORT_RESET: case PORT_RESET_WAIT_OFF: diff --git a/drivers/usb/typec/ucsi/ucsi.c b/drivers/usb/typec/ucsi/ucsi.c index f2424a9a5dee..134ef4e17d85 100644 --- a/drivers/usb/typec/ucsi/ucsi.c +++ b/drivers/usb/typec/ucsi/ucsi.c @@ -153,8 +153,13 @@ static int ucsi_exec_command(struct ucsi *ucsi, u64 cmd) } if (cci & UCSI_CCI_ERROR) { - if (cmd == UCSI_GET_ERROR_STATUS) + if (cmd == UCSI_GET_ERROR_STATUS) { + ret = ucsi_acknowledge(ucsi, false); + if (ret) + return ret; + return -EIO; + } return ucsi_read_error(ucsi); } diff --git a/drivers/usb/typec/ucsi/ucsi_glink.c b/drivers/usb/typec/ucsi/ucsi_glink.c index f7546bb488c3..985a880e86da 100644 --- a/drivers/usb/typec/ucsi/ucsi_glink.c +++ b/drivers/usb/typec/ucsi/ucsi_glink.c @@ -14,7 +14,7 @@ #include <linux/soc/qcom/pmic_glink.h> #include "ucsi.h" -#define PMIC_GLINK_MAX_PORTS 2 +#define PMIC_GLINK_MAX_PORTS 3 #define UCSI_BUF_SIZE 48 |