diff options
author | Johannes Berg <johannes.berg@intel.com> | 2012-05-30 06:36:23 -0400 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2012-06-06 07:25:17 -0400 |
commit | 1280d428ad0f134d1e370a0a0b70793ebcf56742 (patch) | |
tree | 8473d1e36ce0dbc297dc67600a16d7c3ce06538b /drivers/net/wireless/iwlwifi/dvm/main.c | |
parent | 12b78246aa49b72f665601fdc7a44eb75fcf593b (diff) |
iwlwifi: move RF config into NIC config
Since the RF config is done for all devices,
there's no need to keep a separate function
that is called for all devices, move it into
the general NIC config function.
Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Reviewed-by: Wey-Yi W Guy <wey-yi.w.guy@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi/dvm/main.c')
-rw-r--r-- | drivers/net/wireless/iwlwifi/dvm/main.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwlwifi/dvm/main.c b/drivers/net/wireless/iwlwifi/dvm/main.c index c91b66c77972..ec0b77b862a8 100644 --- a/drivers/net/wireless/iwlwifi/dvm/main.c +++ b/drivers/net/wireless/iwlwifi/dvm/main.c | |||
@@ -2027,9 +2027,12 @@ static void iwl_cmd_queue_full(struct iwl_op_mode *op_mode) | |||
2027 | } | 2027 | } |
2028 | } | 2028 | } |
2029 | 2029 | ||
2030 | #define EEPROM_RF_CONFIG_TYPE_MAX 0x3 | ||
2031 | |||
2030 | static void iwl_nic_config(struct iwl_op_mode *op_mode) | 2032 | static void iwl_nic_config(struct iwl_op_mode *op_mode) |
2031 | { | 2033 | { |
2032 | struct iwl_priv *priv = IWL_OP_MODE_GET_DVM(op_mode); | 2034 | struct iwl_priv *priv = IWL_OP_MODE_GET_DVM(op_mode); |
2035 | u16 radio_cfg = priv->eeprom_data->radio_cfg; | ||
2033 | 2036 | ||
2034 | /* SKU Control */ | 2037 | /* SKU Control */ |
2035 | iwl_set_bits_mask(priv->trans, CSR_HW_IF_CONFIG_REG, | 2038 | iwl_set_bits_mask(priv->trans, CSR_HW_IF_CONFIG_REG, |
@@ -2040,6 +2043,34 @@ static void iwl_nic_config(struct iwl_op_mode *op_mode) | |||
2040 | (CSR_HW_REV_DASH(priv->trans->hw_rev) << | 2043 | (CSR_HW_REV_DASH(priv->trans->hw_rev) << |
2041 | CSR_HW_IF_CONFIG_REG_POS_MAC_DASH)); | 2044 | CSR_HW_IF_CONFIG_REG_POS_MAC_DASH)); |
2042 | 2045 | ||
2046 | /* write radio config values to register */ | ||
2047 | if (EEPROM_RF_CFG_TYPE_MSK(radio_cfg) <= EEPROM_RF_CONFIG_TYPE_MAX) { | ||
2048 | u32 reg_val = | ||
2049 | EEPROM_RF_CFG_TYPE_MSK(radio_cfg) << | ||
2050 | CSR_HW_IF_CONFIG_REG_POS_PHY_TYPE | | ||
2051 | EEPROM_RF_CFG_STEP_MSK(radio_cfg) << | ||
2052 | CSR_HW_IF_CONFIG_REG_POS_PHY_STEP | | ||
2053 | EEPROM_RF_CFG_DASH_MSK(radio_cfg) << | ||
2054 | CSR_HW_IF_CONFIG_REG_POS_PHY_DASH; | ||
2055 | |||
2056 | iwl_set_bits_mask(priv->trans, CSR_HW_IF_CONFIG_REG, | ||
2057 | CSR_HW_IF_CONFIG_REG_MSK_PHY_TYPE | | ||
2058 | CSR_HW_IF_CONFIG_REG_MSK_PHY_STEP | | ||
2059 | CSR_HW_IF_CONFIG_REG_MSK_PHY_DASH, reg_val); | ||
2060 | |||
2061 | IWL_INFO(priv, "Radio type=0x%x-0x%x-0x%x\n", | ||
2062 | EEPROM_RF_CFG_TYPE_MSK(radio_cfg), | ||
2063 | EEPROM_RF_CFG_STEP_MSK(radio_cfg), | ||
2064 | EEPROM_RF_CFG_DASH_MSK(radio_cfg)); | ||
2065 | } else { | ||
2066 | WARN_ON(1); | ||
2067 | } | ||
2068 | |||
2069 | /* set CSR_HW_CONFIG_REG for uCode use */ | ||
2070 | iwl_set_bit(priv->trans, CSR_HW_IF_CONFIG_REG, | ||
2071 | CSR_HW_IF_CONFIG_REG_BIT_RADIO_SI | | ||
2072 | CSR_HW_IF_CONFIG_REG_BIT_MAC_SI); | ||
2073 | |||
2043 | priv->lib->nic_config(priv); | 2074 | priv->lib->nic_config(priv); |
2044 | } | 2075 | } |
2045 | 2076 | ||