wifi: modify wifi gpio control
authorhwg <hwg@rock-chips.com>
Sun, 16 Sep 2012 04:16:04 +0000 (12:16 +0800)
committerhwg <hwg@rock-chips.com>
Sun, 16 Sep 2012 04:20:24 +0000 (12:20 +0800)
arch/arm/mach-rk30/board-rk30-sdk-sdmmc.c
arch/arm/mach-rk30/board-rk3066b-sdk-sdmmc.c [changed mode: 0644->0755]
drivers/net/wireless/rkusbwifi/wifi_power.c
drivers/net/wireless/rkusbwifi/wifi_power_ops.c

index 0c91aeeaf266396e6bf3ae3a160025d0cc269822..9a070a7914e0bbea238750190df26b22dd905050 100755 (executable)
@@ -230,11 +230,27 @@ static void (*wifi_status_cb)(int card_present, void *dev_id);
 static void *wifi_status_cb_devid;
 
 #ifdef CONFIG_WIFI_CONTROL_FUNC
-//#define RK29SDK_WIFI_BT_GPIO_POWER_N       RK30_PIN3_PD0
-//#define RK29SDK_WIFI_GPIO_RESET_N          RK30_PIN3_PD0
-//#define RK29SDK_BT_GPIO_RESET_N            RK30_PIN3_PD1
+
+//
+// Define wifi module's power and reset gpio, and gpio sensitive level 
+//
+
+#if defined(CONFIG_RK903) || defined(CONFIG_RK901)
 #define RK30SDK_WIFI_GPIO_POWER_N       RK30_PIN3_PD0
-//#define RK30SDK_BT_GPIO_POWER_N         RK30_PIN3_PD1
+#define RK30SDK_WIFI_GPIO_POWER_ENABLE_VALUE GPIO_HIGH 
+#endif
+
+#if defined(CONFIG_RTL8192CU) || defined(CONFIG_RTL8188EU) 
+#define RK30SDK_WIFI_GPIO_POWER_N       RK30_PIN3_PD0
+#define RK30SDK_WIFI_GPIO_POWER_ENABLE_VALUE GPIO_LOW 
+#endif
+
+#if defined(CONFIG_BCM4329) || defined(CONFIG_BCM4319) 
+#define RK30SDK_WIFI_GPIO_POWER_N       RK30_PIN3_PD0
+#define RK30SDK_WIFI_GPIO_POWER_ENABLE_VALUE GPIO_HIGH 
+#define RK30SDK_WIFI_GPIO_RESET_N       RK30_PIN3_PD1
+#define RK30SDK_WIFI_GPIO_RESET_ENABLE_VALUE GPIO_HIGH 
+#endif
 
 #define PREALLOC_WLAN_SEC_NUM           4
 #define PREALLOC_WLAN_BUF_NUM           160
@@ -337,21 +353,18 @@ static int __init rk29sdk_wifi_bt_gpio_control_init(void)
            return -1;
     }
 
-    /*if (gpio_request(RK29SDK_WIFI_GPIO_RESET_N, "wifi reset")) {
+#ifdef RK30SDK_WIFI_GPIO_RESET_N
+    if (gpio_request(RK30SDK_WIFI_GPIO_RESET_N, "wifi reset")) {
            pr_info("%s: request wifi reset gpio failed\n", __func__);
            gpio_free(RK30SDK_WIFI_GPIO_POWER_N);
            return -1;
     }
+#endif    
 
-    if (gpio_request(RK29SDK_BT_GPIO_RESET_N, "bt reset")) {
-          pr_info("%s: request bt reset gpio failed\n", __func__);
-          gpio_free(RK29SDK_WIFI_GPIO_RESET_N);
-          return -1;
-    }*/
-
-    gpio_direction_output(RK30SDK_WIFI_GPIO_POWER_N, GPIO_LOW);
-    //gpio_direction_output(RK29SDK_WIFI_GPIO_RESET_N,    GPIO_LOW);
-    //gpio_direction_output(RK29SDK_BT_GPIO_RESET_N,      GPIO_LOW);
+    gpio_direction_output(RK30SDK_WIFI_GPIO_POWER_N, !RK30SDK_WIFI_GPIO_POWER_ENABLE_VALUE);
+#ifdef RK30SDK_WIFI_GPIO_RESET_N    
+    gpio_direction_output(RK30SDK_WIFI_GPIO_RESET_N, !RK30SDK_WIFI_GPIO_RESET_ENABLE_VALUE);
+#endif    
 
     #if defined(CONFIG_SDMMC1_RK29) && !defined(CONFIG_SDMMC_RK29_OLD)
     
