static void twl4030_phy_suspend(struct twl4030_usb *twl, int controller_off) { if (twl->asleep) return; twl4030_phy_power(twl, 0); twl->asleep = 1; #if defined(USB_LAT_CONST) && defined(CONFIG_OMAP3_PM) /* Release USB constraint on OFF/RET */ if (twl->usb_power_constraint) constraint_remove(twl->usb_power_constraint); #endif wake_unlock(&twl->wake_lock); return; }
IMG_VOID DisableSystemClocks(SYS_DATA *psSysData) { SYS_SPECIFIC_DATA *psSysSpecData = (SYS_SPECIFIC_DATA *) psSysData->pvSysSpecificData; IMG_BOOL bPowerLock; #if defined(DEBUG) || defined(TIMING) IMG_CPU_PHYADDR TimerRegPhysBase; IMG_HANDLE hTimerDisable; IMG_UINT32 *pui32TimerDisable; #endif PVR_TRACE(("DisableSystemClocks: Disabling System Clocks")); DisableSGXClocks(psSysData); bPowerLock = PowerLockWrappedOnCPU(psSysSpecData); if (bPowerLock) { PowerLockUnwrap(psSysSpecData); } #if defined(PDUMP) && !defined(NO_HARDWARE) && defined(CONSTRAINT_NOTIFICATIONS) { int res; PVR_TRACE(("DisableSystemClocks: Removing SGX OPP constraint")); res = constraint_remove(psSysSpecData->pVdd2Handle); if (res != 0) { PVR_DPF((PVR_DBG_WARNING, "DisableSystemClocks: constraint_remove failed (%d)", res)); } } #endif #if defined(CONSTRAINT_NOTIFICATIONS) UnRegisterConstraintNotifications(); #endif #if defined(DEBUG) || defined(TIMING) TimerRegPhysBase.uiAddr = SYS_TI81xx_GP7TIMER_ENABLE_SYS_PHYS_BASE; pui32TimerDisable = OSMapPhysToLin(TimerRegPhysBase, 4, PVRSRV_HAP_KERNEL_ONLY|PVRSRV_HAP_UNCACHED, &hTimerDisable); if (pui32TimerDisable == IMG_NULL) { PVR_DPF((PVR_DBG_ERROR, "DisableSystemClocks: OSMapPhysToLin failed")); } else { *pui32TimerDisable = 0; OSUnMapPhysToLin(pui32TimerDisable, 4, PVRSRV_HAP_KERNEL_ONLY|PVRSRV_HAP_UNCACHED, hTimerDisable); } clk_disable(psSysSpecData->psGPT11_ICK); clk_disable(psSysSpecData->psGPT11_FCK); #endif #if defined(CONSTRAINT_NOTIFICATIONS) constraint_put(psSysSpecData->pVdd2Handle); #endif if (bPowerLock) { PowerLockWrap(psSysSpecData); } }