summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHemant Kumar <hemantk@codeaurora.org>2016-06-03 18:43:08 -0700
committerKyle Yan <kyan@codeaurora.org>2016-06-07 16:01:17 -0700
commit2142069a88ea13f98ffd55c5e87263c2e4e469e6 (patch)
treebebd59957b15fe2334549513f83f4cb1b1beaf72
parentaab29b07692548bb4043421c8dd7229af105f458 (diff)
usb: dwc3: Fix extcon notification for non-type-c usb cable
In case of non-type-c usb cable extcon cable state for EXTCON_USB_CC returns error and driver bails out. This causes usb enumeration failure. Hence set the typec_orientation to ORIENTATION_NONE and continue with usb enumeration. In case of super speed mode with type-c usb cable even if extcon cable state return error for EXTCON_USB_CC then also usb device will get enumerated falling back to high speed mode. Change-Id: Ibc0b0506b2090f4c090d649f6e3ae7d42b102c93 Signed-off-by: Hemant Kumar <hemantk@codeaurora.org>
-rw-r--r--drivers/usb/dwc3/dwc3-msm.c22
1 files changed, 10 insertions, 12 deletions
diff --git a/drivers/usb/dwc3/dwc3-msm.c b/drivers/usb/dwc3/dwc3-msm.c
index 13ba52ad7b62..f9c0b6a04224 100644
--- a/drivers/usb/dwc3/dwc3-msm.c
+++ b/drivers/usb/dwc3/dwc3-msm.c
@@ -2360,12 +2360,11 @@ static int dwc3_msm_id_notifier(struct notifier_block *nb,
dev_dbg(mdwc->dev, "host:%ld (id:%d) event received\n", event, id);
cc_state = extcon_get_cable_state_(edev, EXTCON_USB_CC);
- if (cc_state < 0) {
- dev_err(mdwc->dev, "%s: failed to get cc state\n", __func__);
- goto done;
- }
-
- mdwc->typec_orientation = cc_state ? ORIENTATION_CC2 : ORIENTATION_CC1;
+ if (cc_state < 0)
+ mdwc->typec_orientation = ORIENTATION_NONE;
+ else
+ mdwc->typec_orientation =
+ cc_state ? ORIENTATION_CC2 : ORIENTATION_CC1;
dbg_event(0xFF, "cc_state", mdwc->typec_orientation);
@@ -2398,12 +2397,11 @@ static int dwc3_msm_vbus_notifier(struct notifier_block *nb,
return NOTIFY_DONE;
cc_state = extcon_get_cable_state_(edev, EXTCON_USB_CC);
- if (cc_state < 0) {
- dev_err(mdwc->dev, "%s: failed to get cc state\n", __func__);
- goto done;
- }
-
- mdwc->typec_orientation = cc_state ? ORIENTATION_CC2 : ORIENTATION_CC1;
+ if (cc_state < 0)
+ mdwc->typec_orientation = ORIENTATION_NONE;
+ else
+ mdwc->typec_orientation =
+ cc_state ? ORIENTATION_CC2 : ORIENTATION_CC1;
dbg_event(0xFF, "cc_state", mdwc->typec_orientation);