when in sleep remove the processing of gpio to board
author张晴 <zhangqing@rock-chips.com>
Fri, 7 Oct 2011 05:17:03 +0000 (22:17 -0700)
committer张晴 <zhangqing@rock-chips.com>
Fri, 7 Oct 2011 05:17:03 +0000 (22:17 -0700)
arch/arm/mach-rk29/board-rk29-a22.c
arch/arm/mach-rk29/board-rk29-ddr3sdk.c
arch/arm/mach-rk29/board-rk29-phonesdk.c
arch/arm/mach-rk29/gpio.c
arch/arm/mach-rk29/pm.c
arch/arm/mach-rk29/spi_sram.c

index 8b3e12b7110354abfaa0becf42e6d6023260a7b2..9f204db530d0a696b305a2932c3f765ad9a9ef1a 100755 (executable)
@@ -1379,6 +1379,176 @@ struct wm831x_pdata wm831x_platdata = {
        .isink = {&wm831x_regulator_init_isink[0], &wm831x_regulator_init_isink[1]},
 };
 #endif
+#if defined(CONFIG_RK29_GPIO_SUSPEND)
+
+static void gpio_set_request(void)
+{
+       gpio_request(RK29_PIN6_PA0, NULL);
+       gpio_request(RK29_PIN6_PA1, NULL);
+       gpio_request(RK29_PIN6_PA2, NULL);
+       gpio_request(RK29_PIN6_PA3, NULL);
+       gpio_request(RK29_PIN6_PA4, NULL);
+       gpio_request(RK29_PIN6_PA5, NULL);
+       gpio_request(RK29_PIN6_PA6, NULL);
+       
+       gpio_request(RK29_PIN2_PB0, NULL);
+       gpio_request(RK29_PIN2_PB3, NULL);
+       
+       gpio_request(RK29_PIN1_PA4, NULL);
+       gpio_request(RK29_PIN1_PA3, NULL);
+       
+       gpio_request(RK29_PIN2_PC7, NULL);
+       gpio_request(RK29_PIN2_PC6, NULL);
+       gpio_request(RK29_PIN2_PC5, NULL);
+       gpio_request(RK29_PIN2_PC4, NULL);
+       gpio_request(RK29_PIN2_PC3, NULL);
+       gpio_request(RK29_PIN2_PC2, NULL);
+       gpio_request(RK29_PIN2_PC1, NULL);
+       gpio_request(RK29_PIN2_PC0, NULL);
+       
+}
+static void gpio_set_free(void)
+{
+       gpio_free(RK29_PIN6_PA0);
+       gpio_free(RK29_PIN6_PA1);
+       gpio_free(RK29_PIN6_PA2);
+       gpio_free(RK29_PIN6_PA3);
+       gpio_free(RK29_PIN6_PA4);
+       gpio_free(RK29_PIN6_PA5);
+       gpio_free(RK29_PIN6_PA6);
+       
+       gpio_free(RK29_PIN2_PB0);
+       gpio_free(RK29_PIN2_PB3);
+       
+       gpio_free(RK29_PIN1_PA4);
+       gpio_free(RK29_PIN1_PA3);
+       
+       gpio_free(RK29_PIN2_PC7);
+       gpio_free(RK29_PIN2_PC6);
+       gpio_free(RK29_PIN2_PC5);
+       gpio_free(RK29_PIN2_PC4);
+       gpio_free(RK29_PIN2_PC3);
+       gpio_free(RK29_PIN2_PC2);
+       gpio_free(RK29_PIN2_PC1);
+       gpio_free(RK29_PIN2_PC0);
+}
+static void rk29_keygpio_suspend(void)
+{
+       gpio_pull_updown(RK29_PIN6_PA0, 0);
+        gpio_pull_updown(RK29_PIN6_PA1, 0);
+        gpio_pull_updown(RK29_PIN6_PA2, 0);
+        gpio_pull_updown(RK29_PIN6_PA3, 0);
+        gpio_pull_updown(RK29_PIN6_PA4, 0);
+        gpio_pull_updown(RK29_PIN6_PA5, 0);
+        gpio_pull_updown(RK29_PIN6_PA6, 0);//key pullup/pulldown disable
+
+        gpio_pull_updown(RK29_PIN2_PB0, 0);
+        gpio_pull_updown(RK29_PIN2_PB3, 0);
+
+
+}
+static void rk29_keygpio_resume(void)
+{
+       gpio_pull_updown(RK29_PIN6_PA0, 1);
+        gpio_pull_updown(RK29_PIN6_PA1, 1);
+        gpio_pull_updown(RK29_PIN6_PA2, 1);
+        gpio_pull_updown(RK29_PIN6_PA3, 1);
+        gpio_pull_updown(RK29_PIN6_PA4, 1);
+        gpio_pull_updown(RK29_PIN6_PA5, 1);
+        gpio_pull_updown(RK29_PIN6_PA6, 1);//key pullup/pulldown enable
+
+        gpio_pull_updown(RK29_PIN2_PB0, 1);
+        gpio_pull_updown(RK29_PIN2_PB3, 1);
+}
+static void spi_gpio_suspend(void)
+{      
+       rk29_mux_api_set(GPIO1A4_EMMCWRITEPRT_SPI0CS1_NAME,GPIO1L_GPIO1A4);  //set iomux is gpio mode
+       rk29_mux_api_set(GPIO1A3_EMMCDETECTN_SPI1CS1_NAME,GPIO1L_GPIO1A3);
+       
+       rk29_mux_api_set(GPIO2C7_SPI1RXD_NAME,GPIO2H_GPIO2C7);
+       rk29_mux_api_set(GPIO2C6_SPI1TXD_NAME,GPIO2H_GPIO2C6);
+       //rk29_mux_api_set(GPIO2C5_SPI1CSN0_NAME,GPIO2H_GPIO2C5);
+       rk29_mux_api_set(GPIO2C4_SPI1CLK_NAME,GPIO2H_GPIO2C4);
+       rk29_mux_api_set(GPIO2C3_SPI0RXD_NAME,GPIO2H_GPIO2C3);
+       rk29_mux_api_set(GPIO2C2_SPI0TXD_NAME,GPIO2H_GPIO2C2);
+       rk29_mux_api_set(GPIO2C1_SPI0CSN0_NAME,GPIO2H_GPIO2C1);
+       rk29_mux_api_set(GPIO2C0_SPI0CLK_NAME,GPIO2H_GPIO2C0);
+       
+       gpio_direction_input(RK29_PIN1_PA4);             //set gpio is input
+        gpio_direction_input(RK29_PIN1_PA3);
+        gpio_direction_input(RK29_PIN2_PC7);
+        gpio_direction_input(RK29_PIN2_PC6);
+       // gpio_direction_input(RK29_PIN2_PC5);
+        gpio_direction_input(RK29_PIN2_PC4);
+        gpio_direction_input(RK29_PIN2_PC3);
+        gpio_direction_input(RK29_PIN2_PC2);
+        gpio_direction_input(RK29_PIN2_PC1);
+        gpio_direction_input(RK29_PIN2_PC0);
+        
+       gpio_pull_updown(RK29_PIN1_PA4, 0);   //set gpio pullup/down disable
+       gpio_pull_updown(RK29_PIN1_PA3, 0);
+       
+       gpio_pull_updown(RK29_PIN2_PC7, 0);
+       gpio_pull_updown(RK29_PIN2_PC6, 0);
+       //gpio_pull_updown(RK29_PIN2_PC5, 0);
+       gpio_pull_updown(RK29_PIN2_PC4, 0);
+       gpio_pull_updown(RK29_PIN2_PC3, 0);
+       gpio_pull_updown(RK29_PIN2_PC2, 0);
+       gpio_pull_updown(RK29_PIN2_PC1, 0);
+       gpio_pull_updown(RK29_PIN2_PC0, 0);
+       
+}
+static void spi_gpio_resume(void)
+{      
+       gpio_pull_updown(RK29_PIN1_PA4, 1);         //set gpio pullup/down enable
+       gpio_pull_updown(RK29_PIN1_PA3, 1);
+       
+       gpio_pull_updown(RK29_PIN2_PC7, 1);
+       gpio_pull_updown(RK29_PIN2_PC6, 1);
+       //gpio_pull_updown(RK29_PIN2_PC5, 1);
+       gpio_pull_updown(RK29_PIN2_PC4, 1);
+       gpio_pull_updown(RK29_PIN2_PC3, 1);
+       gpio_pull_updown(RK29_PIN2_PC2, 1);
+       gpio_pull_updown(RK29_PIN2_PC1, 1);
+       gpio_pull_updown(RK29_PIN2_PC0, 1);
+
+       rk29_mux_api_set(GPIO1A4_EMMCWRITEPRT_SPI0CS1_NAME,GPIO1L_SPI0_CSN1);   //set iomux is spi mode
+       rk29_mux_api_set(GPIO1A3_EMMCDETECTN_SPI1CS1_NAME,GPIO1L_SPI1_CSN1);
+       
+       rk29_mux_api_set(GPIO2C7_SPI1RXD_NAME,GPIO2H_SPI1_RXD);
+       rk29_mux_api_set(GPIO2C6_SPI1TXD_NAME,GPIO2H_SPI1_TXD);
+       //rk29_mux_api_set(GPIO2C5_SPI1CSN0_NAME,GPIO2H_SPI1_CSN0);
+       rk29_mux_api_set(GPIO2C4_SPI1CLK_NAME, GPIO2H_SPI1_CLK);
+       rk29_mux_api_set(GPIO2C3_SPI0RXD_NAME,GPIO2H_SPI0_RXD);
+       rk29_mux_api_set(GPIO2C2_SPI0TXD_NAME,GPIO2H_SPI0_TXD);
+       rk29_mux_api_set(GPIO2C1_SPI0CSN0_NAME,GPIO2H_SPI0_CSN0);
+       rk29_mux_api_set(GPIO2C0_SPI0CLK_NAME,GPIO2H_SPI0_CLK);
+       
+               
+}
+
+void  rk29_setgpio_suspend_board(void)
+{
+       gpio_set_request();
+       rk29_keygpio_suspend();
+       spi_gpio_suspend();
+       gpio_set_free();
+}
+
+void  rk29_setgpio_resume_board(void)
+{
+       gpio_set_request();
+       rk29_keygpio_resume();
+       spi_gpio_resume();
+       gpio_set_free();
+       
+}
+#else
+void rk29_setgpio_suspend_board(void)
+{}
+void rk29_setgpio_resume_board(void)
+{}
+#endif
 
 
 
