root/include/linux/platform_data/usb-omap.h

/* [<][>][^][v][top][bottom][index][help] */
/*
 * usb-omap.h - Platform data for the various OMAP USB IPs
 *
 * Copyright (C) 2012 Texas Instruments Incorporated - http://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
};

/* [<][>][^][v][top][bottom][index][help] */