/* * Blackfin MUSB HCD (Host Controller Driver) for u-boot * * Copyright (c) 2008-2009 Analog Devices Inc. * * Licensed under the GPL-2 or later. */ #ifndef __BLACKFIN_USB_H__ #define __BLACKFIN_USB_H__ #include /* Every register is 32bit aligned, but only 16bits in size */ #define ureg(name) u16 name; u16 __pad_##name; #define musb_regs musb_regs struct musb_regs { /* common registers */ ureg(faddr) ureg(power) ureg(intrtx) ureg(intrrx) ureg(intrtxe) ureg(intrrxe) ureg(intrusb) ureg(intrusbe) ureg(frame) ureg(index) ureg(testmode) ureg(globintr) ureg(global_ctl) u32 reserved0[3]; /* indexed registers */ ureg(txmaxp) ureg(txcsr) ureg(rxmaxp) ureg(rxcsr) ureg(rxcount) ureg(txtype) ureg(txinterval) ureg(rxtype) ureg(rxinterval) u32 reserved1; ureg(txcount) u32 reserved2[5]; /* fifo */ u16 fifox[32]; /* OTG, dynamic FIFO, version & vendor registers */ u32 reserved3[16]; ureg(devctl) ureg(vbus_irq) ureg(vbus_mask) u32 reserved4[15]; ureg(linkinfo) ureg(vplen) ureg(hseof1) ureg(fseof1) ureg(lseof1) u32 reserved5[41]; /* target address registers */ struct musb_tar_regs { ureg(txmaxp) ureg(txcsr) ureg(rxmaxp) ureg(rxcsr) ureg(rxcount) ureg(txtype) ureg(txinternal) ureg(rxtype) ureg(rxinternal) u32 reserved6; ureg(txcount) u32 reserved7[5]; } tar[8]; } __attribute__((packed)); struct bfin_musb_dma_regs { ureg(interrupt); ureg(control); ureg(addr_low); ureg(addr_high); ureg(count_low); ureg(count_high); u32 reserved0[2]; }; #undef ureg /* EP5-EP7 are the only ones with 1024 byte FIFOs which BULK really needs */ #define MUSB_BULK_EP 5 /* Blackfin FIFO's are static */ #define MUSB_NO_DYNAMIC_FIFO /* No HUB support :( */ #define MUSB_NO_MULTIPOINT #endif