I have a problem with trying to enable the USB OTG as a device on a Gumstix Overo Fire (i.e. Omap 3530 with TPS65950). System freezes when I try to access any of the generic USB registers. Am I missing something?
pCmRegs = OALPAtoUA(OMAP_PRCM_CORE_CM_REGS_PA);
SETREG32(&pCmRegs->CM_ICLKEN1_xxx, CM_CLKEN_HSOTGUSB); while (INREG32(&pCmRegs->CM_IDLEST1_xxx) & CM_IDLEST_ST_HSOTGUSB_IDLE);
pUsbOtgRegs = OALPAtoUA(HSUSB_BASEADDRESS + HSUSB_OFFSET_OTG);
SETREG32(&pUsbOtgRegs->OTG_SYSCONFIG, 2); while ((INREG32(&pUsbOtgRegs->OTG_SYSSTATUS) & 1) == 0);
pUsbGenRegs = OALPAtoUA(HSUSB_BASEADDRESS + HSUSB_OFFSET_GEN);
OUTREG8(&pUsbGenRegs->Power, POWER_HSENABLE);
OUTREG32(&pUsbOtgRegs->OTG_INTERFSEL, 1);
CLRREG32(&pUsbOtgRegs->OTG_FORCESTDBY, OTG_FORCESTDY_ENABLEFORCE);
SETREG32(&pUsbOtgRegs->OTG_SYSCONFIG, OTG_SYSCONF_ENABLEWAKEUP);
CLRREG32(&pUsbOtgRegs->OTG_SYSCONFIG, OTG_SYSCONF_M_MASK); SETREG32(&pUsbOtgRegs->OTG_SYSCONFIG, OTG_SYSCONF_M_SMARTSTDBY);
CLRREG32(&pUsbOtgRegs->OTG_SYSCONFIG, OTG_SYSCONF_S_MASK); SETREG32(&pUsbOtgRegs->OTG_SYSCONFIG, OTG_SYSCONF_S_SMARTIDLE);
CLRREG32(&pUsbOtgRegs->OTG_SYSCONFIG, OTG_SYSCONF_AUTOIDLE);
SETREG32(&pUsbOtgRegs->OTG_SYSCONFIG, OTG_SYSCONF_AUTOIDLE);
// freezes here:
OUTREG8(pUsbGenRegs->Index, 0);