diff options
Diffstat (limited to 'drivers/usb/musb/blackfin_usb.h')
| -rw-r--r-- | drivers/usb/musb/blackfin_usb.h | 99 | 
1 files changed, 99 insertions, 0 deletions
| diff --git a/drivers/usb/musb/blackfin_usb.h b/drivers/usb/musb/blackfin_usb.h new file mode 100644 index 000000000..ab26ca2d5 --- /dev/null +++ b/drivers/usb/musb/blackfin_usb.h @@ -0,0 +1,99 @@ +/* + * 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 <linux/types.h> + +/* 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); +	ureg(pad); +}; + +#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 |