hc
2024-11-01 2f529f9b558ca1c1bd74be7437a84e4711743404
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
/*
 * usb-omap.h - Platform data for the various OMAP USB IPs
 *
 * Copyright (C) 2012 Texas Instruments Incorporated - https://www.ti.com
 *
 * This software is distributed under the terms of the GNU General Public
 * License ("GPL") version 2, as published by the Free Software Foundation.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 */
 
#define OMAP3_HS_USB_PORTS    3
 
enum usbhs_omap_port_mode {
   OMAP_USBHS_PORT_MODE_UNUSED,
   OMAP_EHCI_PORT_MODE_PHY,
   OMAP_EHCI_PORT_MODE_TLL,
   OMAP_EHCI_PORT_MODE_HSIC,
   OMAP_OHCI_PORT_MODE_PHY_6PIN_DATSE0,
   OMAP_OHCI_PORT_MODE_PHY_6PIN_DPDM,
   OMAP_OHCI_PORT_MODE_PHY_3PIN_DATSE0,
   OMAP_OHCI_PORT_MODE_PHY_4PIN_DPDM,
   OMAP_OHCI_PORT_MODE_TLL_6PIN_DATSE0,
   OMAP_OHCI_PORT_MODE_TLL_6PIN_DPDM,
   OMAP_OHCI_PORT_MODE_TLL_3PIN_DATSE0,
   OMAP_OHCI_PORT_MODE_TLL_4PIN_DPDM,
   OMAP_OHCI_PORT_MODE_TLL_2PIN_DATSE0,
   OMAP_OHCI_PORT_MODE_TLL_2PIN_DPDM
};
 
struct usbtll_omap_platform_data {
   enum usbhs_omap_port_mode        port_mode[OMAP3_HS_USB_PORTS];
};
 
struct ehci_hcd_omap_platform_data {
   enum usbhs_omap_port_mode    port_mode[OMAP3_HS_USB_PORTS];
   int                reset_gpio_port[OMAP3_HS_USB_PORTS];
   struct regulator        *regulator[OMAP3_HS_USB_PORTS];
   unsigned            phy_reset:1;
};
 
struct ohci_hcd_omap_platform_data {
   enum usbhs_omap_port_mode    port_mode[OMAP3_HS_USB_PORTS];
   unsigned            es2_compatibility:1;
};
 
struct usbhs_omap_platform_data {
   int                nports;
   enum usbhs_omap_port_mode    port_mode[OMAP3_HS_USB_PORTS];
   int                reset_gpio_port[OMAP3_HS_USB_PORTS];
   struct regulator        *regulator[OMAP3_HS_USB_PORTS];
 
   struct ehci_hcd_omap_platform_data    *ehci_data;
   struct ohci_hcd_omap_platform_data    *ohci_data;
 
   /* OMAP3 <= ES2.1 have a single ulpi bypass control bit */
   unsigned single_ulpi_bypass:1;
   unsigned es2_compatibility:1;
   unsigned phy_reset:1;
};
 
/*-------------------------------------------------------------------------*/
 
struct omap_musb_board_data {
   u8    interface_type;
   u8    mode;
   u16    power;
   unsigned extvbus:1;
   void    (*set_phy_power)(u8 on);
   void    (*clear_irq)(void);
   void    (*set_mode)(u8 mode);
   void    (*reset)(void);
};
 
enum musb_interface {
   MUSB_INTERFACE_ULPI,
   MUSB_INTERFACE_UTMI
};