summaryrefslogtreecommitdiff
path: root/include/linux/usb/phy.h
diff options
context:
space:
mode:
authorSriharsha Allenki <sallenki@codeaurora.org>2019-05-14 18:28:23 +0530
committerSriharsha Allenki <sallenki@codeaurora.org>2019-06-04 14:40:53 +0530
commit669f50368505b3a67fb81a5ffec4914c5baa8b7f (patch)
tree9dfb65cba0a316397803adcc74ee153db04bd52e /include/linux/usb/phy.h
parent705aac6195a3dbfcf1ec179ca489cdd5203016aa (diff)
usb: dwc3: Support float charger detection
Chargers on some platforms do not support FLOAT charger detection. On these platforms, the float charger can be detected depending on the state of the DP and DM lines as detected by the PHY. So, on these platforms check for the DP DM line state and if found floating, do not start the peripheral mode and notify PMIC -ETIMEDOUT implying the connected charger is of type float. Change-Id: I6bf54b0d5c143a849ce9ea7bc515d62204ed2f33 Signed-off-by: Sriharsha Allenki <sallenki@codeaurora.org>
Diffstat (limited to 'include/linux/usb/phy.h')
-rw-r--r--include/linux/usb/phy.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/include/linux/usb/phy.h b/include/linux/usb/phy.h
index d25125402fda..f066d65ac3dd 100644
--- a/include/linux/usb/phy.h
+++ b/include/linux/usb/phy.h
@@ -126,6 +126,9 @@ struct usb_phy {
/* reset the PHY clocks */
int (*reset)(struct usb_phy *x);
+
+ /* return linestate with Idp_src (used for DCD with USB2 PHY) */
+ int (*dpdm_with_idp_src)(struct usb_phy *x);
};
/**
@@ -209,6 +212,15 @@ usb_phy_reset(struct usb_phy *x)
return 0;
}
+static inline int
+usb_phy_dpdm_with_idp_src(struct usb_phy *x)
+{
+ if (x && x->dpdm_with_idp_src)
+ return x->dpdm_with_idp_src(x);
+
+ return 0;
+}
+
/* for usb host and peripheral controller drivers */
#if IS_ENABLED(CONFIG_USB_PHY)
extern struct usb_phy *usb_get_phy(enum usb_phy_type type);