GNU Linux-libre 6.0.15-gnu
[releases.git] / include / linux / platform_data / usb-omap.h
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /*
3  * usb-omap.h - Platform data for the various OMAP USB IPs
4  *
5  * Copyright (C) 2012 Texas Instruments Incorporated - https://www.ti.com
6  */
7
8 #define OMAP3_HS_USB_PORTS      3
9
10 enum usbhs_omap_port_mode {
11         OMAP_USBHS_PORT_MODE_UNUSED,
12         OMAP_EHCI_PORT_MODE_PHY,
13         OMAP_EHCI_PORT_MODE_TLL,
14         OMAP_EHCI_PORT_MODE_HSIC,
15         OMAP_OHCI_PORT_MODE_PHY_6PIN_DATSE0,
16         OMAP_OHCI_PORT_MODE_PHY_6PIN_DPDM,
17         OMAP_OHCI_PORT_MODE_PHY_3PIN_DATSE0,
18         OMAP_OHCI_PORT_MODE_PHY_4PIN_DPDM,
19         OMAP_OHCI_PORT_MODE_TLL_6PIN_DATSE0,
20         OMAP_OHCI_PORT_MODE_TLL_6PIN_DPDM,
21         OMAP_OHCI_PORT_MODE_TLL_3PIN_DATSE0,
22         OMAP_OHCI_PORT_MODE_TLL_4PIN_DPDM,
23         OMAP_OHCI_PORT_MODE_TLL_2PIN_DATSE0,
24         OMAP_OHCI_PORT_MODE_TLL_2PIN_DPDM
25 };
26
27 struct usbtll_omap_platform_data {
28         enum usbhs_omap_port_mode               port_mode[OMAP3_HS_USB_PORTS];
29 };
30
31 struct ehci_hcd_omap_platform_data {
32         enum usbhs_omap_port_mode       port_mode[OMAP3_HS_USB_PORTS];
33         int                             reset_gpio_port[OMAP3_HS_USB_PORTS];
34         struct regulator                *regulator[OMAP3_HS_USB_PORTS];
35         unsigned                        phy_reset:1;
36 };
37
38 struct ohci_hcd_omap_platform_data {
39         enum usbhs_omap_port_mode       port_mode[OMAP3_HS_USB_PORTS];
40         unsigned                        es2_compatibility:1;
41 };
42
43 struct usbhs_omap_platform_data {
44         int                             nports;
45         enum usbhs_omap_port_mode       port_mode[OMAP3_HS_USB_PORTS];
46         int                             reset_gpio_port[OMAP3_HS_USB_PORTS];
47         struct regulator                *regulator[OMAP3_HS_USB_PORTS];
48
49         struct ehci_hcd_omap_platform_data      *ehci_data;
50         struct ohci_hcd_omap_platform_data      *ohci_data;
51
52         /* OMAP3 <= ES2.1 have a single ulpi bypass control bit */
53         unsigned single_ulpi_bypass:1;
54         unsigned es2_compatibility:1;
55         unsigned phy_reset:1;
56 };
57
58 /*-------------------------------------------------------------------------*/
59
60 struct omap_musb_board_data {
61         u8      interface_type;
62         u8      mode;
63         u16     power;
64         unsigned extvbus:1;
65         void    (*set_phy_power)(u8 on);
66         void    (*clear_irq)(void);
67         void    (*set_mode)(u8 mode);
68         void    (*reset)(void);
69 };
70
71 enum musb_interface {
72         MUSB_INTERFACE_ULPI,
73         MUSB_INTERFACE_UTMI
74 };