|
@@ -2452,8 +2452,12 @@ static int __devinit qe_udc_reg_init(struct qe_udc *udc)
|
|
|
struct usb_ctlr __iomem *qe_usbregs;
|
|
|
qe_usbregs = udc->usb_regs;
|
|
|
|
|
|
- /* Init the usb register */
|
|
|
+ /* Spec says that we must enable the USB controller to change mode. */
|
|
|
out_8(&qe_usbregs->usb_usmod, 0x01);
|
|
|
+ /* Mode changed, now disable it, since muram isn't initialized yet. */
|
|
|
+ out_8(&qe_usbregs->usb_usmod, 0x00);
|
|
|
+
|
|
|
+ /* Initialize the rest. */
|
|
|
out_be16(&qe_usbregs->usb_usbmr, 0);
|
|
|
out_8(&qe_usbregs->usb_uscom, 0);
|
|
|
out_be16(&qe_usbregs->usb_usber, USBER_ALL_CLEAR);
|