index a739fefdf1eca271c4ab437d7f66421fa46bac15..87762c6050d6702d7bc55f5051fab858b3be14d2 100755 (executable)
@@ -167,44 +167,6 @@ struct rk29_nand_platform_data rk29_nand_data = {
 #define TOUCH_SCREEN_DISPLAY_PIN          INVALID_GPIO
 #define TOUCH_SCREEN_DISPLAY_VALUE        GPIO_HIGH
 
-#if 1
-void key_gpio_pullupdown_enable(void)
-{       gpio_pull_updown(RK29_PIN6_PA0, 0);
-        gpio_pull_updown(RK29_PIN6_PA1, 0);
-        gpio_pull_updown(RK29_PIN6_PA2, 0);
-        gpio_pull_updown(RK29_PIN6_PA3, 0);
-        gpio_pull_updown(RK29_PIN6_PA4, 0);
-        gpio_pull_updown(RK29_PIN6_PA5, 0);
-        gpio_pull_updown(RK29_PIN6_PA6, 0);
-
-}
-void key_gpio_pullupdown_disable(void)
-{
-        gpio_pull_updown(RK29_PIN6_PA0, 1);
-        gpio_pull_updown(RK29_PIN6_PA1, 1);
-        gpio_pull_updown(RK29_PIN6_PA2, 1);
-        gpio_pull_updown(RK29_PIN6_PA3, 1);
-        gpio_pull_updown(RK29_PIN6_PA4, 1);
-        gpio_pull_updown(RK29_PIN6_PA5, 1);
-        gpio_pull_updown(RK29_PIN6_PA6, 1);
-}
-void  rk29_setgpio_suspend_board(void)
-{      
-       
-       key_gpio_pullupdown_enable();
-       
-}
-
-void  rk29_setgpio_resume_board(void)
-{       
-       
-        key_gpio_pullupdown_disable();  
-
- }
-#endif 
-
-
-
 #ifdef CONFIG_FB_RK29
 /*****************************************************************************************
  * lcd  devices
@@ -414,6 +376,47 @@ struct platform_device rk29_device_dma_cpy = {
 
 #endif
 
+#if defined(CONFIG_RK29_GPIO_SUSPEND)
+void key_gpio_pullupdown_enable(void)
+{       gpio_pull_updown(RK29_PIN6_PA0, 0);
+        gpio_pull_updown(RK29_PIN6_PA1, 0);
+        gpio_pull_updown(RK29_PIN6_PA2, 0);
+        gpio_pull_updown(RK29_PIN6_PA3, 0);
+        gpio_pull_updown(RK29_PIN6_PA4, 0);
+        gpio_pull_updown(RK29_PIN6_PA5, 0);
+        gpio_pull_updown(RK29_PIN6_PA6, 0);
+
+}
+void key_gpio_pullupdown_disable(void)
+{
+        gpio_pull_updown(RK29_PIN6_PA0, 1);
+        gpio_pull_updown(RK29_PIN6_PA1, 1);
+        gpio_pull_updown(RK29_PIN6_PA2, 1);
+        gpio_pull_updown(RK29_PIN6_PA3, 1);
+        gpio_pull_updown(RK29_PIN6_PA4, 1);
+        gpio_pull_updown(RK29_PIN6_PA5, 1);
+        gpio_pull_updown(RK29_PIN6_PA6, 1);
+}
+void  rk29_setgpio_suspend_board(void)
+{      
+       
+       key_gpio_pullupdown_enable();
+       
+}
+
+void  rk29_setgpio_resume_board(void)
+{       
+       
+        key_gpio_pullupdown_disable();  
+
+ }
+#else
+void rk29_setgpio_suspend_board(void)
+{}
+void rk29_setgpio_resume_board(void)
+{}
+#endif
+
 #if defined(CONFIG_RK_IRDA) || defined(CONFIG_BU92747GUW_CIR)
 #define BU92747GUW_RESET_PIN         RK29_PIN3_PD4// INVALID_GPIO //
 #define BU92747GUW_RESET_MUX_NAME    GPIO3D4_HOSTWRN_NAME//NULL //
index 0388e09ea7e7e3d2d2e2318db890e2e8f03c92e4..2256803f02c72fd97519fed8a405124ade39c0d5 100755 (executable)
@@ -1453,6 +1453,193 @@ struct wm831x_pdata wm831x_platdata = {
        .isink = {&wm831x_regulator_init_isink[0], &wm831x_regulator_init_isink[1]},
 };
 #endif
+#if defined(CONFIG_RK29_GPIO_SUSPEND)
+
+static void gpio_set_request(void)
+{
+       gpio_request(RK29_PIN6_PA0, NULL);
+       gpio_request(RK29_PIN6_PA1, NULL);
+       gpio_request(RK29_PIN6_PA2, NULL);
+       gpio_request(RK29_PIN6_PA3, NULL);
+       gpio_request(RK29_PIN6_PA4, NULL);
+       gpio_request(RK29_PIN6_PA5, NULL);
+       gpio_request(RK29_PIN6_PA6, NULL);
+       
+       gpio_request(RK29_PIN2_PA5, NULL);
+       gpio_request(RK29_PIN2_PA4, NULL);
+       gpio_request(RK29_PIN2_PB0, NULL);
+       gpio_request(RK29_PIN2_PB1, NULL);
+       gpio_request(RK29_PIN2_PB2, NULL);
+       gpio_request(RK29_PIN2_PB3, NULL);
+       
+       gpio_request(RK29_PIN1_PA4, NULL);
+       gpio_request(RK29_PIN1_PA3, NULL);
+       
+       gpio_request(RK29_PIN2_PC7, NULL);
+       gpio_request(RK29_PIN2_PC6, NULL);
+       gpio_request(RK29_PIN2_PC5, NULL);
+       gpio_request(RK29_PIN2_PC4, NULL);
+       gpio_request(RK29_PIN2_PC3, NULL);
+       gpio_request(RK29_PIN2_PC2, NULL);
+       gpio_request(RK29_PIN2_PC1, NULL);
+       gpio_request(RK29_PIN2_PC0, NULL);
+       
+}
+static void gpio_set_free(void)
+{
+       gpio_free(RK29_PIN6_PA0);
+       gpio_free(RK29_PIN6_PA1);
+       gpio_free(RK29_PIN6_PA2);
+       gpio_free(RK29_PIN6_PA3);
+       gpio_free(RK29_PIN6_PA4);
+       gpio_free(RK29_PIN6_PA5);
+       gpio_free(RK29_PIN6_PA6);
+       
+       gpio_free(RK29_PIN2_PA5);
+       gpio_free(RK29_PIN2_PA4);
+       gpio_free(RK29_PIN2_PB0);
+       gpio_free(RK29_PIN2_PB1);
+       gpio_free(RK29_PIN2_PB2);
+       gpio_free(RK29_PIN2_PB3);
+       
+       gpio_free(RK29_PIN1_PA4);
+       gpio_free(RK29_PIN1_PA3);
+       
+       gpio_free(RK29_PIN2_PC7);
+       gpio_free(RK29_PIN2_PC6);
+       gpio_free(RK29_PIN2_PC5);
+       gpio_free(RK29_PIN2_PC4);
+       gpio_free(RK29_PIN2_PC3);
+       gpio_free(RK29_PIN2_PC2);
+       gpio_free(RK29_PIN2_PC1);
+       gpio_free(RK29_PIN2_PC0);
+}
+static void rk29_keygpio_suspend(void)
+{
+       gpio_pull_updown(RK29_PIN6_PA0, 0);
+        gpio_pull_updown(RK29_PIN6_PA1, 0);
+        gpio_pull_updown(RK29_PIN6_PA2, 0);
+        gpio_pull_updown(RK29_PIN6_PA3, 0);
+        gpio_pull_updown(RK29_PIN6_PA4, 0);
+        gpio_pull_updown(RK29_PIN6_PA5, 0);
+        gpio_pull_updown(RK29_PIN6_PA6, 0);//key pullup/pulldown disable
+
+        gpio_pull_updown(RK29_PIN2_PA4, 0);
+        gpio_pull_updown(RK29_PIN2_PA5, 0);
+        gpio_pull_updown(RK29_PIN2_PB0, 0);
+        gpio_pull_updown(RK29_PIN2_PB1, 0);
+        gpio_pull_updown(RK29_PIN2_PB2, 0);
+        gpio_pull_updown(RK29_PIN2_PB3, 0);
+
+
+}
+static void rk29_keygpio_resume(void)
+{
+       gpio_pull_updown(RK29_PIN6_PA0, 1);
+        gpio_pull_updown(RK29_PIN6_PA1, 1);
+        gpio_pull_updown(RK29_PIN6_PA2, 1);
+        gpio_pull_updown(RK29_PIN6_PA3, 1);
+        gpio_pull_updown(RK29_PIN6_PA4, 1);
+        gpio_pull_updown(RK29_PIN6_PA5, 1);
+        gpio_pull_updown(RK29_PIN6_PA6, 1);//key pullup/pulldown enable
+
+        gpio_pull_updown(RK29_PIN2_PA4, 1);
+        gpio_pull_updown(RK29_PIN2_PA5, 1);
+        gpio_pull_updown(RK29_PIN2_PB0, 1);
+        gpio_pull_updown(RK29_PIN2_PB1, 1);
+        gpio_pull_updown(RK29_PIN2_PB2, 1);
+        gpio_pull_updown(RK29_PIN2_PB3, 1);
+}
+static void spi_gpio_suspend(void)
+{      
+       rk29_mux_api_set(GPIO1A4_EMMCWRITEPRT_SPI0CS1_NAME,GPIO1L_GPIO1A4);  //set iomux is gpio mode
+       rk29_mux_api_set(GPIO1A3_EMMCDETECTN_SPI1CS1_NAME,GPIO1L_GPIO1A3);
+       
+       rk29_mux_api_set(GPIO2C7_SPI1RXD_NAME,GPIO2H_GPIO2C7);
+       rk29_mux_api_set(GPIO2C6_SPI1TXD_NAME,GPIO2H_GPIO2C6);
+       //rk29_mux_api_set(GPIO2C5_SPI1CSN0_NAME,GPIO2H_GPIO2C5);
+       rk29_mux_api_set(GPIO2C4_SPI1CLK_NAME,GPIO2H_GPIO2C4);
+       rk29_mux_api_set(GPIO2C3_SPI0RXD_NAME,GPIO2H_GPIO2C3);
+       rk29_mux_api_set(GPIO2C2_SPI0TXD_NAME,GPIO2H_GPIO2C2);
+       rk29_mux_api_set(GPIO2C1_SPI0CSN0_NAME,GPIO2H_GPIO2C1);
+       rk29_mux_api_set(GPIO2C0_SPI0CLK_NAME,GPIO2H_GPIO2C0);
+       
+       gpio_direction_input(RK29_PIN1_PA4);             //set gpio is input
+        gpio_direction_input(RK29_PIN1_PA3);
+        gpio_direction_input(RK29_PIN2_PC7);
+        gpio_direction_input(RK29_PIN2_PC6);
+       // gpio_direction_input(RK29_PIN2_PC5);
+        gpio_direction_input(RK29_PIN2_PC4);
+        gpio_direction_input(RK29_PIN2_PC3);
+        gpio_direction_input(RK29_PIN2_PC2);
+        gpio_direction_input(RK29_PIN2_PC1);
+        gpio_direction_input(RK29_PIN2_PC0);
+        
+       gpio_pull_updown(RK29_PIN1_PA4, 0);   //set gpio pullup/down disable
+       gpio_pull_updown(RK29_PIN1_PA3, 0);
+       
+       gpio_pull_updown(RK29_PIN2_PC7, 0);
+       gpio_pull_updown(RK29_PIN2_PC6, 0);
+       //gpio_pull_updown(RK29_PIN2_PC5, 0);
+       gpio_pull_updown(RK29_PIN2_PC4, 0);
+       gpio_pull_updown(RK29_PIN2_PC3, 0);
+       gpio_pull_updown(RK29_PIN2_PC2, 0);
+       gpio_pull_updown(RK29_PIN2_PC1, 0);
+       gpio_pull_updown(RK29_PIN2_PC0, 0);
+       
+}
+static void spi_gpio_resume(void)
+{      
+       gpio_pull_updown(RK29_PIN1_PA4, 1);         //set gpio pullup/down enable
+       gpio_pull_updown(RK29_PIN1_PA3, 1);
+       
+       gpio_pull_updown(RK29_PIN2_PC7, 1);
+       gpio_pull_updown(RK29_PIN2_PC6, 1);
+       //gpio_pull_updown(RK29_PIN2_PC5, 1);
+       gpio_pull_updown(RK29_PIN2_PC4, 1);
+       gpio_pull_updown(RK29_PIN2_PC3, 1);
+       gpio_pull_updown(RK29_PIN2_PC2, 1);
+       gpio_pull_updown(RK29_PIN2_PC1, 1);
+       gpio_pull_updown(RK29_PIN2_PC0, 1);
+
+       rk29_mux_api_set(GPIO1A4_EMMCWRITEPRT_SPI0CS1_NAME,GPIO1L_SPI0_CSN1);   //set iomux is spi mode
+       rk29_mux_api_set(GPIO1A3_EMMCDETECTN_SPI1CS1_NAME,GPIO1L_SPI1_CSN1);
+       
+       rk29_mux_api_set(GPIO2C7_SPI1RXD_NAME,GPIO2H_SPI1_RXD);
+       rk29_mux_api_set(GPIO2C6_SPI1TXD_NAME,GPIO2H_SPI1_TXD);
+       //rk29_mux_api_set(GPIO2C5_SPI1CSN0_NAME,GPIO2H_SPI1_CSN0);
+       rk29_mux_api_set(GPIO2C4_SPI1CLK_NAME, GPIO2H_SPI1_CLK);
+       rk29_mux_api_set(GPIO2C3_SPI0RXD_NAME,GPIO2H_SPI0_RXD);
+       rk29_mux_api_set(GPIO2C2_SPI0TXD_NAME,GPIO2H_SPI0_TXD);
+       rk29_mux_api_set(GPIO2C1_SPI0CSN0_NAME,GPIO2H_SPI0_CSN0);
+       rk29_mux_api_set(GPIO2C0_SPI0CLK_NAME,GPIO2H_SPI0_CLK);
+       
+               
+}
+
+void  rk29_setgpio_suspend_board(void)
+{
+       gpio_set_request();
+       rk29_keygpio_suspend();
+       spi_gpio_suspend();
+       gpio_set_free();
+       
+}
+
+void  rk29_setgpio_resume_board(void)
+{
+       gpio_set_request();
+       rk29_keygpio_resume();
+       spi_gpio_resume();
+       gpio_set_free();
+       
+}
+#else
+void rk29_setgpio_suspend_board(void)
+{}
+void rk29_setgpio_resume_board(void)
+{}
+#endif
 
 
 
index a52071caa03c1bc9c64ba01ebc7026ec6278ef84..71c6391f7e30bae21d6cedfdf578627e70cc653e 100755 (executable)
@@ -550,16 +550,12 @@ void __init rk29_gpio_init(void)
        }
        rk29_gpio_irq_setup();
 }
-__weak void rk29_setgpio_suspend_board(void)
-{
-}
 
-__weak void rk29_setgpio_resume_board(void)
-{
+__weak void rk29_setgpio_suspend_board(void);
 
-}
-#ifdef CONFIG_PM
+__weak void rk29_setgpio_resume_board(void);
 
+#ifdef CONFIG_PM
 static int rk29_gpio_suspend(struct sys_device *dev, pm_message_t mesg)
 {
        unsigned i;
@@ -582,9 +578,6 @@ static int rk29_gpio_suspend(struct sys_device *dev, pm_message_t mesg)
 static int rk29_gpio_resume(struct sys_device *dev)
 {
        unsigned i;
-       
-       rk29_setgpio_resume_board();
-       
        for (i = 0; i < MAX_BANK; i++) {
                struct rk29_gpio_chip *rk29_gpio = &rk29gpio_chip[i];
 
@@ -594,7 +587,7 @@ static int rk29_gpio_resume(struct sys_device *dev)
                /* keep enable for resume irq */
                rk29_gpio_write(rk29_gpio->regbase, GPIO_INTEN, rk29_gpio->saved_wakeup | (rk29_gpio->suspend_wakeup & rk29_gpio_read(rk29_gpio->regbase, GPIO_INT_STATUS)));
        }
