From: 张晴 Date: Mon, 5 Sep 2011 02:57:00 +0000 (-0700) Subject: rk29-ddr3sdk:set keygpio pullup/down disable when in sleep X-Git-Tag: firefly_0821_release~9767^2~41 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=a5ee543b51e100e324f1c5f8207567cb20507dac;p=firefly-linux-kernel-4.4.55.git rk29-ddr3sdk:set keygpio pullup/down disable when in sleep --- 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];