提交 7a2f0f58 编写于 作者: L Luis R. Rodriguez 提交者: John W. Linville

ath9k: split bluetooth hardware coex init into two helpers

Use a helper for 2-wire and another for 3-wire.
Signed-off-by: NLuis R. Rodriguez <lrodriguez@atheros.com>
Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
上级 af03abec
...@@ -225,48 +225,61 @@ static int ath_init_btcoex_info(struct ath_hw *ah, ...@@ -225,48 +225,61 @@ static int ath_init_btcoex_info(struct ath_hw *ah,
return 0; return 0;
} }
int ath9k_hw_btcoex_init(struct ath_hw *ah) static void ath9k_hw_btcoex_init_2wire(struct ath_hw *ah)
{ {
struct ath_btcoex_info *btcoex_info = &ah->btcoex_info; struct ath_btcoex_info *btcoex_info = &ah->btcoex_info;
int ret = 0;
if (btcoex_info->btcoex_scheme == ATH_BTCOEX_CFG_2WIRE) { /* connect bt_active to baseband */
/* connect bt_active to baseband */ REG_CLR_BIT(ah, AR_GPIO_INPUT_EN_VAL,
REG_CLR_BIT(ah, AR_GPIO_INPUT_EN_VAL, (AR_GPIO_INPUT_EN_VAL_BT_PRIORITY_DEF |
(AR_GPIO_INPUT_EN_VAL_BT_PRIORITY_DEF | AR_GPIO_INPUT_EN_VAL_BT_FREQUENCY_DEF));
AR_GPIO_INPUT_EN_VAL_BT_FREQUENCY_DEF));
REG_SET_BIT(ah, AR_GPIO_INPUT_EN_VAL, REG_SET_BIT(ah, AR_GPIO_INPUT_EN_VAL,
AR_GPIO_INPUT_EN_VAL_BT_ACTIVE_BB); AR_GPIO_INPUT_EN_VAL_BT_ACTIVE_BB);
/* Set input mux for bt_active to gpio pin */ /* Set input mux for bt_active to gpio pin */
REG_RMW_FIELD(ah, AR_GPIO_INPUT_MUX1, REG_RMW_FIELD(ah, AR_GPIO_INPUT_MUX1,
AR_GPIO_INPUT_MUX1_BT_ACTIVE, AR_GPIO_INPUT_MUX1_BT_ACTIVE,
btcoex_info->btactive_gpio); btcoex_info->btactive_gpio);
/* Configure the desired gpio port for input */ /* Configure the desired gpio port for input */
ath9k_hw_cfg_gpio_input(ah, btcoex_info->btactive_gpio); ath9k_hw_cfg_gpio_input(ah, btcoex_info->btactive_gpio);
} else { }
/* btcoex 3-wire */
REG_SET_BIT(ah, AR_GPIO_INPUT_EN_VAL, static void ath9k_hw_btcoex_init_3wire(struct ath_hw *ah)
(AR_GPIO_INPUT_EN_VAL_BT_PRIORITY_BB | {
AR_GPIO_INPUT_EN_VAL_BT_ACTIVE_BB)); struct ath_btcoex_info *btcoex_info = &ah->btcoex_info;
/* Set input mux for bt_prority_async and /* btcoex 3-wire */
* bt_active_async to GPIO pins */ REG_SET_BIT(ah, AR_GPIO_INPUT_EN_VAL,
REG_RMW_FIELD(ah, AR_GPIO_INPUT_MUX1, (AR_GPIO_INPUT_EN_VAL_BT_PRIORITY_BB |
AR_GPIO_INPUT_MUX1_BT_ACTIVE, AR_GPIO_INPUT_EN_VAL_BT_ACTIVE_BB));
btcoex_info->btactive_gpio);
REG_RMW_FIELD(ah, AR_GPIO_INPUT_MUX1, /* Set input mux for bt_prority_async and
AR_GPIO_INPUT_MUX1_BT_PRIORITY, * bt_active_async to GPIO pins */
btcoex_info->btpriority_gpio); REG_RMW_FIELD(ah, AR_GPIO_INPUT_MUX1,
AR_GPIO_INPUT_MUX1_BT_ACTIVE,
btcoex_info->btactive_gpio);
/* Configure the desired GPIO ports for input */ REG_RMW_FIELD(ah, AR_GPIO_INPUT_MUX1,
AR_GPIO_INPUT_MUX1_BT_PRIORITY,
btcoex_info->btpriority_gpio);
ath9k_hw_cfg_gpio_input(ah, btcoex_info->btactive_gpio); /* Configure the desired GPIO ports for input */
ath9k_hw_cfg_gpio_input(ah, btcoex_info->btpriority_gpio);
ath9k_hw_cfg_gpio_input(ah, btcoex_info->btactive_gpio);
ath9k_hw_cfg_gpio_input(ah, btcoex_info->btpriority_gpio);
}
int ath9k_hw_btcoex_init(struct ath_hw *ah)
{
struct ath_btcoex_info *btcoex_info = &ah->btcoex_info;
int ret = 0;
if (btcoex_info->btcoex_scheme == ATH_BTCOEX_CFG_2WIRE)
ath9k_hw_btcoex_init_2wire(ah);
else {
ath9k_hw_btcoex_init_3wire(ah);
ret = ath_init_btcoex_info(ah, btcoex_info); ret = ath_init_btcoex_info(ah, btcoex_info);
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册