#include "musb_core.h"
#if defined(CONFIG_USB_OMAP3)
#include "omap3.h"
+#elif defined(CONFIG_USB_AM35X)
+#include "am35x.h"
#elif defined(CONFIG_USB_DAVINCI)
#include "davinci.h"
#endif
static void musb_peri_softconnect(void)
{
u8 power, devctl;
- u8 intrusb;
- u16 intrrx, intrtx;
/* Power off MUSB */
power = readb(&musbr->power);
writeb(power, &musbr->power);
/* Read intr to clear */
- intrusb = readb(&musbr->intrusb);
- intrrx = readw(&musbr->intrrx);
- intrtx = readw(&musbr->intrtx);
+ readb(&musbr->intrusb);
+ readw(&musbr->intrrx);
+ readw(&musbr->intrtx);
udelay(1000 * 1000); /* 1 sec */
static void musb_peri_rx_ep(unsigned int ep)
{
- u16 peri_rxcount = readw(&musbr->ep[ep].epN.rxcount);
+ u16 peri_rxcount;
+ u8 peri_rxcsr = readw(&musbr->ep[ep].epN.rxcsr);
+ if (!(peri_rxcsr & MUSB_RXCSR_RXPKTRDY)) {
+ if (debug_level > 0)
+ serial_printf("ERROR : %s %d without MUSB_RXCSR_RXPKTRDY set\n",
+ __PRETTY_FUNCTION__, ep);
+ return;
+ }
+
+ peri_rxcount = readw(&musbr->ep[ep].epN.rxcount);
if (peri_rxcount) {
struct usb_endpoint_instance *endpoint;
u32 length;
epinfo[id * 2].epsize = endpoint->rcv_packetSize;
}
- musb_configure_ep(&epinfo[0],
- sizeof(epinfo) / sizeof(struct musb_epinfo));
+ musb_configure_ep(&epinfo[0], ARRAY_SIZE(epinfo));
} else {
if (debug_level > 0)
serial_printf("ERROR : %s endpoint request %d "