Merge remote-tracking branch 'origin/develop-3.0-rk30' into develop-3.0
[firefly-linux-kernel-4.4.55.git] / arch / arm / mach-rk29 / pm.c
index 656c6d99173fe2cc27630e629921e97d8ed151af..4040573f8ddfc2ae7ce642a4b3d8f25a292c1995 100755 (executable)
@@ -406,7 +406,12 @@ static int rk29_pm_enter(suspend_state_t state)
 
        sram_printch('0');
        flush_tlb_all();
+       #if defined(CONFIG_RK29_SPI_INSRAM) || defined(CONFIG_RK29_PWM_INSRAM)
        interface_ctr_reg_pread();
+       #endif
+       #if defined(CONFIG_RK29_I2C_INSRAM)
+       i2c_interface_ctr_reg_pread();
+       #endif
 
        /* disable clock */
        clkgate[0] = cru_readl(CRU_CLKGATE0_CON);
@@ -433,6 +438,15 @@ static int rk29_pm_enter(suspend_state_t state)
                   | (1 << CLK_GATE_TPIU)
 #endif
                   ) | clkgate[0], CRU_CLKGATE0_CON);
+
+#ifdef CONFIG_PHONE_INCALL_IS_SUSPEND
+#if defined(CONFIG_SND_RK29_SOC_I2S_8CH)
+       cru_writel(clkgate[0]&(~(1<<CLK_GATE_I2S0)),CRU_CLKGATE0_CON);
+#elif defined(CONFIG_SND_RK29_SOC_I2S_2CH)
+       cru_writel(clkgate[0]&(~(1<<CLK_GATE_I2S1)),CRU_CLKGATE0_CON);
+#endif
+#endif 
+
        cru_writel(~0, CRU_CLKGATE1_CON);
        cru_writel(~((1 << CLK_GATE_GPIO1 % 32)
                   | (1 << CLK_GATE_GPIO2 % 32)
@@ -479,9 +493,9 @@ static int rk29_pm_enter(suspend_state_t state)
        cru_writel(clksel0 & ~0x7FC000, CRU_CLKSEL0_CON);
 
        sram_printch('4');
-       
+       pm_gpio_suspend();
        rk29_suspend();
-       
+       pm_gpio_resume();
        sram_printch('4');
        
        /* resume general pll */