@@ -374,22 +387,24 @@ static int __init rk29sdk_wifi_bt_gpio_control_init(void)
     return 0;
 }
 
-static int rk29sdk_wifi_power(int on)
+int rk29sdk_wifi_power(int on)
 {
         pr_info("%s: %d\n", __func__, on);
         if (on){
-                gpio_set_value(RK30SDK_WIFI_GPIO_POWER_N, GPIO_HIGH);
+                gpio_set_value(RK30SDK_WIFI_GPIO_POWER_N, RK30SDK_WIFI_GPIO_POWER_ENABLE_VALUE);
 
                 #if defined(CONFIG_SDMMC1_RK29) && !defined(CONFIG_SDMMC_RK29_OLD)     
                 rk29_sdmmc_gpio_open(1, 1); //added by xbw at 2011-10-13
                 #endif
 
-                //gpio_set_value(RK29SDK_WIFI_GPIO_RESET_N, GPIO_HIGH);
+#ifdef RK30SDK_WIFI_GPIO_RESET_N
+                gpio_set_value(RK30SDK_WIFI_GPIO_RESET_N, RK30SDK_WIFI_GPIO_RESET_ENABLE_VALUE);
+#endif                
                 mdelay(100);
                 pr_info("wifi turn on power\n");
         }else{
 //                if (!rk29sdk_bt_power_state){
-                        gpio_set_value(RK30SDK_WIFI_GPIO_POWER_N, GPIO_LOW);
+                        gpio_set_value(RK30SDK_WIFI_GPIO_POWER_N, !RK30SDK_WIFI_GPIO_POWER_ENABLE_VALUE);
 
                         #if defined(CONFIG_SDMMC1_RK29) && !defined(CONFIG_SDMMC_RK29_OLD)     
                         rk29_sdmmc_gpio_open(1, 0); //added by xbw at 2011-10-13
@@ -401,19 +416,20 @@ static int rk29sdk_wifi_power(int on)
 //                {
 //                        pr_info("wifi shouldn't shut off power, bt is using it!\n");
 //                }
-                //gpio_set_value(RK29SDK_WIFI_GPIO_RESET_N, GPIO_LOW);
-
+#ifdef RK30SDK_WIFI_GPIO_RESET_N
+                gpio_set_value(RK30SDK_WIFI_GPIO_RESET_N, !RK30SDK_WIFI_GPIO_RESET_ENABLE_VALUE);
+#endif 
         }
 
 //        rk29sdk_wifi_power_state = on;
         return 0;
 }
+EXPORT_SYMBOL(rk29sdk_wifi_power);
 
 static int rk29sdk_wifi_reset_state;
 static int rk29sdk_wifi_reset(int on)
 {
         pr_info("%s: %d\n", __func__, on);
-        //gpio_set_value(RK29SDK_WIFI_GPIO_RESET_N, on);
         //mdelay(100);
         rk29sdk_wifi_reset_state = on;
         return 0;
old mode 100644 (file)
new mode 100755 (executable)
index fc2a97b..361d7e5
@@ -195,15 +195,31 @@ static void rk29_sdmmc_set_iomux(int device_id, unsigned int bus_width)
 #endif
 
 
-//int rk29sdk_wifi_power_state = 0;
-//int rk29sdk_bt_power_state = 0;
 
 #ifdef CONFIG_WIFI_CONTROL_FUNC
-//#define RK29SDK_WIFI_BT_GPIO_POWER_N       RK30_PIN3_PD0
-#define RK29SDK_WIFI_GPIO_RESET_N       RK30_PIN2_PA7
-//#define RK29SDK_BT_GPIO_RESET_N            RK30_PIN3_PD1
-#define RK30SDK_WIFI_GPIO_POWER_N      RK30_PIN3_PD0
-//#define RK30SDK_BT_GPIO_POWER_N         RK30_PIN3_PD1
+
+//
+// Define wifi module's power and reset gpio, and gpio sensitive level 
+//
+
+#if defined(CONFIG_RK903) || defined(CONFIG_RK901)
+#define RK30SDK_WIFI_GPIO_POWER_N       RK30_PIN3_PD0
+#define RK30SDK_WIFI_GPIO_POWER_ENABLE_VALUE GPIO_HIGH 
+#define RK30SDK_WIFI_GPIO_RESET_N       RK30_PIN2_PA7
+#define RK30SDK_WIFI_GPIO_RESET_ENABLE_VALUE GPIO_HIGH 
+#endif
+
+#if defined(CONFIG_RTL8192CU) || defined(CONFIG_RTL8188EU) 
+#define RK30SDK_WIFI_GPIO_POWER_N       RK30_PIN3_PD0
+#define RK30SDK_WIFI_GPIO_POWER_ENABLE_VALUE GPIO_LOW 
+#endif
+
+#if defined(CONFIG_BCM4329) || defined(CONFIG_BCM4319) 
+#define RK30SDK_WIFI_GPIO_POWER_N       RK30_PIN3_PD0
+#define RK30SDK_WIFI_GPIO_POWER_ENABLE_VALUE GPIO_HIGH 
+#define RK30SDK_WIFI_GPIO_RESET_N       RK30_PIN2_PA7
+#define RK30SDK_WIFI_GPIO_RESET_ENABLE_VALUE GPIO_HIGH 
+#endif
 
 #define PREALLOC_WLAN_SEC_NUM           4
 #define PREALLOC_WLAN_BUF_NUM           160
@@ -310,25 +326,19 @@ static int __init rk29sdk_wifi_bt_gpio_control_init(void)
            pr_info("%s: request wifi power gpio failed\n", __func__);
            return -1;
     }
