From a5ee543b51e100e324f1c5f8207567cb20507dac Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E5=BC=A0=E6=99=B4?= Date: Sun, 4 Sep 2011 19:57:00 -0700 Subject: [PATCH] rk29-ddr3sdk:set keygpio pullup/down disable when in sleep --- arch/arm/mach-rk29/board-rk29-ddr3sdk.c | 39 +++++++++++++++++++++++++ arch/arm/mach-rk29/gpio.c | 16 ++++++++-- 2 files changed, 53 insertions(+), 2 deletions(-) mode change 100644 => 100755 arch/arm/mach-rk29/board-rk29-ddr3sdk.c mode change 100644 => 100755 arch/arm/mach-rk29/gpio.c diff --git a/arch/arm/mach-rk29/board-rk29-ddr3sdk.c b/arch/arm/mach-rk29/board-rk29-ddr3sdk.c old mode 100644 new mode 100755 index 49311b77156d..92b6c95e9bb7 --- a/arch/arm/mach-rk29/board-rk29-ddr3sdk.c +++ b/arch/arm/mach-rk29/board-rk29-ddr3sdk.c @@ -164,6 +164,45 @@ struct rk29_nand_platform_data rk29_nand_data = { #define TOUCH_SCREEN_STANDBY_VALUE GPIO_HIGH #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 diff --git a/arch/arm/mach-rk29/gpio.c b/arch/arm/mach-rk29/gpio.c old mode 100644 new mode 100755 index 634e97b28d41..a52071caa03c --- a/arch/arm/mach-rk29/gpio.c +++ b/arch/arm/mach-rk29/gpio.c @@ -550,12 +550,22 @@ void __init rk29_gpio_init(void) } rk29_gpio_irq_setup(); } +__weak void rk29_setgpio_suspend_board(void) +{ +} + +__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; - + + rk29_setgpio_suspend_board(); + for (i = 0; i < MAX_BANK; i++) { struct rk29_gpio_chip *rk29_gpio = &rk29gpio_chip[i]; @@ -572,7 +582,9 @@ 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]; -- 2.34.1