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