| /* |
| * Copyright (C) 2010 Michael Grzeschik <mgr@pengutronix.de> |
| * |
| * This file is released under the GPLv2 |
| * |
| */ |
| |
| #ifndef __OMAP_EHCI_H |
| #define __OMAP_EHCI_H |
| |
| /* TLL Register Set */ |
| #define OMAP_USBTLL_REVISION (0x00) |
| #define OMAP_USBTLL_SYSCONFIG (0x10) |
| #define OMAP_USBTLL_SYSCONFIG_CACTIVITY (1 << 8) |
| #define OMAP_USBTLL_SYSCONFIG_SIDLEMODE (1 << 3) |
| #define OMAP_USBTLL_SYSCONFIG_ENAWAKEUP (1 << 2) |
| #define OMAP_USBTLL_SYSCONFIG_SOFTRESET (1 << 1) |
| #define OMAP_USBTLL_SYSCONFIG_AUTOIDLE (1 << 0) |
| |
| #define OMAP_USBTLL_SYSSTATUS (0x14) |
| #define OMAP_USBTLL_SYSSTATUS_RESETDONE (1 << 0) |
| |
| #define OMAP_USBTLL_IRQSTATUS (0x18) |
| #define OMAP_USBTLL_IRQENABLE (0x1C) |
| |
| #define OMAP_TLL_SHARED_CONF (0x30) |
| #define OMAP_TLL_SHARED_CONF_USB_90D_DDR_EN (1 << 6) |
| #define OMAP_TLL_SHARED_CONF_USB_180D_SDR_EN (1 << 5) |
| #define OMAP_TLL_SHARED_CONF_USB_DIVRATION (1 << 2) |
| #define OMAP_TLL_SHARED_CONF_FCLK_REQ (1 << 1) |
| #define OMAP_TLL_SHARED_CONF_FCLK_IS_ON (1 << 0) |
| |
| #define OMAP_TLL_CHANNEL_CONF(num) (0x040 + 0x004 * num) |
| #define OMAP_TLL_CHANNEL_CONF_ULPINOBITSTUFF (1 << 11) |
| #define OMAP_TLL_CHANNEL_CONF_ULPI_ULPIAUTOIDLE (1 << 10) |
| #define OMAP_TLL_CHANNEL_CONF_UTMIAUTOIDLE (1 << 9) |
| #define OMAP_TLL_CHANNEL_CONF_ULPIDDRMODE (1 << 8) |
| #define OMAP_TLL_CHANNEL_CONF_CHANEN (1 << 0) |
| |
| #define OMAP_TLL_ULPI_FUNCTION_CTRL(num) (0x804 + 0x100 * num) |
| #define OMAP_TLL_ULPI_INTERFACE_CTRL(num) (0x807 + 0x100 * num) |
| #define OMAP_TLL_ULPI_OTG_CTRL(num) (0x80A + 0x100 * num) |
| #define OMAP_TLL_ULPI_INT_EN_RISE(num) (0x80D + 0x100 * num) |
| #define OMAP_TLL_ULPI_INT_EN_FALL(num) (0x810 + 0x100 * num) |
| #define OMAP_TLL_ULPI_INT_STATUS(num) (0x813 + 0x100 * num) |
| #define OMAP_TLL_ULPI_INT_LATCH(num) (0x814 + 0x100 * num) |
| #define OMAP_TLL_ULPI_DEBUG(num) (0x815 + 0x100 * num) |
| #define OMAP_TLL_ULPI_SCRATCH_REGISTER(num) (0x816 + 0x100 * num) |
| |
| #define OMAP_TLL_CHANNEL_COUNT 3 |
| #define OMAP_TLL_CHANNEL_1_EN_MASK (1 << 1) |
| #define OMAP_TLL_CHANNEL_2_EN_MASK (1 << 2) |
| #define OMAP_TLL_CHANNEL_3_EN_MASK (1 << 4) |
| |
| /* UHH Register Set */ |
| #define OMAP_UHH_REVISION (0x00) |
| #define OMAP_UHH_SYSCONFIG (0x10) |
| #define OMAP_UHH_SYSCONFIG_MIDLEMODE (1 << 12) |
| #define OMAP_UHH_SYSCONFIG_CACTIVITY (1 << 8) |
| #define OMAP_UHH_SYSCONFIG_SIDLEMODE (1 << 3) |
| #define OMAP_UHH_SYSCONFIG_ENAWAKEUP (1 << 2) |
| #define OMAP_UHH_SYSCONFIG_SOFTRESET (1 << 1) |
| #define OMAP_UHH_SYSCONFIG_AUTOIDLE (1 << 0) |
| |
| #define OMAP_UHH_SYSSTATUS (0x14) |
| #define OMAP_UHH_HOSTCONFIG (0x40) |
| #define OMAP_UHH_HOSTCONFIG_ULPI_BYPASS (1 << 0) |
| #define OMAP_UHH_HOSTCONFIG_ULPI_P1_BYPASS (1 << 0) |
| #define OMAP_UHH_HOSTCONFIG_ULPI_P2_BYPASS (1 << 11) |
| #define OMAP_UHH_HOSTCONFIG_ULPI_P3_BYPASS (1 << 12) |
| #define OMAP_UHH_HOSTCONFIG_INCR4_BURST_EN (1 << 2) |
| #define OMAP_UHH_HOSTCONFIG_INCR8_BURST_EN (1 << 3) |
| #define OMAP_UHH_HOSTCONFIG_INCR16_BURST_EN (1 << 4) |
| #define OMAP_UHH_HOSTCONFIG_INCRX_ALIGN_EN (1 << 5) |
| #define OMAP_UHH_HOSTCONFIG_P1_CONNECT_STATUS (1 << 8) |
| #define OMAP_UHH_HOSTCONFIG_P2_CONNECT_STATUS (1 << 9) |
| #define OMAP_UHH_HOSTCONFIG_P3_CONNECT_STATUS (1 << 10) |
| |
| #define OMAP_UHH_DEBUG_CSR (0x44) |
| |
| /* EHCI Register Set */ |
| #define EHCI_INSNREG05_ULPI (0xA4) |
| #define EHCI_INSNREG05_ULPI_CONTROL_SHIFT 31 |
| #define EHCI_INSNREG05_ULPI_PORTSEL_SHIFT 24 |
| #define EHCI_INSNREG05_ULPI_OPSEL_SHIFT 22 |
| #define EHCI_INSNREG05_ULPI_REGADD_SHIFT 16 |
| #define EHCI_INSNREG05_ULPI_EXTREGADD_SHIFT 8 |
| #define EHCI_INSNREG05_ULPI_WRDATA_SHIFT 0 |
| |
| #define OMAP3_HS_USB_PORTS 3 |
| |
| enum ehci_hcd_omap_mode { |
| EHCI_HCD_OMAP_MODE_UNKNOWN, |
| EHCI_HCD_OMAP_MODE_PHY, |
| EHCI_HCD_OMAP_MODE_TLL, |
| }; |
| |
| struct omap_hcd { |
| enum ehci_hcd_omap_mode port_mode[OMAP3_HS_USB_PORTS]; |
| unsigned phy_reset:1; |
| |
| /* have to be valid if phy_reset is true and portx is in phy mode */ |
| int reset_gpio_port[OMAP3_HS_USB_PORTS]; |
| }; |
| |
| void omap_usb_utmi_init(struct omap_hcd *omap, u8 tll_channel_mask); |
| int ehci_omap_init(struct omap_hcd *omap); |
| |
| #endif /* __OMAP_EHCI_H */ |