diff options
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/usb/musb-omap.h | 30 | ||||
| -rw-r--r-- | include/linux/usb/otg.h | 46 |
2 files changed, 71 insertions, 5 deletions
diff --git a/include/linux/usb/musb-omap.h b/include/linux/usb/musb-omap.h new file mode 100644 index 000000000000..7774c5986f07 --- /dev/null +++ b/include/linux/usb/musb-omap.h | |||
| @@ -0,0 +1,30 @@ | |||
| 1 | /* | ||
| 2 | * Copyright (C) 2011-2012 by Texas Instruments | ||
| 3 | * | ||
| 4 | * The Inventra Controller Driver for Linux is free software; you | ||
| 5 | * can redistribute it and/or modify it under the terms of the GNU | ||
| 6 | * General Public License version 2 as published by the Free Software | ||
| 7 | * Foundation. | ||
| 8 | */ | ||
| 9 | |||
| 10 | #ifndef __MUSB_OMAP_H__ | ||
| 11 | #define __MUSB_OMAP_H__ | ||
| 12 | |||
| 13 | enum omap_musb_vbus_id_status { | ||
| 14 | OMAP_MUSB_UNKNOWN = 0, | ||
| 15 | OMAP_MUSB_ID_GROUND, | ||
| 16 | OMAP_MUSB_ID_FLOAT, | ||
| 17 | OMAP_MUSB_VBUS_VALID, | ||
| 18 | OMAP_MUSB_VBUS_OFF, | ||
| 19 | }; | ||
| 20 | |||
| 21 | #if (defined(CONFIG_USB_MUSB_OMAP2PLUS) || \ | ||
| 22 | defined(CONFIG_USB_MUSB_OMAP2PLUS_MODULE)) | ||
| 23 | void omap_musb_mailbox(enum omap_musb_vbus_id_status status); | ||
| 24 | #else | ||
| 25 | static inline void omap_musb_mailbox(enum omap_musb_vbus_id_status status) | ||
| 26 | { | ||
| 27 | } | ||
| 28 | #endif | ||
| 29 | |||
| 30 | #endif /* __MUSB_OMAP_H__ */ | ||
diff --git a/include/linux/usb/otg.h b/include/linux/usb/otg.h index 38ab3f46346f..0cb2ec2e50c0 100644 --- a/include/linux/usb/otg.h +++ b/include/linux/usb/otg.h | |||
| @@ -43,6 +43,13 @@ enum usb_phy_events { | |||
| 43 | USB_EVENT_ENUMERATED, /* gadget driver enumerated */ | 43 | USB_EVENT_ENUMERATED, /* gadget driver enumerated */ |
| 44 | }; | 44 | }; |
| 45 | 45 | ||
| 46 | /* associate a type with PHY */ | ||
| 47 | enum usb_phy_type { | ||
| 48 | USB_PHY_TYPE_UNDEFINED, | ||
| 49 | USB_PHY_TYPE_USB2, | ||
| 50 | USB_PHY_TYPE_USB3, | ||
| 51 | }; | ||
| 52 | |||
| 46 | struct usb_phy; | 53 | struct usb_phy; |
| 47 | 54 | ||
| 48 | /* for transceivers connected thru an ULPI interface, the user must | 55 | /* for transceivers connected thru an ULPI interface, the user must |
| @@ -89,6 +96,7 @@ struct usb_phy { | |||
| 89 | const char *label; | 96 | const char *label; |
| 90 | unsigned int flags; | 97 | unsigned int flags; |
| 91 | 98 | ||
| 99 | enum usb_phy_type type; | ||
| 92 | enum usb_otg_state state; | 100 | enum usb_otg_state state; |
| 93 | enum usb_phy_events last_event; | 101 | enum usb_phy_events last_event; |
| 94 | 102 | ||
| @@ -105,6 +113,9 @@ struct usb_phy { | |||
| 105 | u16 port_status; | 113 | u16 port_status; |
| 106 | u16 port_change; | 114 | u16 port_change; |
| 107 | 115 | ||
| 116 | /* to support controllers that have multiple transceivers */ | ||
| 117 | struct list_head head; | ||
| 118 | |||
| 108 | /* initialize/shutdown the OTG controller */ | 119 | /* initialize/shutdown the OTG controller */ |
| 109 | int (*init)(struct usb_phy *x); | 120 | int (*init)(struct usb_phy *x); |
| 110 | void (*shutdown)(struct usb_phy *x); | 121 | void (*shutdown)(struct usb_phy *x); |
| @@ -121,7 +132,8 @@ struct usb_phy { | |||
| 121 | 132 | ||
| 122 | 133 | ||
| 123 | /* for board-specific init logic */ | 134 | /* for board-specific init logic */ |
| 124 | extern int usb_set_transceiver(struct usb_phy *); | 135 | extern int usb_add_phy(struct usb_phy *, enum usb_phy_type type); |
| 136 | extern void usb_remove_phy(struct usb_phy *); | ||
| 125 | 137 | ||
| 126 | #if defined(CONFIG_NOP_USB_XCEIV) || (defined(CONFIG_NOP_USB_XCEIV_MODULE) && defined(MODULE)) | 138 | #if defined(CONFIG_NOP_USB_XCEIV) || (defined(CONFIG_NOP_USB_XCEIV_MODULE) && defined(MODULE)) |
| 127 | /* sometimes transceivers are accessed only through e.g. ULPI */ | 139 | /* sometimes transceivers are accessed only through e.g. ULPI */ |
| @@ -172,16 +184,29 @@ usb_phy_shutdown(struct usb_phy *x) | |||
| 172 | 184 | ||
| 173 | /* for usb host and peripheral controller drivers */ | 185 | /* for usb host and peripheral controller drivers */ |
| 174 | #ifdef CONFIG_USB_OTG_UTILS | 186 | #ifdef CONFIG_USB_OTG_UTILS |
| 175 | extern struct usb_phy *usb_get_transceiver(void); | 187 | extern struct usb_phy *usb_get_phy(enum usb_phy_type type); |
| 176 | extern void usb_put_transceiver(struct usb_phy *); | 188 | extern struct usb_phy *devm_usb_get_phy(struct device *dev, |
| 189 | enum usb_phy_type type); | ||
| 190 | extern void usb_put_phy(struct usb_phy *); | ||
| 191 | extern void devm_usb_put_phy(struct device *dev, struct usb_phy *x); | ||
| 177 | extern const char *otg_state_string(enum usb_otg_state state); | 192 | extern const char *otg_state_string(enum usb_otg_state state); |
| 178 | #else | 193 | #else |
| 179 | static inline struct usb_phy *usb_get_transceiver(void) | 194 | static inline struct usb_phy *usb_get_phy(enum usb_phy_type type) |
| 195 | { | ||
| 196 | return NULL; | ||
| 197 | } | ||
| 198 | |||
| 199 | static inline struct usb_phy *devm_usb_get_phy(struct device *dev, | ||
| 200 | enum usb_phy_type type) | ||
| 180 | { | 201 | { |
| 181 | return NULL; | 202 | return NULL; |
| 182 | } | 203 | } |
| 183 | 204 | ||
| 184 | static inline void usb_put_transceiver(struct usb_phy *x) | 205 | static inline void usb_put_phy(struct usb_phy *x) |
| 206 | { | ||
| 207 | } | ||
| 208 | |||
| 209 | static inline void devm_usb_put_phy(struct device *dev, struct usb_phy *x) | ||
| 185 | { | 210 | { |
| 186 | } | 211 | } |
| 187 | 212 | ||
| @@ -276,4 +301,15 @@ usb_unregister_notifier(struct usb_phy *x, struct notifier_block *nb) | |||
| 276 | /* for OTG controller drivers (and maybe other stuff) */ | 301 | /* for OTG controller drivers (and maybe other stuff) */ |
| 277 | extern int usb_bus_start_enum(struct usb_bus *bus, unsigned port_num); | 302 | extern int usb_bus_start_enum(struct usb_bus *bus, unsigned port_num); |
| 278 | 303 | ||
| 304 | static inline const char *usb_phy_type_string(enum usb_phy_type type) | ||
| 305 | { | ||
| 306 | switch (type) { | ||
| 307 | case USB_PHY_TYPE_USB2: | ||
| 308 | return "USB2 PHY"; | ||
| 309 | case USB_PHY_TYPE_USB3: | ||
| 310 | return "USB3 PHY"; | ||
| 311 | default: | ||
| 312 | return "UNKNOWN PHY TYPE"; | ||
| 313 | } | ||
| 314 | } | ||
| 279 | #endif /* __LINUX_USB_OTG_H */ | 315 | #endif /* __LINUX_USB_OTG_H */ |
