aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/layerscape/patches-5.4/820-usb-0002-MLK-14285-1-usb-phy-add-usb-mode-for-usb_phy.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/layerscape/patches-5.4/820-usb-0002-MLK-14285-1-usb-phy-add-usb-mode-for-usb_phy.patch')
-rw-r--r--target/linux/layerscape/patches-5.4/820-usb-0002-MLK-14285-1-usb-phy-add-usb-mode-for-usb_phy.patch59
1 files changed, 59 insertions, 0 deletions
diff --git a/target/linux/layerscape/patches-5.4/820-usb-0002-MLK-14285-1-usb-phy-add-usb-mode-for-usb_phy.patch b/target/linux/layerscape/patches-5.4/820-usb-0002-MLK-14285-1-usb-phy-add-usb-mode-for-usb_phy.patch
new file mode 100644
index 0000000000..d61388cfa5
--- /dev/null
+++ b/target/linux/layerscape/patches-5.4/820-usb-0002-MLK-14285-1-usb-phy-add-usb-mode-for-usb_phy.patch
@@ -0,0 +1,59 @@
+From ec89a34069e9d33dd8f809c02a12ffb619d67e1f Mon Sep 17 00:00:00 2001
+From: Li Jun <jun.li@nxp.com>
+Date: Wed, 12 Apr 2017 05:31:17 +0800
+Subject: [PATCH] MLK-14285-1 usb: phy: add usb mode for usb_phy
+
+USB phy driver may need to know the current working mode of
+the controller, and does some different settings according to
+host mode or device mode.
+
+Signed-off-by: Li Jun <jun.li@nxp.com>
+(cherry picked from commit 2286cb30feedd6f4a5cb82a0f0af5aa3a04ab698)
+Signed-off-by: Vipul Kumar <vipul_kumar@mentor.com>
+Signed-off-by: Srikanth Krishnakar <Srikanth_Krishnakar@mentor.com>
+---
+ include/linux/usb/phy.h | 19 +++++++++++++++++++
+ 1 file changed, 19 insertions(+)
+
+--- a/include/linux/usb/phy.h
++++ b/include/linux/usb/phy.h
+@@ -63,6 +63,13 @@ enum usb_otg_state {
+ OTG_STATE_A_VBUS_ERR,
+ };
+
++/* The usb role of phy to be working with */
++enum usb_current_mode {
++ CUR_USB_MODE_NONE,
++ CUR_USB_MODE_HOST,
++ CUR_USB_MODE_DEVICE,
++};
++
+ struct usb_phy;
+ struct usb_otg;
+
+@@ -161,6 +168,9 @@ struct usb_phy {
+ int (*notify_resume)(struct usb_phy *x,
+ enum usb_device_speed speed);
+
++ int (*set_mode)(struct usb_phy *x,
++ enum usb_current_mode mode);
++
+ };
+
+ /* for board-specific init logic */
+@@ -219,6 +229,15 @@ usb_phy_vbus_off(struct usb_phy *x)
+ return x->set_vbus(x, false);
+ }
+
++static inline int
++usb_phy_set_mode(struct usb_phy *x, enum usb_current_mode mode)
++{
++ if (!x || !x->set_mode)
++ return 0;
++
++ return x->set_mode(x, mode);
++}
++
+ /* 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);