-#ifdef RK29SDK_WIFI_GPIO_RESET_N
-    if (gpio_request(RK29SDK_WIFI_GPIO_RESET_N, "wifi reset")) {
+
+#ifdef RK30SDK_WIFI_GPIO_RESET_N
+    if (gpio_request(RK30SDK_WIFI_GPIO_RESET_N, "wifi reset")) {
            pr_info("%s: request wifi reset gpio failed\n", __func__);
            gpio_free(RK30SDK_WIFI_GPIO_POWER_N);
            return -1;
     }
-#endif
+#endif    
 
-    /*if (gpio_request(RK29SDK_BT_GPIO_RESET_N, "bt reset")) {
-          pr_info("%s: request bt reset gpio failed\n", __func__);
-          gpio_free(RK29SDK_WIFI_GPIO_RESET_N);
-          return -1;
-    }*/
-
-    gpio_direction_output(RK30SDK_WIFI_GPIO_POWER_N, GPIO_LOW);
-#ifdef RK29SDK_WIFI_GPIO_RESET_N
-    gpio_direction_output(RK29SDK_WIFI_GPIO_RESET_N,    GPIO_LOW);
-#endif
-    //gpio_direction_output(RK29SDK_BT_GPIO_RESET_N,      GPIO_LOW);
+    gpio_direction_output(RK30SDK_WIFI_GPIO_POWER_N, !RK30SDK_WIFI_GPIO_POWER_ENABLE_VALUE);
+#ifdef RK30SDK_WIFI_GPIO_RESET_N    
+    gpio_direction_output(RK30SDK_WIFI_GPIO_RESET_N, !RK30SDK_WIFI_GPIO_RESET_ENABLE_VALUE);
+#endif    
 
     #if defined(CONFIG_SDMMC1_RK29) && !defined(CONFIG_SDMMC_RK29_OLD)
     
@@ -351,25 +361,25 @@ static int __init rk29sdk_wifi_bt_gpio_control_init(void)
     return 0;
 }
 
-static int rk29sdk_wifi_power(int on)
+int rk29sdk_wifi_power(int on)
 {
         pr_info("%s: %d\n", __func__, on);
         if (on){
-                gpio_set_value(RK30SDK_WIFI_GPIO_POWER_N, GPIO_HIGH);
+                gpio_set_value(RK30SDK_WIFI_GPIO_POWER_N, RK30SDK_WIFI_GPIO_POWER_ENABLE_VALUE);
                 mdelay(50);
 
                 #if defined(CONFIG_SDMMC1_RK29) && !defined(CONFIG_SDMMC_RK29_OLD)     
                 rk29_sdmmc_gpio_open(1, 1); //added by xbw at 2011-10-13
                 #endif
 
-#ifdef RK29SDK_WIFI_GPIO_RESET_N
-                gpio_set_value(RK29SDK_WIFI_GPIO_RESET_N, GPIO_HIGH);
-#endif
+#ifdef RK30SDK_WIFI_GPIO_RESET_N
+                gpio_set_value(RK30SDK_WIFI_GPIO_RESET_N, RK30SDK_WIFI_GPIO_RESET_ENABLE_VALUE);
+#endif                
                 mdelay(100);
                 pr_info("wifi turn on power\n");
         }else{
 //                if (!rk29sdk_bt_power_state){
-                        gpio_set_value(RK30SDK_WIFI_GPIO_POWER_N, GPIO_LOW);
+                        gpio_set_value(RK30SDK_WIFI_GPIO_POWER_N, !RK30SDK_WIFI_GPIO_POWER_ENABLE_VALUE);
 
                         #if defined(CONFIG_SDMMC1_RK29) && !defined(CONFIG_SDMMC_RK29_OLD)     
                         rk29_sdmmc_gpio_open(1, 0); //added by xbw at 2011-10-13
@@ -381,24 +391,22 @@ static int rk29sdk_wifi_power(int on)
 //                {
 //                        pr_info("wifi shouldn't shut off power, bt is using it!\n");
 //                }
-#ifdef RK29SDK_WIFI_GPIO_RESET_N
-                gpio_set_value(RK29SDK_WIFI_GPIO_RESET_N, GPIO_LOW);
-#endif
+#ifdef RK30SDK_WIFI_GPIO_RESET_N
+                gpio_set_value(RK30SDK_WIFI_GPIO_RESET_N, !RK30SDK_WIFI_GPIO_RESET_ENABLE_VALUE);
+#endif 
 
         }
 
         //rk29sdk_wifi_power_state = on;
         return 0;
 }
