/* * This function performs Davinci platform specific initialization for usb0. */ int musb_platform_init(void) { u32 revision; /* enable USB VBUS */ enable_vbus(); /* start the on-chip USB phy and its pll */ if (!phy_on()) return -1; /* reset the controller */ dregs = (struct davinci_usb_regs *)DAVINCI_USB0_BASE; writel(1, &dregs->ctrlr); udelay(5000); /* Returns zero if e.g. not clocked */ revision = readl(&dregs->version); if (!revision) return -1; /* Disable all interrupts */ writel(DAVINCI_USB_USBINT_MASK | DAVINCI_USB_RXINT_MASK | DAVINCI_USB_TXINT_MASK , &dregs->intmsksetr); return 0; }
/* * This function performs DA8xx platform specific initialization for usb0. */ int musb_platform_init(void) { u32 revision; /* enable psc for usb2.0 */ lpsc_on(33); /* enable usb vbus */ enable_vbus(); /* reset the controller */ writel(0x1, &da8xx_usb_regs->control); udelay(5000); /* start the on-chip usb phy and its pll */ if (phy_on() == 0) return -1; /* Returns zero if e.g. not clocked */ revision = readl(&da8xx_usb_regs->revision); if (revision == 0) return -1; /* Disable all interrupts */ writel((DA8XX_USB_USBINT_MASK | DA8XX_USB_TXINT_MASK | DA8XX_USB_RXINT_MASK), &da8xx_usb_regs->intmsk_set); return 0; }