110 lines
4.0 KiB
C
110 lines
4.0 KiB
C
/*
|
|
* 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 */
|