20#ifndef __LINUX_EHCI_HCD_H
21#define __LINUX_EHCI_HCD_H
35#ifdef CONFIG_USB_EHCI_BIG_ENDIAN_DESC
37typedef __u16 __bitwise
__hc16;
45#define EHCI_MAX_ROOT_PORTS 8
57#define ep_bit(ep) (((ep)&0xf)+(((ep)>>7)?16:0))
58#define get_toggle(dev,ep) (((dev)->toggles>>ep_bit(ep))&1)
59#define set_toggle(dev,ep,v) (dev)->toggles = ((dev)->toggles &(~(1<<ep_bit(ep)))) | ((v)<<ep_bit(ep))
94#define DEFAULT_I_TDPS 1024
109#define QTD_NEXT( dma) cpu_to_hc32( (u32)dma)
124#define QTD_TOGGLE (1 << 31)
125#define QTD_LENGTH(tok) (((tok)>>16) & 0x7fff)
126#define QTD_IOC (1 << 15)
127#define QTD_CERR(tok) (((tok)>>10) & 0x3)
128#define QTD_PID(tok) (((tok)>>8) & 0x3)
129#define QTD_STS_ACTIVE (1 << 7)
130#define QTD_STS_HALT (1 << 6)
131#define QTD_STS_DBE (1 << 5)
132#define QTD_STS_BABBLE (1 << 4)
133#define QTD_STS_XACT (1 << 3)
134#define QTD_STS_MMF (1 << 2)
135#define QTD_STS_STS (1 << 1)
136#define QTD_STS_PING (1 << 0)
138#define ACTIVE_BIT(ehci) cpu_to_hc32( QTD_STS_ACTIVE)
139#define HALT_BIT(ehci) cpu_to_hc32( QTD_STS_HALT)
140#define STATUS_BIT(ehci) cpu_to_hc32( QTD_STS_STS)
153#define QTD_MASK(ehci) cpu_to_hc32 ( ~0x1f)
155#define IS_SHORT_READ(token) (QTD_LENGTH (token) != 0 && QTD_PID (token) == 1)
160#define Q_NEXT_TYPE(dma) ((dma) & cpu_to_hc32( 3 << 1))
170#define Q_TYPE_ITD (0 << 1)
171#define Q_TYPE_QH (1 << 1)
172#define Q_TYPE_SITD (2 << 1)
173#define Q_TYPE_FSTN (3 << 1)
176#define QH_NEXT(dma) (cpu_to_hc32( (((u32)dma)&~0x01f)|Q_TYPE_QH))
179#define EHCI_LIST_END() cpu_to_hc32( 1)
212#define QH_HEAD 0x00008000
214#define QH_SMASK 0x000000ff
215#define QH_CMASK 0x0000ff00
216#define QH_HUBADDR 0x007f0000
217#define QH_HUBPORT 0x3f800000
218#define QH_MULT 0xc0000000
234#define NO_FRAME ((unsigned short)~0)
244#define cpu_to_hc32(b) cpu_to_le32(b)
245#define hc32_to_cpu(b) le32_to_cpu(b)
246#define hc32_to_cpup(b) le32_to_cpu(*(b))
286#define STUB_DEBUG_FILES
int ehci_release_ports(struct ehci_hcd *ehci)
s32 ehci_control_message(struct ehci_hcd *ehci, struct ehci_device *dev, u8 bmRequestType, u8 bmRequest, u16 wValue, u16 wIndex, u16 wLength, void *buf)
#define EHCI_MAX_ROOT_PORTS
dma_addr_t ehci_dma_map_bidir(void *buf, size_t len)
s32 USBStorage_Read_Stress(u32 sector, u32 numSectors, void *buffer)
int ehci_open_device(struct ehci_hcd *ehci, int vid, int pid, int fd)
void * ehci_fd_to_dev(struct ehci_hcd *ehci, int fd)
int ehci_close_device(struct ehci_device *dev)
dma_addr_t ehci_dma_map_to(void *buf, size_t len)
void ehci_dma_unmap_bidir(dma_addr_t buf, size_t len)
dma_addr_t ehci_dma_map_from(void *buf, size_t len)
s32 USBStorage_Init(void)
int ehci_reset_port2(struct ehci_hcd *ehci, int port)
s32 USBStorage_Write_Sectors(int device, u32 sector, u32 numSectors, const void *buffer)
void * ehci_maligned(int size, int alignement, int crossing)
int ehci_get_device_list(struct ehci_hcd *ehci, u8 maxdev, u8 b0, u8 *num, u16 *buf)
void ehci_msleep(int time)
int ehci_discover(struct ehci_hcd *ehci)
void ehci_usleep(int time)
void ehci_dma_unmap_from(dma_addr_t buf, size_t len)
s32 USBStorage_Read_Sectors(int device, u32 sector, u32 numSectors, void *buffer)
s32 ehci_bulk_message(struct ehci_hcd *ehci, struct ehci_device *dev, u8 bEndpoint, u16 wLength, void *rpData)
void ehci_dma_unmap_to(dma_addr_t buf, size_t len)
dma_addr_t ehci_virt_to_dma(void *)
union ehci_shadow __attribute__
struct ehci_dbg_port __iomem * debug
struct ehci_caps __iomem * caps
struct ehci_qtd * qtds[EHCI_MAX_QTD]
unsigned long next_statechange
struct ehci_device devices[EHCI_MAX_ROOT_PORTS]
struct ehci_regs __iomem * regs
struct ehci_qtd * qtd_head
u32 transfer_buffer_length
uint8_t u8
8bit unsigned integer
uint16_t u16
16bit unsigned integer
int32_t s32
32bit signed integer
uint32_t u32
32bit unsigned integer