diff options
Diffstat (limited to 'include/linux/usb/phy.h')
| -rw-r--r-- | include/linux/usb/phy.h | 33 |
1 files changed, 27 insertions, 6 deletions
diff --git a/include/linux/usb/phy.h b/include/linux/usb/phy.h index 15847cbdb512..6b5978f57633 100644 --- a/include/linux/usb/phy.h +++ b/include/linux/usb/phy.h | |||
| @@ -91,6 +91,9 @@ struct usb_phy { | |||
| 91 | int (*init)(struct usb_phy *x); | 91 | int (*init)(struct usb_phy *x); |
| 92 | void (*shutdown)(struct usb_phy *x); | 92 | void (*shutdown)(struct usb_phy *x); |
| 93 | 93 | ||
| 94 | /* enable/disable VBUS */ | ||
| 95 | int (*set_vbus)(struct usb_phy *x, int on); | ||
| 96 | |||
| 94 | /* effective for B devices, ignored for A-peripheral */ | 97 | /* effective for B devices, ignored for A-peripheral */ |
| 95 | int (*set_power)(struct usb_phy *x, | 98 | int (*set_power)(struct usb_phy *x, |
| 96 | unsigned mA); | 99 | unsigned mA); |
| @@ -160,8 +163,26 @@ usb_phy_shutdown(struct usb_phy *x) | |||
| 160 | x->shutdown(x); | 163 | x->shutdown(x); |
| 161 | } | 164 | } |
| 162 | 165 | ||
| 166 | static inline int | ||
| 167 | usb_phy_vbus_on(struct usb_phy *x) | ||
| 168 | { | ||
| 169 | if (!x->set_vbus) | ||
| 170 | return 0; | ||
| 171 | |||
| 172 | return x->set_vbus(x, true); | ||
| 173 | } | ||
| 174 | |||
| 175 | static inline int | ||
| 176 | usb_phy_vbus_off(struct usb_phy *x) | ||
| 177 | { | ||
| 178 | if (!x->set_vbus) | ||
| 179 | return 0; | ||
| 180 | |||
| 181 | return x->set_vbus(x, false); | ||
| 182 | } | ||
| 183 | |||
| 163 | /* for usb host and peripheral controller drivers */ | 184 | /* for usb host and peripheral controller drivers */ |
| 164 | #ifdef CONFIG_USB_OTG_UTILS | 185 | #if IS_ENABLED(CONFIG_USB_PHY) |
| 165 | extern struct usb_phy *usb_get_phy(enum usb_phy_type type); | 186 | extern struct usb_phy *usb_get_phy(enum usb_phy_type type); |
| 166 | extern struct usb_phy *devm_usb_get_phy(struct device *dev, | 187 | extern struct usb_phy *devm_usb_get_phy(struct device *dev, |
| 167 | enum usb_phy_type type); | 188 | enum usb_phy_type type); |
| @@ -176,29 +197,29 @@ extern int usb_bind_phy(const char *dev_name, u8 index, | |||
| 176 | #else | 197 | #else |
| 177 | static inline struct usb_phy *usb_get_phy(enum usb_phy_type type) | 198 | static inline struct usb_phy *usb_get_phy(enum usb_phy_type type) |
| 178 | { | 199 | { |
| 179 | return NULL; | 200 | return ERR_PTR(-ENXIO); |
| 180 | } | 201 | } |
| 181 | 202 | ||
| 182 | static inline struct usb_phy *devm_usb_get_phy(struct device *dev, | 203 | static inline struct usb_phy *devm_usb_get_phy(struct device *dev, |
| 183 | enum usb_phy_type type) | 204 | enum usb_phy_type type) |
| 184 | { | 205 | { |
| 185 | return NULL; | 206 | return ERR_PTR(-ENXIO); |
| 186 | } | 207 | } |
| 187 | 208 | ||
| 188 | static inline struct usb_phy *usb_get_phy_dev(struct device *dev, u8 index) | 209 | static inline struct usb_phy *usb_get_phy_dev(struct device *dev, u8 index) |
| 189 | { | 210 | { |
| 190 | return NULL; | 211 | return ERR_PTR(-ENXIO); |
| 191 | } | 212 | } |
| 192 | 213 | ||
| 193 | static inline struct usb_phy *devm_usb_get_phy_dev(struct device *dev, u8 index) | 214 | static inline struct usb_phy *devm_usb_get_phy_dev(struct device *dev, u8 index) |
| 194 | { | 215 | { |
| 195 | return NULL; | 216 | return ERR_PTR(-ENXIO); |
| 196 | } | 217 | } |
| 197 | 218 | ||
| 198 | static inline struct usb_phy *devm_usb_get_phy_by_phandle(struct device *dev, | 219 | static inline struct usb_phy *devm_usb_get_phy_by_phandle(struct device *dev, |
| 199 | const char *phandle, u8 index) | 220 | const char *phandle, u8 index) |
| 200 | { | 221 | { |
| 201 | return NULL; | 222 | return ERR_PTR(-ENXIO); |
| 202 | } | 223 | } |
| 203 | 224 | ||
| 204 | static inline void usb_put_phy(struct usb_phy *x) | 225 | static inline void usb_put_phy(struct usb_phy *x) |
