bluetooth: iomux uart2_rts to gpio
authorwdc <wdc@rock-chips.com>
Wed, 13 Jul 2011 03:00:42 +0000 (11:00 +0800)
committerwdc <wdc@rock-chips.com>
Wed, 13 Jul 2011 03:01:29 +0000 (11:01 +0800)
arch/arm/mach-rk29/board-rk29-a22-rfkill.c
arch/arm/mach-rk29/board-rk29-phonesdk-rfkill.c

index 71b3119b0cfc52ab6c3658899bbd0e0a002123f1..c05206c4ce9416578f085055618d470fb82be546 100755 (executable)
@@ -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;
index 71b3119b0cfc52ab6c3658899bbd0e0a002123f1..f06338a8650b62bc18558b85f98a0ca283c7f187 100755 (executable)
@@ -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;