From c5ae12d52bf887a60e552eb249c73cad61fd273b Mon Sep 17 00:00:00 2001 From: wdc Date: Wed, 13 Jul 2011 11:00:42 +0800 Subject: [PATCH] bluetooth: iomux uart2_rts to gpio --- arch/arm/mach-rk29/board-rk29-a22-rfkill.c | 19 ++++++++++++++++--- .../mach-rk29/board-rk29-phonesdk-rfkill.c | 13 +++++++++++++ 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/arch/arm/mach-rk29/board-rk29-a22-rfkill.c b/arch/arm/mach-rk29/board-rk29-a22-rfkill.c index 71b3119b0cfc..c05206c4ce94 100755 --- a/arch/arm/mach-rk29/board-rk29-a22-rfkill.c +++ b/arch/arm/mach-rk29/board-rk29-a22-rfkill.c @@ -92,16 +92,27 @@ static void timer_hostSleep(unsigned long arg) #ifdef CONFIG_PM static int bcm4329_rfkill_suspend(struct platform_device *pdev, pm_message_t state) -{ - DBG("%s\n",__FUNCTION__); +{ + DBG("%s\n",__FUNCTION__); + + rk29_mux_api_set(GPIO2A7_UART2RTSN_NAME, GPIO2L_GPIO2A7); + gpio_request(RK29_PIN2_PA7, "uart2_rts"); + gpio_direction_output(RK29_PIN2_PA7, 0); + gpio_set_value(RK29_PIN2_PA7, GPIO_HIGH); + return 0; } static int bcm4329_rfkill_resume(struct platform_device *pdev) { - DBG("%s\n",__FUNCTION__); + DBG("%s\n",__FUNCTION__); + btWakeupHostLock(); resetBtHostSleepTimer(); + + gpio_set_value(RK29_PIN2_PA7, GPIO_LOW); + rk29_mux_api_set(GPIO2A7_UART2RTSN_NAME, GPIO2L_UART2_RTS_N); + return 0; } #else @@ -111,6 +122,8 @@ static int bcm4329_rfkill_resume(struct platform_device *pdev) static irqreturn_t bcm4329_wake_host_irq(int irq, void *dev) { + DBG("%s\n",__FUNCTION__); + btWakeupHostLock(); resetBtHostSleepTimer(); return IRQ_HANDLED; diff --git a/arch/arm/mach-rk29/board-rk29-phonesdk-rfkill.c b/arch/arm/mach-rk29/board-rk29-phonesdk-rfkill.c index 71b3119b0cfc..f06338a8650b 100755 --- a/arch/arm/mach-rk29/board-rk29-phonesdk-rfkill.c +++ b/arch/arm/mach-rk29/board-rk29-phonesdk-rfkill.c @@ -94,14 +94,25 @@ static void timer_hostSleep(unsigned long arg) static int bcm4329_rfkill_suspend(struct platform_device *pdev, pm_message_t state) { DBG("%s\n",__FUNCTION__); + + rk29_mux_api_set(GPIO2A7_UART2RTSN_NAME, GPIO2L_GPIO2A7); + gpio_request(RK29_PIN2_PA7, "uart2_rts"); + gpio_direction_output(RK29_PIN2_PA7, 0); + gpio_set_value(RK29_PIN2_PA7, GPIO_HIGH); + return 0; } static int bcm4329_rfkill_resume(struct platform_device *pdev) { DBG("%s\n",__FUNCTION__); + btWakeupHostLock(); resetBtHostSleepTimer(); + + gpio_set_value(RK29_PIN2_PA7, GPIO_LOW); + rk29_mux_api_set(GPIO2A7_UART2RTSN_NAME, GPIO2L_UART2_RTS_N); + return 0; } #else @@ -111,6 +122,8 @@ static int bcm4329_rfkill_resume(struct platform_device *pdev) static irqreturn_t bcm4329_wake_host_irq(int irq, void *dev) { + DBG("%s\n",__FUNCTION__); + btWakeupHostLock(); resetBtHostSleepTimer(); return IRQ_HANDLED; -- 2.34.1