ath9k: split ath9k_hw_btcoex_enable() into two helpers
authorLuis R. Rodriguez <lrodriguez@atheros.com>
Wed, 9 Sep 2009 11:17:45 +0000 (04:17 -0700)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 7 Oct 2009 20:39:20 +0000 (16:39 -0400)
One for 2-wire and another for 3-wire.

Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/ath9k/btcoex.c

index 6209a56f7a9a88f4d007d6658fc363c1515598e4..61a8e1d95bb9c1ab3b9959923a5dcecf8869ff69 100644 (file)
@@ -117,30 +117,47 @@ void ath9k_hw_btcoex_init_3wire(struct ath_hw *ah)
        ath9k_hw_cfg_gpio_input(ah, btcoex_info->btpriority_gpio);
 }
 
+static void ath9k_hw_btcoex_enable_2wire(struct ath_hw *ah)
+{
+       struct ath_btcoex_info *btcoex_info = &ah->btcoex_info;
+
+       /* Configure the desired GPIO port for TX_FRAME output */
+       ath9k_hw_cfg_output(ah, btcoex_info->wlanactive_gpio,
+                           AR_GPIO_OUTPUT_MUX_AS_TX_FRAME);
+}
+
+static void ath9k_hw_btcoex_enable_3wire(struct ath_hw *ah)
+{
+       struct ath_btcoex_info *btcoex_info = &ah->btcoex_info;
+
+       /*
+        * Program coex mode and weight registers to
+        * enable coex 3-wire
+        */
+       REG_WRITE(ah, AR_BT_COEX_MODE, btcoex_info->bt_coex_mode);
+       REG_WRITE(ah, AR_BT_COEX_WEIGHT, btcoex_info->bt_coex_weights);
+       REG_WRITE(ah, AR_BT_COEX_MODE2, btcoex_info->bt_coex_mode2);
+
+       REG_RMW_FIELD(ah, AR_QUIET1, AR_QUIET1_QUIET_ACK_CTS_ENABLE, 1);
+       REG_RMW_FIELD(ah, AR_PCU_MISC, AR_PCU_BT_ANT_PREVENT_RX, 0);
+
+       ath9k_hw_cfg_output(ah, btcoex_info->wlanactive_gpio,
+                           AR_GPIO_OUTPUT_MUX_AS_RX_CLEAR_EXTERNAL);
+}
+
 void ath9k_hw_btcoex_enable(struct ath_hw *ah)
 {
        struct ath_btcoex_info *btcoex_info = &ah->btcoex_info;
 
-       if (btcoex_info->btcoex_scheme == ATH_BTCOEX_CFG_2WIRE) {
-               /* Configure the desired GPIO port for TX_FRAME output */
-               ath9k_hw_cfg_output(ah, btcoex_info->wlanactive_gpio,
-                               AR_GPIO_OUTPUT_MUX_AS_TX_FRAME);
-       } else {
-               /*
-                * Program coex mode and weight registers to
-                * enable coex 3-wire
-                */
-               REG_WRITE(ah, AR_BT_COEX_MODE, btcoex_info->bt_coex_mode);
-               REG_WRITE(ah, AR_BT_COEX_WEIGHT, btcoex_info->bt_coex_weights);
-               REG_WRITE(ah, AR_BT_COEX_MODE2, btcoex_info->bt_coex_mode2);
-
-               REG_RMW_FIELD(ah, AR_QUIET1,
-                               AR_QUIET1_QUIET_ACK_CTS_ENABLE, 1);
-               REG_RMW_FIELD(ah, AR_PCU_MISC,
-                               AR_PCU_BT_ANT_PREVENT_RX, 0);
-
-               ath9k_hw_cfg_output(ah, btcoex_info->wlanactive_gpio,
-                               AR_GPIO_OUTPUT_MUX_AS_RX_CLEAR_EXTERNAL);
+       switch (btcoex_info->btcoex_scheme) {
+       case ATH_BTCOEX_CFG_NONE:
+               break;
+       case ATH_BTCOEX_CFG_2WIRE:
+               ath9k_hw_btcoex_enable_2wire(ah);
+               break;
+       case ATH_BTCOEX_CFG_3WIRE:
+               ath9k_hw_btcoex_enable_3wire(ah);
+               break;
        }
 
        REG_RMW(ah, AR_GPIO_PDPU,