.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
#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
#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 //
.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
}
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;
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];
/* 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;
}
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;
cru_writel(clksel0 & ~0x7FC000, CRU_CLKSEL0_CON);
sram_printch('4');
- pm_gpio_suspend();
+
rk29_suspend();
- pm_gpio_resume();
+
sram_printch('4');
/* resume general pll */
}
}
#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;