| 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); |