|
@@ -461,54 +461,12 @@ void omap_sram_idle(void)
|
|
|
omap2_clkdm_allow_idle(mpu_pwrdm->pwrdm_clkdms[0]);
|
|
|
}
|
|
|
|
|
|
-/*
|
|
|
- * Check if functional clocks are enabled before entering
|
|
|
- * sleep. This function could be behind CONFIG_PM_DEBUG
|
|
|
- * when all drivers are configuring their sysconfig registers
|
|
|
- * properly and using their clocks properly.
|
|
|
- */
|
|
|
-static int omap3_fclks_active(void)
|
|
|
-{
|
|
|
- u32 fck_core1 = 0, fck_core3 = 0, fck_sgx = 0, fck_dss = 0,
|
|
|
- fck_cam = 0, fck_per = 0, fck_usbhost = 0;
|
|
|
-
|
|
|
- fck_core1 = cm_read_mod_reg(CORE_MOD,
|
|
|
- CM_FCLKEN1);
|
|
|
- if (omap_rev() > OMAP3430_REV_ES1_0) {
|
|
|
- fck_core3 = cm_read_mod_reg(CORE_MOD,
|
|
|
- OMAP3430ES2_CM_FCLKEN3);
|
|
|
- fck_sgx = cm_read_mod_reg(OMAP3430ES2_SGX_MOD,
|
|
|
- CM_FCLKEN);
|
|
|
- fck_usbhost = cm_read_mod_reg(OMAP3430ES2_USBHOST_MOD,
|
|
|
- CM_FCLKEN);
|
|
|
- } else
|
|
|
- fck_sgx = cm_read_mod_reg(GFX_MOD,
|
|
|
- OMAP3430ES2_CM_FCLKEN3);
|
|
|
- fck_dss = cm_read_mod_reg(OMAP3430_DSS_MOD,
|
|
|
- CM_FCLKEN);
|
|
|
- fck_cam = cm_read_mod_reg(OMAP3430_CAM_MOD,
|
|
|
- CM_FCLKEN);
|
|
|
- fck_per = cm_read_mod_reg(OMAP3430_PER_MOD,
|
|
|
- CM_FCLKEN);
|
|
|
-
|
|
|
- /* Ignore UART clocks. These are handled by UART core (serial.c) */
|
|
|
- fck_core1 &= ~(OMAP3430_EN_UART1 | OMAP3430_EN_UART2);
|
|
|
- fck_per &= ~OMAP3430_EN_UART3;
|
|
|
-
|
|
|
- if (fck_core1 | fck_core3 | fck_sgx | fck_dss |
|
|
|
- fck_cam | fck_per | fck_usbhost)
|
|
|
- return 1;
|
|
|
- return 0;
|
|
|
-}
|
|
|
-
|
|
|
int omap3_can_sleep(void)
|
|
|
{
|
|
|
if (!sleep_while_idle)
|
|
|
return 0;
|
|
|
if (!omap_uart_can_sleep())
|
|
|
return 0;
|
|
|
- if (omap3_fclks_active())
|
|
|
- return 0;
|
|
|
return 1;
|
|
|
}
|
|
|
|