From 73606279f78abd0235a1b4ac36b5e888bb848d15 Mon Sep 17 00:00:00 2001 From: Arian Date: Wed, 12 Jan 2022 18:27:29 +0000 Subject: [PATCH] usb: Import Xiaomi changes Change-Id: I3d2f755729bfc5dc8d6c88d58ededdf93db0adfb --- drivers/usb/dwc3/dwc3-msm.c | 3 +++ drivers/usb/dwc3/gadget.c | 2 +- drivers/usb/gadget/function/f_gsi.c | 1 + drivers/usb/host/xhci.c | 3 +++ drivers/usb/typec/ucsi/ucsi.c | 5 ----- 5 files changed, 8 insertions(+), 6 deletions(-) diff --git a/drivers/usb/dwc3/dwc3-msm.c b/drivers/usb/dwc3/dwc3-msm.c index 79f3f9474137..b002d93acfb6 100644 --- a/drivers/usb/dwc3/dwc3-msm.c +++ b/drivers/usb/dwc3/dwc3-msm.c @@ -5738,6 +5738,9 @@ static int dwc3_msm_gadget_vbus_draw(struct dwc3_msm *mdwc, unsigned int mA) if (mdwc->apsd_source == IIO && chg_type != POWER_SUPPLY_TYPE_USB) return 0; + if (mA < 100) + return 0; + /* Set max current limit in uA */ pval.intval = 1000 * mA; diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c index 3e9d9e736238..cbff49159f54 100644 --- a/drivers/usb/dwc3/gadget.c +++ b/drivers/usb/dwc3/gadget.c @@ -314,7 +314,7 @@ void dwc3_gadget_giveback(struct dwc3_ep *dep, struct dwc3_request *req, spin_lock(&dwc->lock); } -#define DWC_CMD_TIMEOUT 5000 +#define DWC_CMD_TIMEOUT 6000 /** * dwc3_send_gadget_generic_command - issue a generic command for the controller * @dwc: pointer to the controller context diff --git a/drivers/usb/gadget/function/f_gsi.c b/drivers/usb/gadget/function/f_gsi.c index 1111b88c6516..f29052ac9d4e 100644 --- a/drivers/usb/gadget/function/f_gsi.c +++ b/drivers/usb/gadget/function/f_gsi.c @@ -3428,6 +3428,7 @@ static void gsi_unbind(struct usb_configuration *c, struct usb_function *f) mbim_gsi_string_defs[0].id = 0; qdss_gsi_string_defs[0].id = 0; gsi->func_wakeup_pending = false; + atomic_set(&gsi->connected, 0); if (gsi->prot_id == IPA_USB_RNDIS) { gsi->d_port.sm_state = STATE_UNINITIALIZED; rndis_deregister(gsi->params); diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c index 89424697f743..c05de557d7f9 100644 --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c @@ -1145,6 +1145,9 @@ int xhci_resume(struct xhci_hcd *xhci, bool hibernated) bool pending_portevent = false; bool reinit_xhc = false; + if (!hcd) + return 0; + if (!hcd->state) return 0; diff --git a/drivers/usb/typec/ucsi/ucsi.c b/drivers/usb/typec/ucsi/ucsi.c index 4cf64c45732c..1b4d19390be0 100644 --- a/drivers/usb/typec/ucsi/ucsi.c +++ b/drivers/usb/typec/ucsi/ucsi.c @@ -719,11 +719,6 @@ static int ucsi_dr_swap(struct typec_port *port, enum typec_data_role role) mutex_lock(&con->lock); - if (!con->partner) { - ret = -ENOTCONN; - goto out_unlock; - } - partner_type = UCSI_CONSTAT_PARTNER_TYPE(con->status.flags); if ((partner_type == UCSI_CONSTAT_PARTNER_TYPE_DFP && role == TYPEC_DEVICE) ||