-
+       rk29_setgpio_resume_board();
        return 0;
 }
 
index 7c0962532b6f2f04551e09e57ce76a90ce58c1ba..4023154d9c917a0b1d8f6db405a946dc2e5072a1 100755 (executable)
@@ -364,7 +364,7 @@ static void dump_io_pull(void)
 extern void vfp_save_state(void *location, u32 fpexc);
 extern void vfp_load_state(void *location, u32 fpexc);
 // extern  __sramdata u64  saveptr[33];
-u32  saveptr[2][60]={};
+static u32  saveptr[2][60]={};
 void  neon_powerdomain_off(void)
 {
        int ret,i=0;
@@ -504,9 +504,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 */
index 6805cd67267fd1827f47ca3375eea86c52032182..7e49d6ee3e0ab2a428dd7ffae4b32211adbba56c 100755 (executable)
@@ -410,179 +410,10 @@ void __sramfunc pm_gpio_set(unsigned gpio,eGPIOPinDirection_t direction,eGPIOPin
        }
 }
 #endif
-/*****************************************gpio ctr*********************************************/
-#if defined(CONFIG_RK29_GPIO_SUSPEND)
-#define GRF_GPIO0_DIR     0x000
-#define GRF_GPIO1_DIR     0x004
-#define GRF_GPIO2_DIR     0x008
-#define GRF_GPIO3_DIR     0x00c
-#define GRF_GPIO4_DIR     0x010
-#define GRF_GPIO5_DIR     0x014
-
-
-#define GRF_GPIO0_DO      0x018
-#define GRF_GPIO1_DO      0x01c
-#define GRF_GPIO2_DO      0x020
-#define GRF_GPIO3_DO      0x024
-#define GRF_GPIO4_DO      0x028
-#define GRF_GPIO5_DO      0x02c
-
-#define GRF_GPIO0_EN      0x030
-#define GRF_GPIO1_EN      0x034
-#define GRF_GPIO2_EN      0x038
-#define GRF_GPIO3_EN      0x03c
-#define GRF_GPIO4_EN      0x040
-#define GRF_GPIO5_EN      0x044
-
-
-#define GRF_GPIO0L_IOMUX  0x048
-#define GRF_GPIO0H_IOMUX  0x04c
-#define GRF_GPIO1L_IOMUX  0x050
-#define GRF_GPIO1H_IOMUX  0x054
-#define GRF_GPIO2L_IOMUX  0x058
-#define GRF_GPIO2H_IOMUX  0x05c
-#define GRF_GPIO3L_IOMUX  0x060
-#define GRF_GPIO3H_IOMUX  0x064
-#define GRF_GPIO4L_IOMUX  0x068
-#define GRF_GPIO4H_IOMUX  0x06c
-#define GRF_GPIO5L_IOMUX  0x070
-#define GRF_GPIO5H_IOMUX  0x074
-
-typedef struct GPIO_IOMUX
-{
-    unsigned int GPIOL_IOMUX;
-    unsigned int GPIOH_IOMUX;
-}GPIO_IOMUX_PM;
-
-//GRF Registers
-typedef  struct REG_FILE_GRF
-{
-   unsigned int GRF_GPIO_DIR[6];
-   unsigned int GRF_GPIO_DO[6];
-   unsigned int GRF_GPIO_EN[6];
-   GPIO_IOMUX_PM GRF_GPIO_IOMUX[6];
-   unsigned int GRF_GPIO_PULL[7];
-} GRF_REG_SAVE;
-
-
-static GRF_REG_SAVE  pm_grf;
-int __sramdata crumode;
- u32 __sramdata gpio2_pull,gpio6_pull;
-//static GRF_REG_SAVE __sramdata pm_grf;
-static void  pm_keygpio_prepare(void)
-{      
-       gpio6_pull = grf_readl(GRF_GPIO6_PULL);
-       gpio2_pull = grf_readl(GRF_GPIO2_PULL);
-}
- void  pm_keygpio_sdk_suspend(void)
-{
-       grf_writel(gpio6_pull|0x7f,GRF_GPIO6_PULL);//key pullup/pulldown disable
-       grf_writel(gpio2_pull|0x00000f30,GRF_GPIO2_PULL);
-}
- void  pm_keygpio_sdk_resume(void)
-{
-       grf_writel(gpio6_pull,GRF_GPIO6_PULL);//key pullup/pulldown enable
-       grf_writel(gpio2_pull,GRF_GPIO2_PULL);
-}
- void  pm_keygpio_a22_suspend(void)
-{
-       grf_writel(gpio6_pull|0x7f,GRF_GPIO6_PULL);//key pullup/pulldown disable
-       grf_writel(gpio2_pull|0x00000900,GRF_GPIO2_PULL);
-}
- void  pm_keygpio_a22_resume(void)
-{
-       grf_writel(gpio6_pull,GRF_GPIO6_PULL);//key pullup/pulldown enable
-       grf_writel(gpio2_pull,GRF_GPIO2_PULL);
-}
-
-
-static void  pm_spi_gpio_prepare(void)
-{
-       pm_grf.GRF_GPIO_IOMUX[1].GPIOL_IOMUX = grf_readl(GRF_GPIO1L_IOMUX);
-       pm_grf.GRF_GPIO_IOMUX[2].GPIOH_IOMUX = grf_readl(GRF_GPIO2H_IOMUX);
-
-       pm_grf.GRF_GPIO_PULL[1] = grf_readl(GRF_GPIO1_PULL);
-       pm_grf.GRF_GPIO_PULL[2] = grf_readl(GRF_GPIO2_PULL);
-
-       pm_grf.GRF_GPIO_EN[1] = grf_readl(GRF_GPIO1_EN);
-       pm_grf.GRF_GPIO_EN[2] = grf_readl(GRF_GPIO2_EN);
-}
-
- void  pm_spi_gpio_suspend(void)
-{
-       int io1L_iomux;
-       int io2H_iomux;
-       int io1_pull,io2_pull;
-       int io1_en,io2_en;
-
-       pm_spi_gpio_prepare();
-       
-       io1L_iomux = grf_readl(GRF_GPIO1L_IOMUX);
-       io2H_iomux = grf_readl(GRF_GPIO2H_IOMUX);
-
-       grf_writel(io1L_iomux&(~((0x03<<6)|(0x03 <<8))), GRF_GPIO1L_IOMUX);
-       grf_writel(io2H_iomux&0xffff0000, GRF_GPIO2H_IOMUX);
-
-       io1_pull = grf_readl(GRF_GPIO1_PULL);
-       io2_pull = grf_readl(GRF_GPIO2_PULL);
-       
-       grf_writel(io1_pull|0x18,GRF_GPIO1_PULL);
-       grf_writel(io2_pull|0x00ff0000,GRF_GPIO2_PULL);
-
-       io1_en = grf_readl(GRF_GPIO1_EN);
-       io2_en = grf_readl(GRF_GPIO2_EN);
-
-       grf_writel(io1_en|0x18,GRF_GPIO1_EN);
-       grf_writel(io2_en|0x00ff0000,GRF_GPIO2_EN);
-}
-
- void  pm_spi_gpio_resume(void)
-{
-       grf_writel(pm_grf.GRF_GPIO_EN[1],GRF_GPIO1_EN);
-       grf_writel(pm_grf.GRF_GPIO_EN[2],GRF_GPIO2_EN);
-       grf_writel(pm_grf.GRF_GPIO_PULL[1],GRF_GPIO1_PULL);
-       grf_writel(pm_grf.GRF_GPIO_PULL[2],GRF_GPIO2_PULL);
-
-       grf_writel(pm_grf.GRF_GPIO_IOMUX[1].GPIOL_IOMUX, GRF_GPIO1L_IOMUX);
-       grf_writel(pm_grf.GRF_GPIO_IOMUX[2].GPIOH_IOMUX, GRF_GPIO2H_IOMUX);
-}
-       
-void pm_gpio_suspend(void)
-{
-       pm_spi_gpio_suspend(); // spi  pullup/pulldown  disable....
-       #if defined(CONFIG_MACH_RK29_PHONESDK)
-       {       pm_keygpio_sdk_suspend();// key  pullup/pulldown  disable.....
-       }       
-       #endif
-       #if defined(CONFIG_MACH_RK29_A22)
-       {       pm_keygpio_a22_suspend();// key  pullup/pulldown  disable.....
-       }       
-       #endif
-}
-void pm_gpio_resume(void)
-{
-       pm_spi_gpio_resume(); // spi  pullup/pulldown  enable.....
-       #if defined(CONFIG_MACH_RK29_PHONESDK)
-       {       pm_keygpio_sdk_resume();// key  pullup/pulldown  enable.....
-       }
-       #endif
-       #if defined(CONFIG_MACH_RK29_A22)
-       {       pm_keygpio_a22_resume();// key  pullup/pulldown  enable.....
-       }
-       #endif
-}
-#else
-void pm_gpio_suspend(void)
-{}
-void pm_gpio_resume(void)
-{}
-#endif
-
-
 /*************************************************32k**************************************/
 
 #ifdef CONFIG_RK29_CLK_SWITCH_TO_32K
-
+static int __sramdata crumode;
 void __sramfunc pm_clk_switch_32k(void)
 {
        int vol;