@ -50,6 +50,16 @@ void musb_start(void)
# endif
# endif
}
}
# ifdef MUSB_NO_DYNAMIC_FIFO
# define config_fifo(dir, idx, addr)
# else
# define config_fifo(dir, idx, addr) \
do { \
writeb ( idx , & musbr - > dir # # fifosz ) ; \
writew ( fifoaddr > > 3 , & musbr - > dir # # fifoadd ) ; \
} while ( 0 )
# endif
/*
/*
* This function configures the endpoint configuration . The musb hcd or musb
* This function configures the endpoint configuration . The musb hcd or musb
* device implementation can use this function to configure the endpoints
* device implementation can use this function to configure the endpoints
@ -74,8 +84,7 @@ void musb_configure_ep(struct musb_epinfo *epinfo, u8 cnt)
writeb ( epinfo - > epnum , & musbr - > index ) ;
writeb ( epinfo - > epnum , & musbr - > index ) ;
if ( epinfo - > epdir ) {
if ( epinfo - > epdir ) {
/* Configure fifo size and fifo base address */
/* Configure fifo size and fifo base address */
writeb ( idx , & musbr - > txfifosz ) ;
config_fifo ( tx , idx , fifoaddr ) ;
writew ( fifoaddr > > 3 , & musbr - > txfifoadd ) ;
csr = readw ( & musbr - > txcsr ) ;
csr = readw ( & musbr - > txcsr ) ;
# if defined(CONFIG_MUSB_HCD)
# if defined(CONFIG_MUSB_HCD)
@ -88,8 +97,7 @@ void musb_configure_ep(struct musb_epinfo *epinfo, u8 cnt)
& musbr - > txcsr ) ;
& musbr - > txcsr ) ;
} else {
} else {
/* Configure fifo size and fifo base address */
/* Configure fifo size and fifo base address */
writeb ( idx , & musbr - > rxfifosz ) ;
config_fifo ( rx , idx , fifoaddr ) ;
writew ( fifoaddr > > 3 , & musbr - > rxfifoadd ) ;
csr = readw ( & musbr - > rxcsr ) ;
csr = readw ( & musbr - > rxcsr ) ;
# if defined(CONFIG_MUSB_HCD)
# if defined(CONFIG_MUSB_HCD)
@ -113,6 +121,7 @@ void musb_configure_ep(struct musb_epinfo *epinfo, u8 cnt)
* length - number of bytes to write to FIFO
* length - number of bytes to write to FIFO
* fifo_data - Pointer to data buffer that contains the data to write
* fifo_data - Pointer to data buffer that contains the data to write
*/
*/
__attribute__ ( ( weak ) )
void write_fifo ( u8 ep , u32 length , void * fifo_data )
void write_fifo ( u8 ep , u32 length , void * fifo_data )
{
{
u8 * data = ( u8 * ) fifo_data ;
u8 * data = ( u8 * ) fifo_data ;
@ -132,6 +141,7 @@ void write_fifo(u8 ep, u32 length, void *fifo_data)
* length - number of bytes to read from FIFO
* length - number of bytes to read from FIFO
* fifo_data - pointer to data buffer into which data is read
* fifo_data - pointer to data buffer into which data is read
*/
*/
__attribute__ ( ( weak ) )
void read_fifo ( u8 ep , u32 length , void * fifo_data )
void read_fifo ( u8 ep , u32 length , void * fifo_data )
{
{
u8 * data = ( u8 * ) fifo_data ;
u8 * data = ( u8 * ) fifo_data ;