+EXPORT_SYMBOL(rk29sdk_wifi_power);
 
 static int rk29sdk_wifi_reset_state;
 static int rk29sdk_wifi_reset(int on)
 {
         pr_info("%s: %d\n", __func__, on);
-#ifdef RK29SDK_WIFI_GPIO_RESET_N
-        gpio_set_value(RK29SDK_WIFI_GPIO_RESET_N, on);
-        mdelay(100);
-#endif
+        //mdelay(100);
         rk29sdk_wifi_reset_state = on;
         return 0;
 }
index 68a9abd981a53e71b17dacc3f9316c6a5d99cd78..a0dd91b7ad5af810838d9942c365b44b4db4fa36 100755 (executable)
@@ -39,19 +39,11 @@ EXPORT_SYMBOL(init_channel_plan);
  */
 struct wifi_power power_gpio = 
 {
-       //POWER_NOT_USE_GPIO, 0, 0, 0, 0, 0 
+       POWER_NOT_USE_GPIO, 0, 0, 0, 0, 0 
 
        // RBOX
        //POWER_USE_GPIO, POWER_GPIO_IOMUX, 
        //GPIO5D6_SDMMC1PWREN_NAME, GPIO5H_GPIO5D6, RK29_PIN5_PD6, GPIO_HIGH 
-
-#if defined(CONFIG_ARCH_RK3066B)
-  //RK3066B M701
-       POWER_USE_GPIO, 0, 
-       0, 0, RK30_PIN3_PD0, GPIO_HIGH
-#else
-       POWER_NOT_USE_GPIO, 0, 0, 0, 0, 0 
-#endif 
 };
 
 /*
index 6897ddd3ffaad20027b445a8e4600a2b8bb3c702..855357498177970ea5c87ef324a92a3806897e75 100644 (file)
@@ -30,6 +30,8 @@ extern struct wifi_power power_gpio;
 extern struct wifi_power power_save_gpio;\r
 extern struct wifi_power power_reset_gpio;\r
 \r
+extern int rk29sdk_wifi_power(int on);\r
+\r
 #define OS_IOMUX(name, value) rk29_mux_api_set((name), (value));\r
 \r
 int wifi_gpio_operate(struct wifi_power *gpio, int flag)\r
@@ -78,7 +80,8 @@ int wifi_turn_on_rtl8192c_card(void)
 #ifdef CONFIG_MACH_RK2928_A720\r
         rk2928_usb_wifi_on();\r
 #else\r
-       wifi_gpio_operate(&power_gpio, GPIO_SWITCH_ON);\r
+       //wifi_gpio_operate(&power_gpio, GPIO_SWITCH_ON);\r
+        rk29sdk_wifi_power(1);\r
 #endif\r
        if (power_gpio.use_gpio != POWER_NOT_USE_GPIO)\r
                msleep(1000);\r
@@ -100,7 +103,8 @@ int wifi_turn_off_card(void)
 #ifdef CONFIG_MACH_RK2928_A720\r
         rk2928_usb_wifi_off();\r
 #else\r
-       wifi_gpio_operate(&power_gpio, GPIO_SWITCH_OFF);\r
+       //wifi_gpio_operate(&power_gpio, GPIO_SWITCH_OFF);\r
+        rk29sdk_wifi_power(0);\r
 #endif\r
        msleep(5);\r
 \r