int udc_init(void) { int ret; int ep_loop; ret = musb_platform_init(); if (ret < 0) goto end; /* Configure all the endpoint FIFO's and start usb controller */ musbr = musb_cfg.regs; /* Initialize the endpoints */ for (ep_loop = 0; ep_loop < MAX_ENDPOINT * 2; ep_loop++) { epinfo[ep_loop].epnum = (ep_loop / 2) + 1; epinfo[ep_loop].epdir = ep_loop % 2; /* OUT, IN */ epinfo[ep_loop].epsize = 0; } musb_peri_softconnect(); ret = 0; end: return ret; }
/*Clear OTG bit of CLKGR0,0:device can be accessed*/ REG_CPM_CLKGR0 &= (~(CPM_CLKGR0_OTG)); #ifdef DEBUG serial_puts_info("**************************MUSB REG INFO*******************************\n"); serial_puts_info("CPCCR : "); serial_put_hex(REG_CPM_CPCCR); serial_puts_info("USBCDR : "); serial_put_hex(REG_CPM_USBCDR); serial_puts_info("CPCCR : "); serial_put_hex(REG_CPM_CPCCR); serial_puts_info("CLKGR0 : "); serial_put_hex(REG_CPM_CLKGR0); #endif jz_musb_init(); return; } #endif /*CONFIG_JZ4760*/ void usbloader_init(void) { #if defined(CONFIG_JZ4760) || defined(CONFIG_JZ4760B) || defined(CONFIG_JZ4770) musb_platform_init(); #endif usb_init(); boot_register_poll_func(usb_poll); }