aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/wireless/iwlwifi/dvm/calib.c14
-rw-r--r--drivers/net/wireless/iwlwifi/dvm/debugfs.c12
-rw-r--r--drivers/net/wireless/iwlwifi/dvm/dev.h2
-rw-r--r--drivers/net/wireless/iwlwifi/dvm/devices.c8
-rw-r--r--drivers/net/wireless/iwlwifi/dvm/lib.c8
-rw-r--r--drivers/net/wireless/iwlwifi/dvm/mac80211.c12
-rw-r--r--drivers/net/wireless/iwlwifi/dvm/main.c57
-rw-r--r--drivers/net/wireless/iwlwifi/dvm/rs.c44
-rw-r--r--drivers/net/wireless/iwlwifi/dvm/rxon.c4
-rw-r--r--drivers/net/wireless/iwlwifi/dvm/scan.c8
-rw-r--r--drivers/net/wireless/iwlwifi/dvm/sta.c12
-rw-r--r--drivers/net/wireless/iwlwifi/dvm/tx.c6
-rw-r--r--drivers/net/wireless/iwlwifi/dvm/ucode.c12
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-config.h8
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-eeprom-parse.c84
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-eeprom-parse.h45
-rw-r--r--drivers/net/wireless/iwlwifi/pcie/1000.c8
-rw-r--r--drivers/net/wireless/iwlwifi/pcie/2000.c16
-rw-r--r--drivers/net/wireless/iwlwifi/pcie/5000.c12
-rw-r--r--drivers/net/wireless/iwlwifi/pcie/6000.c28
20 files changed, 214 insertions, 186 deletions
diff --git a/drivers/net/wireless/iwlwifi/dvm/calib.c b/drivers/net/wireless/iwlwifi/dvm/calib.c
index f2dd671d7dc..de54713b680 100644
--- a/drivers/net/wireless/iwlwifi/dvm/calib.c
+++ b/drivers/net/wireless/iwlwifi/dvm/calib.c
@@ -833,14 +833,14 @@ static void iwl_find_disconn_antenna(struct iwl_priv *priv, u32* average_sig,
833 * To be safe, simply mask out any chains that we know 833 * To be safe, simply mask out any chains that we know
834 * are not on the device. 834 * are not on the device.
835 */ 835 */
836 active_chains &= priv->eeprom_data->valid_rx_ant; 836 active_chains &= priv->nvm_data->valid_rx_ant;
837 837
838 num_tx_chains = 0; 838 num_tx_chains = 0;
839 for (i = 0; i < NUM_RX_CHAINS; i++) { 839 for (i = 0; i < NUM_RX_CHAINS; i++) {
840 /* loops on all the bits of 840 /* loops on all the bits of
841 * priv->hw_setting.valid_tx_ant */ 841 * priv->hw_setting.valid_tx_ant */
842 u8 ant_msk = (1 << i); 842 u8 ant_msk = (1 << i);
843 if (!(priv->eeprom_data->valid_tx_ant & ant_msk)) 843 if (!(priv->nvm_data->valid_tx_ant & ant_msk))
844 continue; 844 continue;
845 845
846 num_tx_chains++; 846 num_tx_chains++;
@@ -854,7 +854,7 @@ static void iwl_find_disconn_antenna(struct iwl_priv *priv, u32* average_sig,
854 * connect the first valid tx chain 854 * connect the first valid tx chain
855 */ 855 */
856 first_chain = 856 first_chain =
857 find_first_chain(priv->eeprom_data->valid_tx_ant); 857 find_first_chain(priv->nvm_data->valid_tx_ant);
858 data->disconn_array[first_chain] = 0; 858 data->disconn_array[first_chain] = 0;
859 active_chains |= BIT(first_chain); 859 active_chains |= BIT(first_chain);
860 IWL_DEBUG_CALIB(priv, 860 IWL_DEBUG_CALIB(priv,
@@ -864,13 +864,13 @@ static void iwl_find_disconn_antenna(struct iwl_priv *priv, u32* average_sig,
864 } 864 }
865 } 865 }
866 866
867 if (active_chains != priv->eeprom_data->valid_rx_ant && 867 if (active_chains != priv->nvm_data->valid_rx_ant &&
868 active_chains != priv->chain_noise_data.active_chains) 868 active_chains != priv->chain_noise_data.active_chains)
869 IWL_DEBUG_CALIB(priv, 869 IWL_DEBUG_CALIB(priv,
870 "Detected that not all antennas are connected! " 870 "Detected that not all antennas are connected! "
871 "Connected: %#x, valid: %#x.\n", 871 "Connected: %#x, valid: %#x.\n",
872 active_chains, 872 active_chains,
873 priv->eeprom_data->valid_rx_ant); 873 priv->nvm_data->valid_rx_ant);
874 874
875 /* Save for use within RXON, TX, SCAN commands, etc. */ 875 /* Save for use within RXON, TX, SCAN commands, etc. */
876 data->active_chains = active_chains; 876 data->active_chains = active_chains;
@@ -1055,7 +1055,7 @@ void iwl_chain_noise_calibration(struct iwl_priv *priv)
1055 priv->cfg->bt_params->advanced_bt_coexist) { 1055 priv->cfg->bt_params->advanced_bt_coexist) {
1056 /* Disable disconnected antenna algorithm for advanced 1056 /* Disable disconnected antenna algorithm for advanced
1057 bt coex, assuming valid antennas are connected */ 1057 bt coex, assuming valid antennas are connected */
1058 data->active_chains = priv->eeprom_data->valid_rx_ant; 1058 data->active_chains = priv->nvm_data->valid_rx_ant;
1059 for (i = 0; i < NUM_RX_CHAINS; i++) 1059 for (i = 0; i < NUM_RX_CHAINS; i++)
1060 if (!(data->active_chains & (1<<i))) 1060 if (!(data->active_chains & (1<<i)))
1061 data->disconn_array[i] = 1; 1061 data->disconn_array[i] = 1;
@@ -1086,7 +1086,7 @@ void iwl_chain_noise_calibration(struct iwl_priv *priv)
1086 1086
1087 iwlagn_gain_computation( 1087 iwlagn_gain_computation(
1088 priv, average_noise, 1088 priv, average_noise,
1089 find_first_chain(priv->eeprom_data->valid_rx_ant)); 1089 find_first_chain(priv->nvm_data->valid_rx_ant));
1090 1090
1091 /* Some power changes may have been made during the calibration. 1091 /* Some power changes may have been made during the calibration.
1092 * Update and commit the RXON 1092 * Update and commit the RXON
diff --git a/drivers/net/wireless/iwlwifi/dvm/debugfs.c b/drivers/net/wireless/iwlwifi/dvm/debugfs.c
index 769a08bca86..5b9533eef54 100644
--- a/drivers/net/wireless/iwlwifi/dvm/debugfs.c
+++ b/drivers/net/wireless/iwlwifi/dvm/debugfs.c
@@ -305,7 +305,7 @@ static ssize_t iwl_dbgfs_nvm_read(struct file *file,
305 int pos = 0, ofs = 0, buf_size = 0; 305 int pos = 0, ofs = 0, buf_size = 0;
306 const u8 *ptr; 306 const u8 *ptr;
307 char *buf; 307 char *buf;
308 u16 eeprom_ver; 308 u16 nvm_ver;
309 size_t eeprom_len = priv->eeprom_blob_size; 309 size_t eeprom_len = priv->eeprom_blob_size;
310 buf_size = 4 * eeprom_len + 256; 310 buf_size = 4 * eeprom_len + 256;
311 311
@@ -321,9 +321,9 @@ static ssize_t iwl_dbgfs_nvm_read(struct file *file,
321 if (!buf) 321 if (!buf)
322 return -ENOMEM; 322 return -ENOMEM;
323 323
324 eeprom_ver = priv->eeprom_data->eeprom_version; 324 nvm_ver = priv->nvm_data->nvm_version;
325 pos += scnprintf(buf + pos, buf_size - pos, 325 pos += scnprintf(buf + pos, buf_size - pos,
326 "NVM version: 0x%x\n", eeprom_ver); 326 "NVM version: 0x%x\n", nvm_ver);
327 for (ofs = 0 ; ofs < eeprom_len ; ofs += 16) { 327 for (ofs = 0 ; ofs < eeprom_len ; ofs += 16) {
328 pos += scnprintf(buf + pos, buf_size - pos, "0x%.4x ", ofs); 328 pos += scnprintf(buf + pos, buf_size - pos, "0x%.4x ", ofs);
329 hex_dump_to_buffer(ptr + ofs, 16 , 16, 2, buf + pos, 329 hex_dump_to_buffer(ptr + ofs, 16 , 16, 2, buf + pos,
@@ -1333,17 +1333,17 @@ static ssize_t iwl_dbgfs_ucode_tx_stats_read(struct file *file,
1333 if (tx->tx_power.ant_a || tx->tx_power.ant_b || tx->tx_power.ant_c) { 1333 if (tx->tx_power.ant_a || tx->tx_power.ant_b || tx->tx_power.ant_c) {
1334 pos += scnprintf(buf + pos, bufsz - pos, 1334 pos += scnprintf(buf + pos, bufsz - pos,
1335 "tx power: (1/2 dB step)\n"); 1335 "tx power: (1/2 dB step)\n");
1336 if ((priv->eeprom_data->valid_tx_ant & ANT_A) && 1336 if ((priv->nvm_data->valid_tx_ant & ANT_A) &&
1337 tx->tx_power.ant_a) 1337 tx->tx_power.ant_a)
1338 pos += scnprintf(buf + pos, bufsz - pos, 1338 pos += scnprintf(buf + pos, bufsz - pos,
1339 fmt_hex, "antenna A:", 1339 fmt_hex, "antenna A:",
1340 tx->tx_power.ant_a); 1340 tx->tx_power.ant_a);
1341 if ((priv->eeprom_data->valid_tx_ant & ANT_B) && 1341 if ((priv->nvm_data->valid_tx_ant & ANT_B) &&
1342 tx->tx_power.ant_b) 1342 tx->tx_power.ant_b)
1343 pos += scnprintf(buf + pos, bufsz - pos, 1343 pos += scnprintf(buf + pos, bufsz - pos,
1344 fmt_hex, "antenna B:", 1344 fmt_hex, "antenna B:",
1345 tx->tx_power.ant_b); 1345 tx->tx_power.ant_b);
1346 if ((priv->eeprom_data->valid_tx_ant & ANT_C) && 1346 if ((priv->nvm_data->valid_tx_ant & ANT_C) &&
1347 tx->tx_power.ant_c) 1347 tx->tx_power.ant_c)
1348 pos += scnprintf(buf + pos, bufsz - pos, 1348 pos += scnprintf(buf + pos, bufsz - pos,
1349 fmt_hex, "antenna C:", 1349 fmt_hex, "antenna C:",
diff --git a/drivers/net/wireless/iwlwifi/dvm/dev.h b/drivers/net/wireless/iwlwifi/dvm/dev.h
index 8141f91c372..fce0f4376fe 100644
--- a/drivers/net/wireless/iwlwifi/dvm/dev.h
+++ b/drivers/net/wireless/iwlwifi/dvm/dev.h
@@ -844,7 +844,7 @@ struct iwl_priv {
844 void *wowlan_sram; 844 void *wowlan_sram;
845#endif /* CONFIG_IWLWIFI_DEBUGFS */ 845#endif /* CONFIG_IWLWIFI_DEBUGFS */
846 846
847 struct iwl_eeprom_data *eeprom_data; 847 struct iwl_nvm_data *nvm_data;
848 /* eeprom blob for debugfs/testmode */ 848 /* eeprom blob for debugfs/testmode */
849 u8 *eeprom_blob; 849 u8 *eeprom_blob;
850 size_t eeprom_blob_size; 850 size_t eeprom_blob_size;
diff --git a/drivers/net/wireless/iwlwifi/dvm/devices.c b/drivers/net/wireless/iwlwifi/dvm/devices.c
index 349c205d5f6..f837912e462 100644
--- a/drivers/net/wireless/iwlwifi/dvm/devices.c
+++ b/drivers/net/wireless/iwlwifi/dvm/devices.c
@@ -305,8 +305,8 @@ static s32 iwl_temp_calib_to_offset(struct iwl_priv *priv)
305{ 305{
306 u16 temperature, voltage; 306 u16 temperature, voltage;
307 307
308 temperature = le16_to_cpu(priv->eeprom_data->kelvin_temperature); 308 temperature = le16_to_cpu(priv->nvm_data->kelvin_temperature);
309 voltage = le16_to_cpu(priv->eeprom_data->kelvin_voltage); 309 voltage = le16_to_cpu(priv->nvm_data->kelvin_voltage);
310 310
311 /* offset = temp - volt / coeff */ 311 /* offset = temp - volt / coeff */
312 return (s32)(temperature - 312 return (s32)(temperature -
@@ -460,13 +460,13 @@ static void iwl6000_nic_config(struct iwl_priv *priv)
460 break; 460 break;
461 case IWL_DEVICE_FAMILY_6050: 461 case IWL_DEVICE_FAMILY_6050:
462 /* Indicate calibration version to uCode. */ 462 /* Indicate calibration version to uCode. */
463 if (priv->eeprom_data->calib_version >= 6) 463 if (priv->nvm_data->calib_version >= 6)
464 iwl_set_bit(priv->trans, CSR_GP_DRIVER_REG, 464 iwl_set_bit(priv->trans, CSR_GP_DRIVER_REG,
465 CSR_GP_DRIVER_REG_BIT_CALIB_VERSION6); 465 CSR_GP_DRIVER_REG_BIT_CALIB_VERSION6);
466 break; 466 break;
467 case IWL_DEVICE_FAMILY_6150: 467 case IWL_DEVICE_FAMILY_6150:
468 /* Indicate calibration version to uCode. */ 468 /* Indicate calibration version to uCode. */
469 if (priv->eeprom_data->calib_version >= 6) 469 if (priv->nvm_data->calib_version >= 6)
470 iwl_set_bit(priv->trans, CSR_GP_DRIVER_REG, 470 iwl_set_bit(priv->trans, CSR_GP_DRIVER_REG,
471 CSR_GP_DRIVER_REG_BIT_CALIB_VERSION6); 471 CSR_GP_DRIVER_REG_BIT_CALIB_VERSION6);
472 iwl_set_bit(priv->trans, CSR_GP_DRIVER_REG, 472 iwl_set_bit(priv->trans, CSR_GP_DRIVER_REG,
diff --git a/drivers/net/wireless/iwlwifi/dvm/lib.c b/drivers/net/wireless/iwlwifi/dvm/lib.c
index 7e59be4b89b..6ff46605ad4 100644
--- a/drivers/net/wireless/iwlwifi/dvm/lib.c
+++ b/drivers/net/wireless/iwlwifi/dvm/lib.c
@@ -59,7 +59,7 @@ int iwlagn_send_tx_power(struct iwl_priv *priv)
59 /* half dBm need to multiply */ 59 /* half dBm need to multiply */
60 tx_power_cmd.global_lmt = (s8)(2 * priv->tx_power_user_lmt); 60 tx_power_cmd.global_lmt = (s8)(2 * priv->tx_power_user_lmt);
61 61
62 if (tx_power_cmd.global_lmt > priv->eeprom_data->max_tx_pwr_half_dbm) { 62 if (tx_power_cmd.global_lmt > priv->nvm_data->max_tx_pwr_half_dbm) {
63 /* 63 /*
64 * For the newer devices which using enhanced/extend tx power 64 * For the newer devices which using enhanced/extend tx power
65 * table in EEPROM, the format is in half dBm. driver need to 65 * table in EEPROM, the format is in half dBm. driver need to
@@ -72,7 +72,7 @@ int iwlagn_send_tx_power(struct iwl_priv *priv)
72 * half-dBm format), lower the tx power based on EEPROM 72 * half-dBm format), lower the tx power based on EEPROM
73 */ 73 */
74 tx_power_cmd.global_lmt = 74 tx_power_cmd.global_lmt =
75 priv->eeprom_data->max_tx_pwr_half_dbm; 75 priv->nvm_data->max_tx_pwr_half_dbm;
76 } 76 }
77 tx_power_cmd.flags = IWLAGN_TX_POWER_NO_CLOSED; 77 tx_power_cmd.flags = IWLAGN_TX_POWER_NO_CLOSED;
78 tx_power_cmd.srv_chan_lmt = IWLAGN_TX_POWER_AUTO; 78 tx_power_cmd.srv_chan_lmt = IWLAGN_TX_POWER_AUTO;
@@ -159,7 +159,7 @@ int iwlagn_txfifo_flush(struct iwl_priv *priv)
159 IWL_PAN_SCD_MGMT_MSK | 159 IWL_PAN_SCD_MGMT_MSK |
160 IWL_PAN_SCD_MULTICAST_MSK; 160 IWL_PAN_SCD_MULTICAST_MSK;
161 161
162 if (priv->eeprom_data->sku & EEPROM_SKU_CAP_11N_ENABLE) 162 if (priv->nvm_data->sku_cap_11n_enable)
163 flush_cmd.queue_control |= IWL_AGG_TX_QUEUE_MSK; 163 flush_cmd.queue_control |= IWL_AGG_TX_QUEUE_MSK;
164 164
165 IWL_DEBUG_INFO(priv, "queue control: 0x%x\n", 165 IWL_DEBUG_INFO(priv, "queue control: 0x%x\n",
@@ -825,7 +825,7 @@ void iwlagn_set_rxon_chain(struct iwl_priv *priv, struct iwl_rxon_context *ctx)
825 if (priv->chain_noise_data.active_chains) 825 if (priv->chain_noise_data.active_chains)
826 active_chains = priv->chain_noise_data.active_chains; 826 active_chains = priv->chain_noise_data.active_chains;
827 else 827 else
828 active_chains = priv->eeprom_data->valid_rx_ant; 828 active_chains = priv->nvm_data->valid_rx_ant;
829 829
830 if (priv->cfg->bt_params && 830 if (priv->cfg->bt_params &&
831 priv->cfg->bt_params->advanced_bt_coexist && 831 priv->cfg->bt_params->advanced_bt_coexist &&
diff --git a/drivers/net/wireless/iwlwifi/dvm/mac80211.c b/drivers/net/wireless/iwlwifi/dvm/mac80211.c
index a275eb902b7..5b0877a043a 100644
--- a/drivers/net/wireless/iwlwifi/dvm/mac80211.c
+++ b/drivers/net/wireless/iwlwifi/dvm/mac80211.c
@@ -164,7 +164,7 @@ int iwlagn_mac_setup_register(struct iwl_priv *priv,
164 hw->max_tx_aggregation_subframes = LINK_QUAL_AGG_FRAME_LIMIT_DEF; 164 hw->max_tx_aggregation_subframes = LINK_QUAL_AGG_FRAME_LIMIT_DEF;
165 */ 165 */
166 166
167 if (priv->eeprom_data->sku & EEPROM_SKU_CAP_11N_ENABLE) 167 if (priv->nvm_data->sku_cap_11n_enable)
168 hw->flags |= IEEE80211_HW_SUPPORTS_DYNAMIC_SMPS | 168 hw->flags |= IEEE80211_HW_SUPPORTS_DYNAMIC_SMPS |
169 IEEE80211_HW_SUPPORTS_STATIC_SMPS; 169 IEEE80211_HW_SUPPORTS_STATIC_SMPS;
170 170
@@ -242,12 +242,12 @@ int iwlagn_mac_setup_register(struct iwl_priv *priv,
242 242
243 hw->max_listen_interval = IWL_CONN_MAX_LISTEN_INTERVAL; 243 hw->max_listen_interval = IWL_CONN_MAX_LISTEN_INTERVAL;
244 244
245 if (priv->eeprom_data->bands[IEEE80211_BAND_2GHZ].n_channels) 245 if (priv->nvm_data->bands[IEEE80211_BAND_2GHZ].n_channels)
246 priv->hw->wiphy->bands[IEEE80211_BAND_2GHZ] = 246 priv->hw->wiphy->bands[IEEE80211_BAND_2GHZ] =
247 &priv->eeprom_data->bands[IEEE80211_BAND_2GHZ]; 247 &priv->nvm_data->bands[IEEE80211_BAND_2GHZ];
248 if (priv->eeprom_data->bands[IEEE80211_BAND_5GHZ].n_channels) 248 if (priv->nvm_data->bands[IEEE80211_BAND_5GHZ].n_channels)
249 priv->hw->wiphy->bands[IEEE80211_BAND_5GHZ] = 249 priv->hw->wiphy->bands[IEEE80211_BAND_5GHZ] =
250 &priv->eeprom_data->bands[IEEE80211_BAND_5GHZ]; 250 &priv->nvm_data->bands[IEEE80211_BAND_5GHZ];
251 251
252 hw->wiphy->hw_version = priv->trans->hw_id; 252 hw->wiphy->hw_version = priv->trans->hw_id;
253 253
@@ -654,7 +654,7 @@ static int iwlagn_mac_ampdu_action(struct ieee80211_hw *hw,
654 IWL_DEBUG_HT(priv, "A-MPDU action on addr %pM tid %d\n", 654 IWL_DEBUG_HT(priv, "A-MPDU action on addr %pM tid %d\n",
655 sta->addr, tid); 655 sta->addr, tid);
656 656
657 if (!(priv->eeprom_data->sku & EEPROM_SKU_CAP_11N_ENABLE)) 657 if (!(priv->nvm_data->sku_cap_11n_enable))
658 return -EACCES; 658 return -EACCES;
659 659
660 IWL_DEBUG_MAC80211(priv, "enter\n"); 660 IWL_DEBUG_MAC80211(priv, "enter\n");
diff --git a/drivers/net/wireless/iwlwifi/dvm/main.c b/drivers/net/wireless/iwlwifi/dvm/main.c
index ac2681cd9b3..8f11198eb83 100644
--- a/drivers/net/wireless/iwlwifi/dvm/main.c
+++ b/drivers/net/wireless/iwlwifi/dvm/main.c
@@ -185,7 +185,7 @@ int iwlagn_send_beacon_cmd(struct iwl_priv *priv)
185 rate = info->control.rates[0].idx; 185 rate = info->control.rates[0].idx;
186 186
187 priv->mgmt_tx_ant = iwl_toggle_tx_ant(priv, priv->mgmt_tx_ant, 187 priv->mgmt_tx_ant = iwl_toggle_tx_ant(priv, priv->mgmt_tx_ant,
188 priv->eeprom_data->valid_tx_ant); 188 priv->nvm_data->valid_tx_ant);
189 rate_flags = iwl_ant_idx_to_flags(priv->mgmt_tx_ant); 189 rate_flags = iwl_ant_idx_to_flags(priv->mgmt_tx_ant);
190 190
191 /* In mac80211, rates for 5 GHz start at 0 */ 191 /* In mac80211, rates for 5 GHz start at 0 */
@@ -776,7 +776,7 @@ int iwl_alive_start(struct iwl_priv *priv)
776 ieee80211_wake_queues(priv->hw); 776 ieee80211_wake_queues(priv->hw);
777 777
778 /* Configure Tx antenna selection based on H/W config */ 778 /* Configure Tx antenna selection based on H/W config */
779 iwlagn_send_tx_ant_config(priv, priv->eeprom_data->valid_tx_ant); 779 iwlagn_send_tx_ant_config(priv, priv->nvm_data->valid_tx_ant);
780 780
781 if (iwl_is_associated_ctx(ctx) && !priv->wowlan) { 781 if (iwl_is_associated_ctx(ctx) && !priv->wowlan) {
782 struct iwl_rxon_cmd *active_rxon = 782 struct iwl_rxon_cmd *active_rxon =
@@ -1191,30 +1191,38 @@ static void iwl_option_config(struct iwl_priv *priv)
1191 1191
1192static int iwl_eeprom_init_hw_params(struct iwl_priv *priv) 1192static int iwl_eeprom_init_hw_params(struct iwl_priv *priv)
1193{ 1193{
1194 if (priv->eeprom_data->sku & EEPROM_SKU_CAP_11N_ENABLE && 1194 struct iwl_nvm_data *data = priv->nvm_data;
1195 char *debug_msg;
1196
1197 if (data->sku_cap_11n_enable &&
1195 !priv->cfg->ht_params) { 1198 !priv->cfg->ht_params) {
1196 IWL_ERR(priv, "Invalid 11n configuration\n"); 1199 IWL_ERR(priv, "Invalid 11n configuration\n");
1197 return -EINVAL; 1200 return -EINVAL;
1198 } 1201 }
1199 1202
1200 if (!priv->eeprom_data->sku) { 1203 if (!data->sku_cap_11n_enable && !data->sku_cap_band_24GHz_enable &&
1204 !data->sku_cap_band_52GHz_enable) {
1201 IWL_ERR(priv, "Invalid device sku\n"); 1205 IWL_ERR(priv, "Invalid device sku\n");
1202 return -EINVAL; 1206 return -EINVAL;
1203 } 1207 }
1204 1208
1205 IWL_DEBUG_INFO(priv, "Device SKU: 0x%X\n", priv->eeprom_data->sku); 1209 debug_msg = "Device SKU: 24GHz %s %s, 52GHz %s %s, 11.n %s %s\n";
1210 IWL_DEBUG_INFO(priv, debug_msg,
1211 data->sku_cap_band_24GHz_enable ? "" : "NOT", "enabled",
1212 data->sku_cap_band_52GHz_enable ? "" : "NOT", "enabled",
1213 data->sku_cap_11n_enable ? "" : "NOT", "enabled");
1206 1214
1207 priv->hw_params.tx_chains_num = 1215 priv->hw_params.tx_chains_num =
1208 num_of_ant(priv->eeprom_data->valid_tx_ant); 1216 num_of_ant(data->valid_tx_ant);
1209 if (priv->cfg->rx_with_siso_diversity) 1217 if (priv->cfg->rx_with_siso_diversity)
1210 priv->hw_params.rx_chains_num = 1; 1218 priv->hw_params.rx_chains_num = 1;
1211 else 1219 else
1212 priv->hw_params.rx_chains_num = 1220 priv->hw_params.rx_chains_num =
1213 num_of_ant(priv->eeprom_data->valid_rx_ant); 1221 num_of_ant(data->valid_rx_ant);
1214 1222
1215 IWL_DEBUG_INFO(priv, "Valid Tx ant: 0x%X, Valid Rx ant: 0x%X\n", 1223 IWL_DEBUG_INFO(priv, "Valid Tx ant: 0x%X, Valid Rx ant: 0x%X\n",
1216 priv->eeprom_data->valid_tx_ant, 1224 data->valid_tx_ant,
1217 priv->eeprom_data->valid_rx_ant); 1225 data->valid_rx_ant);
1218 1226
1219 return 0; 1227 return 0;
1220} 1228}
@@ -1374,24 +1382,24 @@ static struct iwl_op_mode *iwl_op_mode_dvm_start(struct iwl_trans *trans,
1374 /* Reset chip to save power until we load uCode during "up". */ 1382 /* Reset chip to save power until we load uCode during "up". */
1375 iwl_trans_stop_hw(priv->trans, false); 1383 iwl_trans_stop_hw(priv->trans, false);
1376 1384
1377 priv->eeprom_data = iwl_parse_eeprom_data(priv->trans->dev, priv->cfg, 1385 priv->nvm_data = iwl_parse_eeprom_data(priv->trans->dev, priv->cfg,
1378 priv->eeprom_blob, 1386 priv->eeprom_blob,
1379 priv->eeprom_blob_size); 1387 priv->eeprom_blob_size);
1380 if (!priv->eeprom_data) 1388 if (!priv->nvm_data)
1381 goto out_free_eeprom_blob; 1389 goto out_free_eeprom_blob;
1382 1390
1383 if (iwl_eeprom_check_version(priv->eeprom_data, priv->trans)) 1391 if (iwl_nvm_check_version(priv->nvm_data, priv->trans))
1384 goto out_free_eeprom; 1392 goto out_free_eeprom;
1385 1393
1386 if (iwl_eeprom_init_hw_params(priv)) 1394 if (iwl_eeprom_init_hw_params(priv))
1387 goto out_free_eeprom; 1395 goto out_free_eeprom;
1388 1396
1389 /* extract MAC Address */ 1397 /* extract MAC Address */
1390 memcpy(priv->addresses[0].addr, priv->eeprom_data->hw_addr, ETH_ALEN); 1398 memcpy(priv->addresses[0].addr, priv->nvm_data->hw_addr, ETH_ALEN);
1391 IWL_DEBUG_INFO(priv, "MAC address: %pM\n", priv->addresses[0].addr); 1399 IWL_DEBUG_INFO(priv, "MAC address: %pM\n", priv->addresses[0].addr);
1392 priv->hw->wiphy->addresses = priv->addresses; 1400 priv->hw->wiphy->addresses = priv->addresses;
1393 priv->hw->wiphy->n_addresses = 1; 1401 priv->hw->wiphy->n_addresses = 1;
1394 num_mac = priv->eeprom_data->n_hw_addrs; 1402 num_mac = priv->nvm_data->n_hw_addrs;
1395 if (num_mac > 1) { 1403 if (num_mac > 1) {
1396 memcpy(priv->addresses[1].addr, priv->addresses[0].addr, 1404 memcpy(priv->addresses[1].addr, priv->addresses[0].addr,
1397 ETH_ALEN); 1405 ETH_ALEN);
@@ -1404,7 +1412,7 @@ static struct iwl_op_mode *iwl_op_mode_dvm_start(struct iwl_trans *trans,
1404 ************************/ 1412 ************************/
1405 iwl_set_hw_params(priv); 1413 iwl_set_hw_params(priv);
1406 1414
1407 if (!(priv->eeprom_data->sku & EEPROM_SKU_CAP_IPAN_ENABLE)) { 1415 if (!(priv->nvm_data->sku_cap_ipan_enable)) {
1408 IWL_DEBUG_INFO(priv, "Your EEPROM disabled PAN"); 1416 IWL_DEBUG_INFO(priv, "Your EEPROM disabled PAN");
1409 ucode_flags &= ~IWL_UCODE_TLV_FLAGS_PAN; 1417 ucode_flags &= ~IWL_UCODE_TLV_FLAGS_PAN;
1410 /* 1418 /*
@@ -1486,7 +1494,7 @@ out_destroy_workqueue:
1486out_free_eeprom_blob: 1494out_free_eeprom_blob:
1487 kfree(priv->eeprom_blob); 1495 kfree(priv->eeprom_blob);
1488out_free_eeprom: 1496out_free_eeprom:
1489 iwl_free_eeprom_data(priv->eeprom_data); 1497 iwl_free_nvm_data(priv->nvm_data);
1490out_free_hw: 1498out_free_hw:
1491 ieee80211_free_hw(priv->hw); 1499 ieee80211_free_hw(priv->hw);
1492out: 1500out:
@@ -1506,7 +1514,7 @@ static void iwl_op_mode_dvm_stop(struct iwl_op_mode *op_mode)
1506 iwl_tt_exit(priv); 1514 iwl_tt_exit(priv);
1507 1515
1508 kfree(priv->eeprom_blob); 1516 kfree(priv->eeprom_blob);
1509 iwl_free_eeprom_data(priv->eeprom_data); 1517 iwl_free_nvm_data(priv->nvm_data);
1510 1518
1511 /*netif_stop_queue(dev); */ 1519 /*netif_stop_queue(dev); */
1512 flush_workqueue(priv->workqueue); 1520 flush_workqueue(priv->workqueue);
@@ -1980,7 +1988,6 @@ static void iwl_cmd_queue_full(struct iwl_op_mode *op_mode)
1980static void iwl_nic_config(struct iwl_op_mode *op_mode) 1988static void iwl_nic_config(struct iwl_op_mode *op_mode)
1981{ 1989{
1982 struct iwl_priv *priv = IWL_OP_MODE_GET_DVM(op_mode); 1990 struct iwl_priv *priv = IWL_OP_MODE_GET_DVM(op_mode);
1983 u16 radio_cfg = priv->eeprom_data->radio_cfg;
1984 1991
1985 /* SKU Control */ 1992 /* SKU Control */
1986 iwl_set_bits_mask(priv->trans, CSR_HW_IF_CONFIG_REG, 1993 iwl_set_bits_mask(priv->trans, CSR_HW_IF_CONFIG_REG,
@@ -1992,13 +1999,13 @@ static void iwl_nic_config(struct iwl_op_mode *op_mode)
1992 CSR_HW_IF_CONFIG_REG_POS_MAC_DASH)); 1999 CSR_HW_IF_CONFIG_REG_POS_MAC_DASH));
1993 2000
1994 /* write radio config values to register */ 2001 /* write radio config values to register */
1995 if (EEPROM_RF_CFG_TYPE_MSK(radio_cfg) <= EEPROM_RF_CONFIG_TYPE_MAX) { 2002 if (priv->nvm_data->radio_cfg_type <= EEPROM_RF_CONFIG_TYPE_MAX) {
1996 u32 reg_val = 2003 u32 reg_val =
1997 EEPROM_RF_CFG_TYPE_MSK(radio_cfg) << 2004 priv->nvm_data->radio_cfg_type <<
1998 CSR_HW_IF_CONFIG_REG_POS_PHY_TYPE | 2005 CSR_HW_IF_CONFIG_REG_POS_PHY_TYPE |
1999 EEPROM_RF_CFG_STEP_MSK(radio_cfg) << 2006 priv->nvm_data->radio_cfg_step <<
2000 CSR_HW_IF_CONFIG_REG_POS_PHY_STEP | 2007 CSR_HW_IF_CONFIG_REG_POS_PHY_STEP |
2001 EEPROM_RF_CFG_DASH_MSK(radio_cfg) << 2008 priv->nvm_data->radio_cfg_dash <<
2002 CSR_HW_IF_CONFIG_REG_POS_PHY_DASH; 2009 CSR_HW_IF_CONFIG_REG_POS_PHY_DASH;
2003 2010
2004 iwl_set_bits_mask(priv->trans, CSR_HW_IF_CONFIG_REG, 2011 iwl_set_bits_mask(priv->trans, CSR_HW_IF_CONFIG_REG,
@@ -2007,9 +2014,9 @@ static void iwl_nic_config(struct iwl_op_mode *op_mode)
2007 CSR_HW_IF_CONFIG_REG_MSK_PHY_DASH, reg_val); 2014 CSR_HW_IF_CONFIG_REG_MSK_PHY_DASH, reg_val);
2008 2015
2009 IWL_INFO(priv, "Radio type=0x%x-0x%x-0x%x\n", 2016 IWL_INFO(priv, "Radio type=0x%x-0x%x-0x%x\n",
2010 EEPROM_RF_CFG_TYPE_MSK(radio_cfg), 2017 priv->nvm_data->radio_cfg_type,
2011 EEPROM_RF_CFG_STEP_MSK(radio_cfg), 2018 priv->nvm_data->radio_cfg_step,
2012 EEPROM_RF_CFG_DASH_MSK(radio_cfg)); 2019 priv->nvm_data->radio_cfg_dash);
2013 } else { 2020 } else {
2014 WARN_ON(1); 2021 WARN_ON(1);
2015 } 2022 }
diff --git a/drivers/net/wireless/iwlwifi/dvm/rs.c b/drivers/net/wireless/iwlwifi/dvm/rs.c
index a82f46c10f5..f3dd0da60d8 100644
--- a/drivers/net/wireless/iwlwifi/dvm/rs.c
+++ b/drivers/net/wireless/iwlwifi/dvm/rs.c
@@ -820,7 +820,7 @@ static u32 rs_get_lower_rate(struct iwl_lq_sta *lq_sta,
820 820
821 if (num_of_ant(tbl->ant_type) > 1) 821 if (num_of_ant(tbl->ant_type) > 1)
822 tbl->ant_type = 822 tbl->ant_type =
823 first_antenna(priv->eeprom_data->valid_tx_ant); 823 first_antenna(priv->nvm_data->valid_tx_ant);
824 824
825 tbl->is_ht40 = 0; 825 tbl->is_ht40 = 0;
826 tbl->is_SGI = 0; 826 tbl->is_SGI = 0;
@@ -1448,7 +1448,7 @@ static int rs_move_legacy_other(struct iwl_priv *priv,
1448 u32 sz = (sizeof(struct iwl_scale_tbl_info) - 1448 u32 sz = (sizeof(struct iwl_scale_tbl_info) -
1449 (sizeof(struct iwl_rate_scale_data) * IWL_RATE_COUNT)); 1449 (sizeof(struct iwl_rate_scale_data) * IWL_RATE_COUNT));
1450 u8 start_action; 1450 u8 start_action;
1451 u8 valid_tx_ant = priv->eeprom_data->valid_tx_ant; 1451 u8 valid_tx_ant = priv->nvm_data->valid_tx_ant;
1452 u8 tx_chains_num = priv->hw_params.tx_chains_num; 1452 u8 tx_chains_num = priv->hw_params.tx_chains_num;
1453 int ret = 0; 1453 int ret = 0;
1454 u8 update_search_tbl_counter = 0; 1454 u8 update_search_tbl_counter = 0;
@@ -1466,7 +1466,7 @@ static int rs_move_legacy_other(struct iwl_priv *priv,
1466 case IWL_BT_COEX_TRAFFIC_LOAD_CONTINUOUS: 1466 case IWL_BT_COEX_TRAFFIC_LOAD_CONTINUOUS:
1467 /* avoid antenna B and MIMO */ 1467 /* avoid antenna B and MIMO */
1468 valid_tx_ant = 1468 valid_tx_ant =
1469 first_antenna(priv->eeprom_data->valid_tx_ant); 1469 first_antenna(priv->nvm_data->valid_tx_ant);
1470 if (tbl->action >= IWL_LEGACY_SWITCH_ANTENNA2 && 1470 if (tbl->action >= IWL_LEGACY_SWITCH_ANTENNA2 &&
1471 tbl->action != IWL_LEGACY_SWITCH_SISO) 1471 tbl->action != IWL_LEGACY_SWITCH_SISO)
1472 tbl->action = IWL_LEGACY_SWITCH_SISO; 1472 tbl->action = IWL_LEGACY_SWITCH_SISO;
@@ -1490,7 +1490,7 @@ static int rs_move_legacy_other(struct iwl_priv *priv,
1490 else if (tbl->action >= IWL_LEGACY_SWITCH_ANTENNA2) 1490 else if (tbl->action >= IWL_LEGACY_SWITCH_ANTENNA2)
1491 tbl->action = IWL_LEGACY_SWITCH_SISO; 1491 tbl->action = IWL_LEGACY_SWITCH_SISO;
1492 valid_tx_ant = 1492 valid_tx_ant =
1493 first_antenna(priv->eeprom_data->valid_tx_ant); 1493 first_antenna(priv->nvm_data->valid_tx_ant);
1494 } 1494 }
1495 1495
1496 start_action = tbl->action; 1496 start_action = tbl->action;
@@ -1624,7 +1624,7 @@ static int rs_move_siso_to_other(struct iwl_priv *priv,
1624 u32 sz = (sizeof(struct iwl_scale_tbl_info) - 1624 u32 sz = (sizeof(struct iwl_scale_tbl_info) -
1625 (sizeof(struct iwl_rate_scale_data) * IWL_RATE_COUNT)); 1625 (sizeof(struct iwl_rate_scale_data) * IWL_RATE_COUNT));
1626 u8 start_action; 1626 u8 start_action;
1627 u8 valid_tx_ant = priv->eeprom_data->valid_tx_ant; 1627 u8 valid_tx_ant = priv->nvm_data->valid_tx_ant;
1628 u8 tx_chains_num = priv->hw_params.tx_chains_num; 1628 u8 tx_chains_num = priv->hw_params.tx_chains_num;
1629 u8 update_search_tbl_counter = 0; 1629 u8 update_search_tbl_counter = 0;
1630 int ret; 1630 int ret;
@@ -1642,7 +1642,7 @@ static int rs_move_siso_to_other(struct iwl_priv *priv,
1642 case IWL_BT_COEX_TRAFFIC_LOAD_CONTINUOUS: 1642 case IWL_BT_COEX_TRAFFIC_LOAD_CONTINUOUS:
1643 /* avoid antenna B and MIMO */ 1643 /* avoid antenna B and MIMO */
1644 valid_tx_ant = 1644 valid_tx_ant =
1645 first_antenna(priv->eeprom_data->valid_tx_ant); 1645 first_antenna(priv->nvm_data->valid_tx_ant);
1646 if (tbl->action != IWL_SISO_SWITCH_ANTENNA1) 1646 if (tbl->action != IWL_SISO_SWITCH_ANTENNA1)
1647 tbl->action = IWL_SISO_SWITCH_ANTENNA1; 1647 tbl->action = IWL_SISO_SWITCH_ANTENNA1;
1648 break; 1648 break;
@@ -1660,7 +1660,7 @@ static int rs_move_siso_to_other(struct iwl_priv *priv,
1660 /* configure as 1x1 if bt full concurrency */ 1660 /* configure as 1x1 if bt full concurrency */
1661 if (priv->bt_full_concurrent) { 1661 if (priv->bt_full_concurrent) {
1662 valid_tx_ant = 1662 valid_tx_ant =
1663 first_antenna(priv->eeprom_data->valid_tx_ant); 1663 first_antenna(priv->nvm_data->valid_tx_ant);
1664 if (tbl->action >= IWL_LEGACY_SWITCH_ANTENNA2) 1664 if (tbl->action >= IWL_LEGACY_SWITCH_ANTENNA2)
1665 tbl->action = IWL_SISO_SWITCH_ANTENNA1; 1665 tbl->action = IWL_SISO_SWITCH_ANTENNA1;
1666 } 1666 }
@@ -1796,7 +1796,7 @@ static int rs_move_mimo2_to_other(struct iwl_priv *priv,
1796 u32 sz = (sizeof(struct iwl_scale_tbl_info) - 1796 u32 sz = (sizeof(struct iwl_scale_tbl_info) -
1797 (sizeof(struct iwl_rate_scale_data) * IWL_RATE_COUNT)); 1797 (sizeof(struct iwl_rate_scale_data) * IWL_RATE_COUNT));
1798 u8 start_action; 1798 u8 start_action;
1799 u8 valid_tx_ant = priv->eeprom_data->valid_tx_ant; 1799 u8 valid_tx_ant = priv->nvm_data->valid_tx_ant;
1800 u8 tx_chains_num = priv->hw_params.tx_chains_num; 1800 u8 tx_chains_num = priv->hw_params.tx_chains_num;
1801 u8 update_search_tbl_counter = 0; 1801 u8 update_search_tbl_counter = 0;
1802 int ret; 1802 int ret;
@@ -1966,7 +1966,7 @@ static int rs_move_mimo3_to_other(struct iwl_priv *priv,
1966 u32 sz = (sizeof(struct iwl_scale_tbl_info) - 1966 u32 sz = (sizeof(struct iwl_scale_tbl_info) -
1967 (sizeof(struct iwl_rate_scale_data) * IWL_RATE_COUNT)); 1967 (sizeof(struct iwl_rate_scale_data) * IWL_RATE_COUNT));
1968 u8 start_action; 1968 u8 start_action;
1969 u8 valid_tx_ant = priv->eeprom_data->valid_tx_ant; 1969 u8 valid_tx_ant = priv->nvm_data->valid_tx_ant;
1970 u8 tx_chains_num = priv->hw_params.tx_chains_num; 1970 u8 tx_chains_num = priv->hw_params.tx_chains_num;
1971 int ret; 1971 int ret;
1972 u8 update_search_tbl_counter = 0; 1972 u8 update_search_tbl_counter = 0;
@@ -2700,7 +2700,7 @@ static void rs_initialize_lq(struct iwl_priv *priv,
2700 2700
2701 i = lq_sta->last_txrate_idx; 2701 i = lq_sta->last_txrate_idx;
2702 2702
2703 valid_tx_ant = priv->eeprom_data->valid_tx_ant; 2703 valid_tx_ant = priv->nvm_data->valid_tx_ant;
2704 2704
2705 if (!lq_sta->search_better_tbl) 2705 if (!lq_sta->search_better_tbl)
2706 active_tbl = lq_sta->active_tbl; 2706 active_tbl = lq_sta->active_tbl;
@@ -2894,15 +2894,15 @@ void iwl_rs_rate_init(struct iwl_priv *priv, struct ieee80211_sta *sta, u8 sta_i
2894 2894
2895 /* These values will be overridden later */ 2895 /* These values will be overridden later */
2896 lq_sta->lq.general_params.single_stream_ant_msk = 2896 lq_sta->lq.general_params.single_stream_ant_msk =
2897 first_antenna(priv->eeprom_data->valid_tx_ant); 2897 first_antenna(priv->nvm_data->valid_tx_ant);
2898 lq_sta->lq.general_params.dual_stream_ant_msk = 2898 lq_sta->lq.general_params.dual_stream_ant_msk =
2899 priv->eeprom_data->valid_tx_ant & 2899 priv->nvm_data->valid_tx_ant &
2900 ~first_antenna(priv->eeprom_data->valid_tx_ant); 2900 ~first_antenna(priv->nvm_data->valid_tx_ant);
2901 if (!lq_sta->lq.general_params.dual_stream_ant_msk) { 2901 if (!lq_sta->lq.general_params.dual_stream_ant_msk) {
2902 lq_sta->lq.general_params.dual_stream_ant_msk = ANT_AB; 2902 lq_sta->lq.general_params.dual_stream_ant_msk = ANT_AB;
2903 } else if (num_of_ant(priv->eeprom_data->valid_tx_ant) == 2) { 2903 } else if (num_of_ant(priv->nvm_data->valid_tx_ant) == 2) {
2904 lq_sta->lq.general_params.dual_stream_ant_msk = 2904 lq_sta->lq.general_params.dual_stream_ant_msk =
2905 priv->eeprom_data->valid_tx_ant; 2905 priv->nvm_data->valid_tx_ant;
2906 } 2906 }
2907 2907
2908 /* as default allow aggregation for all tids */ 2908 /* as default allow aggregation for all tids */
@@ -2948,7 +2948,7 @@ static void rs_fill_link_cmd(struct iwl_priv *priv,
2948 if (priv && priv->bt_full_concurrent) { 2948 if (priv && priv->bt_full_concurrent) {
2949 /* 1x1 only */ 2949 /* 1x1 only */
2950 tbl_type.ant_type = 2950 tbl_type.ant_type =
2951 first_antenna(priv->eeprom_data->valid_tx_ant); 2951 first_antenna(priv->nvm_data->valid_tx_ant);
2952 } 2952 }
2953 2953
2954 /* How many times should we repeat the initial rate? */ 2954 /* How many times should we repeat the initial rate? */
@@ -2980,7 +2980,7 @@ static void rs_fill_link_cmd(struct iwl_priv *priv,
2980 if (priv->bt_full_concurrent) 2980 if (priv->bt_full_concurrent)
2981 valid_tx_ant = ANT_A; 2981 valid_tx_ant = ANT_A;
2982 else 2982 else
2983 valid_tx_ant = priv->eeprom_data->valid_tx_ant; 2983 valid_tx_ant = priv->nvm_data->valid_tx_ant;
2984 } 2984 }
2985 2985
2986 /* Fill rest of rate table */ 2986 /* Fill rest of rate table */
@@ -3014,7 +3014,7 @@ static void rs_fill_link_cmd(struct iwl_priv *priv,
3014 if (priv && priv->bt_full_concurrent) { 3014 if (priv && priv->bt_full_concurrent) {
3015 /* 1x1 only */ 3015 /* 1x1 only */
3016 tbl_type.ant_type = 3016 tbl_type.ant_type =
3017 first_antenna(priv->eeprom_data->valid_tx_ant); 3017 first_antenna(priv->nvm_data->valid_tx_ant);
3018 } 3018 }
3019 3019
3020 /* Indicate to uCode which entries might be MIMO. 3020 /* Indicate to uCode which entries might be MIMO.
@@ -3101,7 +3101,7 @@ static void rs_dbgfs_set_mcs(struct iwl_lq_sta *lq_sta,
3101 u8 ant_sel_tx; 3101 u8 ant_sel_tx;
3102 3102
3103 priv = lq_sta->drv; 3103 priv = lq_sta->drv;
3104 valid_tx_ant = priv->eeprom_data->valid_tx_ant; 3104 valid_tx_ant = priv->nvm_data->valid_tx_ant;
3105 if (lq_sta->dbg_fixed_rate) { 3105 if (lq_sta->dbg_fixed_rate) {
3106 ant_sel_tx = 3106 ant_sel_tx =
3107 ((lq_sta->dbg_fixed_rate & RATE_MCS_ANT_ABC_MSK) 3107 ((lq_sta->dbg_fixed_rate & RATE_MCS_ANT_ABC_MSK)
@@ -3172,9 +3172,9 @@ static ssize_t rs_sta_dbgfs_scale_table_read(struct file *file,
3172 desc += sprintf(buff+desc, "fixed rate 0x%X\n", 3172 desc += sprintf(buff+desc, "fixed rate 0x%X\n",
3173 lq_sta->dbg_fixed_rate); 3173 lq_sta->dbg_fixed_rate);
3174 desc += sprintf(buff+desc, "valid_tx_ant %s%s%s\n", 3174 desc += sprintf(buff+desc, "valid_tx_ant %s%s%s\n",
3175 (priv->eeprom_data->valid_tx_ant & ANT_A) ? "ANT_A," : "", 3175 (priv->nvm_data->valid_tx_ant & ANT_A) ? "ANT_A," : "",
3176 (priv->eeprom_data->valid_tx_ant & ANT_B) ? "ANT_B," : "", 3176 (priv->nvm_data->valid_tx_ant & ANT_B) ? "ANT_B," : "",
3177 (priv->eeprom_data->valid_tx_ant & ANT_C) ? "ANT_C" : ""); 3177 (priv->nvm_data->valid_tx_ant & ANT_C) ? "ANT_C" : "");
3178 desc += sprintf(buff+desc, "lq type %s\n", 3178 desc += sprintf(buff+desc, "lq type %s\n",
3179 (is_legacy(tbl->lq_type)) ? "legacy" : "HT"); 3179 (is_legacy(tbl->lq_type)) ? "legacy" : "HT");
3180 if (is_Ht(tbl->lq_type)) { 3180 if (is_Ht(tbl->lq_type)) {
diff --git a/drivers/net/wireless/iwlwifi/dvm/rxon.c b/drivers/net/wireless/iwlwifi/dvm/rxon.c
index 10896393e5a..b43370d70b1 100644
--- a/drivers/net/wireless/iwlwifi/dvm/rxon.c
+++ b/drivers/net/wireless/iwlwifi/dvm/rxon.c
@@ -420,10 +420,10 @@ static int iwl_set_tx_power(struct iwl_priv *priv, s8 tx_power, bool force)
420 return -EINVAL; 420 return -EINVAL;
421 } 421 }
422 422
423 if (tx_power > DIV_ROUND_UP(priv->eeprom_data->max_tx_pwr_half_dbm, 2)) { 423 if (tx_power > DIV_ROUND_UP(priv->nvm_data->max_tx_pwr_half_dbm, 2)) {
424 IWL_WARN(priv, 424 IWL_WARN(priv,
425 "Requested user TXPOWER %d above upper limit %d.\n", 425 "Requested user TXPOWER %d above upper limit %d.\n",
426 tx_power, priv->eeprom_data->max_tx_pwr_half_dbm); 426 tx_power, priv->nvm_data->max_tx_pwr_half_dbm);
427 return -EINVAL; 427 return -EINVAL;
428 } 428 }
429 429
diff --git a/drivers/net/wireless/iwlwifi/dvm/scan.c b/drivers/net/wireless/iwlwifi/dvm/scan.c
index bb9f6252d28..aad5fa424a5 100644
--- a/drivers/net/wireless/iwlwifi/dvm/scan.c
+++ b/drivers/net/wireless/iwlwifi/dvm/scan.c
@@ -660,12 +660,12 @@ static int iwlagn_request_scan(struct iwl_priv *priv, struct ieee80211_vif *vif)
660 u16 rx_chain = 0; 660 u16 rx_chain = 0;
661 enum ieee80211_band band; 661 enum ieee80211_band band;
662 u8 n_probes = 0; 662 u8 n_probes = 0;
663 u8 rx_ant = priv->eeprom_data->valid_rx_ant; 663 u8 rx_ant = priv->nvm_data->valid_rx_ant;
664 u8 rate; 664 u8 rate;
665 bool is_active = false; 665 bool is_active = false;
666 int chan_mod; 666 int chan_mod;
667 u8 active_chains; 667 u8 active_chains;
668 u8 scan_tx_antennas = priv->eeprom_data->valid_tx_ant; 668 u8 scan_tx_antennas = priv->nvm_data->valid_tx_ant;
669 int ret; 669 int ret;
670 int scan_cmd_size = sizeof(struct iwl_scan_cmd) + 670 int scan_cmd_size = sizeof(struct iwl_scan_cmd) +
671 MAX_SCAN_CHANNEL * sizeof(struct iwl_scan_channel) + 671 MAX_SCAN_CHANNEL * sizeof(struct iwl_scan_channel) +
@@ -881,7 +881,7 @@ static int iwlagn_request_scan(struct iwl_priv *priv, struct ieee80211_vif *vif)
881 881
882 /* MIMO is not used here, but value is required */ 882 /* MIMO is not used here, but value is required */
883 rx_chain |= 883 rx_chain |=
884 priv->eeprom_data->valid_rx_ant << RXON_RX_CHAIN_VALID_POS; 884 priv->nvm_data->valid_rx_ant << RXON_RX_CHAIN_VALID_POS;
885 rx_chain |= rx_ant << RXON_RX_CHAIN_FORCE_MIMO_SEL_POS; 885 rx_chain |= rx_ant << RXON_RX_CHAIN_FORCE_MIMO_SEL_POS;
886 rx_chain |= rx_ant << RXON_RX_CHAIN_FORCE_SEL_POS; 886 rx_chain |= rx_ant << RXON_RX_CHAIN_FORCE_SEL_POS;
887 rx_chain |= 0x1 << RXON_RX_CHAIN_DRIVER_FORCE_POS; 887 rx_chain |= 0x1 << RXON_RX_CHAIN_DRIVER_FORCE_POS;
@@ -998,7 +998,7 @@ static int iwlagn_request_scan(struct iwl_priv *priv, struct ieee80211_vif *vif)
998 998
999void iwl_init_scan_params(struct iwl_priv *priv) 999void iwl_init_scan_params(struct iwl_priv *priv)
1000{ 1000{
1001 u8 ant_idx = fls(priv->eeprom_data->valid_tx_ant) - 1; 1001 u8 ant_idx = fls(priv->nvm_data->valid_tx_ant) - 1;
1002 if (!priv->scan_tx_ant[IEEE80211_BAND_5GHZ]) 1002 if (!priv->scan_tx_ant[IEEE80211_BAND_5GHZ])
1003 priv->scan_tx_ant[IEEE80211_BAND_5GHZ] = ant_idx; 1003 priv->scan_tx_ant[IEEE80211_BAND_5GHZ] = ant_idx;
1004 if (!priv->scan_tx_ant[IEEE80211_BAND_2GHZ]) 1004 if (!priv->scan_tx_ant[IEEE80211_BAND_2GHZ])
diff --git a/drivers/net/wireless/iwlwifi/dvm/sta.c b/drivers/net/wireless/iwlwifi/dvm/sta.c
index cd9b6de4273..bdba9543c35 100644
--- a/drivers/net/wireless/iwlwifi/dvm/sta.c
+++ b/drivers/net/wireless/iwlwifi/dvm/sta.c
@@ -634,23 +634,23 @@ static void iwl_sta_fill_lq(struct iwl_priv *priv, struct iwl_rxon_context *ctx,
634 if (r >= IWL_FIRST_CCK_RATE && r <= IWL_LAST_CCK_RATE) 634 if (r >= IWL_FIRST_CCK_RATE && r <= IWL_LAST_CCK_RATE)
635 rate_flags |= RATE_MCS_CCK_MSK; 635 rate_flags |= RATE_MCS_CCK_MSK;
636 636
637 rate_flags |= first_antenna(priv->eeprom_data->valid_tx_ant) << 637 rate_flags |= first_antenna(priv->nvm_data->valid_tx_ant) <<
638 RATE_MCS_ANT_POS; 638 RATE_MCS_ANT_POS;
639 rate_n_flags = iwl_hw_set_rate_n_flags(iwl_rates[r].plcp, rate_flags); 639 rate_n_flags = iwl_hw_set_rate_n_flags(iwl_rates[r].plcp, rate_flags);
640 for (i = 0; i < LINK_QUAL_MAX_RETRY_NUM; i++) 640 for (i = 0; i < LINK_QUAL_MAX_RETRY_NUM; i++)
641 link_cmd->rs_table[i].rate_n_flags = rate_n_flags; 641 link_cmd->rs_table[i].rate_n_flags = rate_n_flags;
642 642
643 link_cmd->general_params.single_stream_ant_msk = 643 link_cmd->general_params.single_stream_ant_msk =
644 first_antenna(priv->eeprom_data->valid_tx_ant); 644 first_antenna(priv->nvm_data->valid_tx_ant);
645 645
646 link_cmd->general_params.dual_stream_ant_msk = 646 link_cmd->general_params.dual_stream_ant_msk =
647 priv->eeprom_data->valid_tx_ant & 647 priv->nvm_data->valid_tx_ant &
648 ~first_antenna(priv->eeprom_data->valid_tx_ant); 648 ~first_antenna(priv->nvm_data->valid_tx_ant);
649 if (!link_cmd->general_params.dual_stream_ant_msk) { 649 if (!link_cmd->general_params.dual_stream_ant_msk) {
650 link_cmd->general_params.dual_stream_ant_msk = ANT_AB; 650 link_cmd->general_params.dual_stream_ant_msk = ANT_AB;
651 } else if (num_of_ant(priv->eeprom_data->valid_tx_ant) == 2) { 651 } else if (num_of_ant(priv->nvm_data->valid_tx_ant) == 2) {
652 link_cmd->general_params.dual_stream_ant_msk = 652 link_cmd->general_params.dual_stream_ant_msk =
653 priv->eeprom_data->valid_tx_ant; 653 priv->nvm_data->valid_tx_ant;
654 } 654 }
655 655
656 link_cmd->agg_params.agg_dis_start_th = 656 link_cmd->agg_params.agg_dis_start_th =
diff --git a/drivers/net/wireless/iwlwifi/dvm/tx.c b/drivers/net/wireless/iwlwifi/dvm/tx.c
index 4ae031f6726..7d6cc5dffc2 100644
--- a/drivers/net/wireless/iwlwifi/dvm/tx.c
+++ b/drivers/net/wireless/iwlwifi/dvm/tx.c
@@ -188,7 +188,7 @@ static void iwlagn_tx_cmd_build_rate(struct iwl_priv *priv,
188 if (info->control.rates[0].flags & IEEE80211_TX_RC_MCS || 188 if (info->control.rates[0].flags & IEEE80211_TX_RC_MCS ||
189 (rate_idx < 0) || (rate_idx > IWL_RATE_COUNT_LEGACY)) 189 (rate_idx < 0) || (rate_idx > IWL_RATE_COUNT_LEGACY))
190 rate_idx = rate_lowest_index( 190 rate_idx = rate_lowest_index(
191 &priv->eeprom_data->bands[info->band], sta); 191 &priv->nvm_data->bands[info->band], sta);
192 /* For 5 GHZ band, remap mac80211 rate indices into driver indices */ 192 /* For 5 GHZ band, remap mac80211 rate indices into driver indices */
193 if (info->band == IEEE80211_BAND_5GHZ) 193 if (info->band == IEEE80211_BAND_5GHZ)
194 rate_idx += IWL_FIRST_OFDM_RATE; 194 rate_idx += IWL_FIRST_OFDM_RATE;
@@ -207,11 +207,11 @@ static void iwlagn_tx_cmd_build_rate(struct iwl_priv *priv,
207 priv->bt_full_concurrent) { 207 priv->bt_full_concurrent) {
208 /* operated as 1x1 in full concurrency mode */ 208 /* operated as 1x1 in full concurrency mode */
209 priv->mgmt_tx_ant = iwl_toggle_tx_ant(priv, priv->mgmt_tx_ant, 209 priv->mgmt_tx_ant = iwl_toggle_tx_ant(priv, priv->mgmt_tx_ant,
210 first_antenna(priv->eeprom_data->valid_tx_ant)); 210 first_antenna(priv->nvm_data->valid_tx_ant));
211 } else 211 } else
212 priv->mgmt_tx_ant = iwl_toggle_tx_ant( 212 priv->mgmt_tx_ant = iwl_toggle_tx_ant(
213 priv, priv->mgmt_tx_ant, 213 priv, priv->mgmt_tx_ant,
214 priv->eeprom_data->valid_tx_ant); 214 priv->nvm_data->valid_tx_ant);
215 rate_flags |= iwl_ant_idx_to_flags(priv->mgmt_tx_ant); 215 rate_flags |= iwl_ant_idx_to_flags(priv->mgmt_tx_ant);
216 216
217 /* Set the rate in the TX cmd */ 217 /* Set the rate in the TX cmd */
diff --git a/drivers/net/wireless/iwlwifi/dvm/ucode.c b/drivers/net/wireless/iwlwifi/dvm/ucode.c
index 95e6d33f515..c6467e5554f 100644
--- a/drivers/net/wireless/iwlwifi/dvm/ucode.c
+++ b/drivers/net/wireless/iwlwifi/dvm/ucode.c
@@ -61,7 +61,7 @@ iwl_get_ucode_image(struct iwl_priv *priv, enum iwl_ucode_type ucode_type)
61static int iwl_set_Xtal_calib(struct iwl_priv *priv) 61static int iwl_set_Xtal_calib(struct iwl_priv *priv)
62{ 62{
63 struct iwl_calib_xtal_freq_cmd cmd; 63 struct iwl_calib_xtal_freq_cmd cmd;
64 __le16 *xtal_calib = priv->eeprom_data->xtal_calib; 64 __le16 *xtal_calib = priv->nvm_data->xtal_calib;
65 65
66 iwl_set_calib_hdr(&cmd.hdr, IWL_PHY_CALIBRATE_CRYSTAL_FRQ_CMD); 66 iwl_set_calib_hdr(&cmd.hdr, IWL_PHY_CALIBRATE_CRYSTAL_FRQ_CMD);
67 cmd.cap_pin1 = le16_to_cpu(xtal_calib[0]); 67 cmd.cap_pin1 = le16_to_cpu(xtal_calib[0]);
@@ -75,7 +75,7 @@ static int iwl_set_temperature_offset_calib(struct iwl_priv *priv)
75 75
76 memset(&cmd, 0, sizeof(cmd)); 76 memset(&cmd, 0, sizeof(cmd));
77 iwl_set_calib_hdr(&cmd.hdr, IWL_PHY_CALIBRATE_TEMP_OFFSET_CMD); 77 iwl_set_calib_hdr(&cmd.hdr, IWL_PHY_CALIBRATE_TEMP_OFFSET_CMD);
78 cmd.radio_sensor_offset = priv->eeprom_data->raw_temperature; 78 cmd.radio_sensor_offset = priv->nvm_data->raw_temperature;
79 if (!(cmd.radio_sensor_offset)) 79 if (!(cmd.radio_sensor_offset))
80 cmd.radio_sensor_offset = DEFAULT_RADIO_SENSOR_OFFSET; 80 cmd.radio_sensor_offset = DEFAULT_RADIO_SENSOR_OFFSET;
81 81
@@ -90,14 +90,14 @@ static int iwl_set_temperature_offset_calib_v2(struct iwl_priv *priv)
90 90
91 memset(&cmd, 0, sizeof(cmd)); 91 memset(&cmd, 0, sizeof(cmd));
92 iwl_set_calib_hdr(&cmd.hdr, IWL_PHY_CALIBRATE_TEMP_OFFSET_CMD); 92 iwl_set_calib_hdr(&cmd.hdr, IWL_PHY_CALIBRATE_TEMP_OFFSET_CMD);
93 cmd.radio_sensor_offset_high = priv->eeprom_data->kelvin_temperature; 93 cmd.radio_sensor_offset_high = priv->nvm_data->kelvin_temperature;
94 cmd.radio_sensor_offset_low = priv->eeprom_data->raw_temperature; 94 cmd.radio_sensor_offset_low = priv->nvm_data->raw_temperature;
95 if (!cmd.radio_sensor_offset_low) { 95 if (!cmd.radio_sensor_offset_low) {
96 IWL_DEBUG_CALIB(priv, "no info in EEPROM, use default\n"); 96 IWL_DEBUG_CALIB(priv, "no info in EEPROM, use default\n");
97 cmd.radio_sensor_offset_low = DEFAULT_RADIO_SENSOR_OFFSET; 97 cmd.radio_sensor_offset_low = DEFAULT_RADIO_SENSOR_OFFSET;
98 cmd.radio_sensor_offset_high = DEFAULT_RADIO_SENSOR_OFFSET; 98 cmd.radio_sensor_offset_high = DEFAULT_RADIO_SENSOR_OFFSET;
99 } 99 }
100 cmd.burntVoltageRef = priv->eeprom_data->calib_voltage; 100 cmd.burntVoltageRef = priv->nvm_data->calib_voltage;
101 101
102 IWL_DEBUG_CALIB(priv, "Radio sensor offset high: %d\n", 102 IWL_DEBUG_CALIB(priv, "Radio sensor offset high: %d\n",
103 le16_to_cpu(cmd.radio_sensor_offset_high)); 103 le16_to_cpu(cmd.radio_sensor_offset_high));
@@ -257,7 +257,7 @@ static int iwl_alive_notify(struct iwl_priv *priv)
257 iwl_trans_fw_alive(priv->trans, 0); 257 iwl_trans_fw_alive(priv->trans, 0);
258 258
259 if (priv->fw->ucode_capa.flags & IWL_UCODE_TLV_FLAGS_PAN && 259 if (priv->fw->ucode_capa.flags & IWL_UCODE_TLV_FLAGS_PAN &&
260 priv->eeprom_data->sku & EEPROM_SKU_CAP_IPAN_ENABLE) { 260 priv->nvm_data->sku_cap_ipan_enable) {
261 n_queues = ARRAY_SIZE(iwlagn_ipan_queue_to_tx_fifo); 261 n_queues = ARRAY_SIZE(iwlagn_ipan_queue_to_tx_fifo);
262 queue_to_txf = iwlagn_ipan_queue_to_tx_fifo; 262 queue_to_txf = iwlagn_ipan_queue_to_tx_fifo;
263 } else { 263 } else {
diff --git a/drivers/net/wireless/iwlwifi/iwl-config.h b/drivers/net/wireless/iwlwifi/iwl-config.h
index 196266aa5a9..864219d2136 100644
--- a/drivers/net/wireless/iwlwifi/iwl-config.h
+++ b/drivers/net/wireless/iwlwifi/iwl-config.h
@@ -226,8 +226,8 @@ struct iwl_eeprom_params {
226 * @max_data_size: The maximal length of the fw data section 226 * @max_data_size: The maximal length of the fw data section
227 * @valid_tx_ant: valid transmit antenna 227 * @valid_tx_ant: valid transmit antenna
228 * @valid_rx_ant: valid receive antenna 228 * @valid_rx_ant: valid receive antenna
229 * @eeprom_ver: EEPROM version 229 * @nvm_ver: NVM version
230 * @eeprom_calib_ver: EEPROM calibration version 230 * @nvm_calib_ver: NVM calibration version
231 * @lib: pointer to the lib ops 231 * @lib: pointer to the lib ops
232 * @base_params: pointer to basic parameters 232 * @base_params: pointer to basic parameters
233 * @ht_params: point to ht patameters 233 * @ht_params: point to ht patameters
@@ -257,8 +257,8 @@ struct iwl_cfg {
257 const u32 max_inst_size; 257 const u32 max_inst_size;
258 u8 valid_tx_ant; 258 u8 valid_tx_ant;
259 u8 valid_rx_ant; 259 u8 valid_rx_ant;
260 u16 eeprom_ver; 260 u16 nvm_ver;
261 u16 eeprom_calib_ver; 261 u16 nvm_calib_ver;
262 /* params not likely to change within a device family */ 262 /* params not likely to change within a device family */
263 const struct iwl_base_params *base_params; 263 const struct iwl_base_params *base_params;
264 /* params likely to change within a device family */ 264 /* params likely to change within a device family */
diff --git a/drivers/net/wireless/iwlwifi/iwl-eeprom-parse.c b/drivers/net/wireless/iwlwifi/iwl-eeprom-parse.c
index 4a9dc9629ef..471986690cf 100644
--- a/drivers/net/wireless/iwlwifi/iwl-eeprom-parse.c
+++ b/drivers/net/wireless/iwlwifi/iwl-eeprom-parse.c
@@ -116,6 +116,24 @@ struct iwl_eeprom_calib_hdr {
116#define EEPROM_KELVIN_TEMPERATURE ((2*0x12A) | EEPROM_CALIB_ALL) 116#define EEPROM_KELVIN_TEMPERATURE ((2*0x12A) | EEPROM_CALIB_ALL)
117#define EEPROM_RAW_TEMPERATURE ((2*0x12B) | EEPROM_CALIB_ALL) 117#define EEPROM_RAW_TEMPERATURE ((2*0x12B) | EEPROM_CALIB_ALL)
118 118
119/* SKU Capabilities (actual values from EEPROM definition) */
120enum eeprom_sku_bits {
121 EEPROM_SKU_CAP_BAND_24GHZ = BIT(4),
122 EEPROM_SKU_CAP_BAND_52GHZ = BIT(5),
123 EEPROM_SKU_CAP_11N_ENABLE = BIT(6),
124 EEPROM_SKU_CAP_AMT_ENABLE = BIT(7),
125 EEPROM_SKU_CAP_IPAN_ENABLE = BIT(8)
126};
127
128/* radio config bits (actual values from EEPROM definition) */
129#define EEPROM_RF_CFG_TYPE_MSK(x) (x & 0x3) /* bits 0-1 */
130#define EEPROM_RF_CFG_STEP_MSK(x) ((x >> 2) & 0x3) /* bits 2-3 */
131#define EEPROM_RF_CFG_DASH_MSK(x) ((x >> 4) & 0x3) /* bits 4-5 */
132#define EEPROM_RF_CFG_PNUM_MSK(x) ((x >> 6) & 0x3) /* bits 6-7 */
133#define EEPROM_RF_CFG_TX_ANT_MSK(x) ((x >> 8) & 0xF) /* bits 8-11 */
134#define EEPROM_RF_CFG_RX_ANT_MSK(x) ((x >> 12) & 0xF) /* bits 12-15 */
135
136
119/* 137/*
120 * EEPROM bands 138 * EEPROM bands
121 * These are the channel numbers from each band in the order 139 * These are the channel numbers from each band in the order
@@ -251,7 +269,7 @@ static const u8 *iwl_eeprom_query_addr(const u8 *eeprom, size_t eeprom_size,
251} 269}
252 270
253static int iwl_eeprom_read_calib(const u8 *eeprom, size_t eeprom_size, 271static int iwl_eeprom_read_calib(const u8 *eeprom, size_t eeprom_size,
254 struct iwl_eeprom_data *data) 272 struct iwl_nvm_data *data)
255{ 273{
256 struct iwl_eeprom_calib_hdr *hdr; 274 struct iwl_eeprom_calib_hdr *hdr;
257 275
@@ -330,7 +348,7 @@ struct iwl_eeprom_enhanced_txpwr {
330 s8 mimo3_max; 348 s8 mimo3_max;
331} __packed; 349} __packed;
332 350
333static s8 iwl_get_max_txpwr_half_dbm(const struct iwl_eeprom_data *data, 351static s8 iwl_get_max_txpwr_half_dbm(const struct iwl_nvm_data *data,
334 struct iwl_eeprom_enhanced_txpwr *txp) 352 struct iwl_eeprom_enhanced_txpwr *txp)
335{ 353{
336 s8 result = 0; /* (.5 dBm) */ 354 s8 result = 0; /* (.5 dBm) */
@@ -364,7 +382,7 @@ static s8 iwl_get_max_txpwr_half_dbm(const struct iwl_eeprom_data *data,
364 ((txp->flags & IWL_EEPROM_ENH_TXP_FL_##x) ? # x " " : "") 382 ((txp->flags & IWL_EEPROM_ENH_TXP_FL_##x) ? # x " " : "")
365 383
366static void 384static void
367iwl_eeprom_enh_txp_read_element(struct iwl_eeprom_data *data, 385iwl_eeprom_enh_txp_read_element(struct iwl_nvm_data *data,
368 struct iwl_eeprom_enhanced_txpwr *txp, 386 struct iwl_eeprom_enhanced_txpwr *txp,
369 int n_channels, s8 max_txpower_avg) 387 int n_channels, s8 max_txpower_avg)
370{ 388{
@@ -392,7 +410,7 @@ iwl_eeprom_enh_txp_read_element(struct iwl_eeprom_data *data,
392} 410}
393 411
394static void iwl_eeprom_enhanced_txpower(struct device *dev, 412static void iwl_eeprom_enhanced_txpower(struct device *dev,
395 struct iwl_eeprom_data *data, 413 struct iwl_nvm_data *data,
396 const u8 *eeprom, size_t eeprom_size, 414 const u8 *eeprom, size_t eeprom_size,
397 int n_channels) 415 int n_channels)
398{ 416{
@@ -504,7 +522,7 @@ static void iwl_init_band_reference(const struct iwl_cfg *cfg,
504 ((eeprom_ch->flags & EEPROM_CHANNEL_##x) ? # x " " : "") 522 ((eeprom_ch->flags & EEPROM_CHANNEL_##x) ? # x " " : "")
505 523
506static void iwl_mod_ht40_chan_info(struct device *dev, 524static void iwl_mod_ht40_chan_info(struct device *dev,
507 struct iwl_eeprom_data *data, int n_channels, 525 struct iwl_nvm_data *data, int n_channels,
508 enum ieee80211_band band, u16 channel, 526 enum ieee80211_band band, u16 channel,
509 const struct iwl_eeprom_channel *eeprom_ch, 527 const struct iwl_eeprom_channel *eeprom_ch,
510 u8 clear_ht40_extension_channel) 528 u8 clear_ht40_extension_channel)
@@ -547,7 +565,7 @@ static void iwl_mod_ht40_chan_info(struct device *dev,
547 ((eeprom_ch_info[ch_idx].flags & EEPROM_CHANNEL_##x) ? # x " " : "") 565 ((eeprom_ch_info[ch_idx].flags & EEPROM_CHANNEL_##x) ? # x " " : "")
548 566
549static int iwl_init_channel_map(struct device *dev, const struct iwl_cfg *cfg, 567static int iwl_init_channel_map(struct device *dev, const struct iwl_cfg *cfg,
550 struct iwl_eeprom_data *data, 568 struct iwl_nvm_data *data,
551 const u8 *eeprom, size_t eeprom_size) 569 const u8 *eeprom, size_t eeprom_size)
552{ 570{
553 int band, ch_idx; 571 int band, ch_idx;
@@ -685,7 +703,7 @@ static int iwl_init_channel_map(struct device *dev, const struct iwl_cfg *cfg,
685 return n_channels; 703 return n_channels;
686} 704}
687 705
688static int iwl_init_sband_channels(struct iwl_eeprom_data *data, 706static int iwl_init_sband_channels(struct iwl_nvm_data *data,
689 struct ieee80211_supported_band *sband, 707 struct ieee80211_supported_band *sband,
690 int n_channels, enum ieee80211_band band) 708 int n_channels, enum ieee80211_band band)
691{ 709{
@@ -711,7 +729,7 @@ static int iwl_init_sband_channels(struct iwl_eeprom_data *data,
711#define MAX_BIT_RATE_20_MHZ 72 /* Mbps */ 729#define MAX_BIT_RATE_20_MHZ 72 /* Mbps */
712 730
713static void iwl_init_ht_hw_capab(const struct iwl_cfg *cfg, 731static void iwl_init_ht_hw_capab(const struct iwl_cfg *cfg,
714 struct iwl_eeprom_data *data, 732 struct iwl_nvm_data *data,
715 struct ieee80211_sta_ht_cap *ht_info, 733 struct ieee80211_sta_ht_cap *ht_info,
716 enum ieee80211_band band) 734 enum ieee80211_band band)
717{ 735{
@@ -725,7 +743,7 @@ static void iwl_init_ht_hw_capab(const struct iwl_cfg *cfg,
725 else 743 else
726 rx_chains = hweight8(data->valid_rx_ant); 744 rx_chains = hweight8(data->valid_rx_ant);
727 745
728 if (!(data->sku & EEPROM_SKU_CAP_11N_ENABLE) || !cfg->ht_params) { 746 if (!(data->sku_cap_11n_enable) || !cfg->ht_params) {
729 ht_info->ht_supported = false; 747 ht_info->ht_supported = false;
730 return; 748 return;
731 } 749 }
@@ -773,7 +791,7 @@ static void iwl_init_ht_hw_capab(const struct iwl_cfg *cfg,
773} 791}
774 792
775static void iwl_init_sbands(struct device *dev, const struct iwl_cfg *cfg, 793static void iwl_init_sbands(struct device *dev, const struct iwl_cfg *cfg,
776 struct iwl_eeprom_data *data, 794 struct iwl_nvm_data *data,
777 const u8 *eeprom, size_t eeprom_size) 795 const u8 *eeprom, size_t eeprom_size)
778{ 796{
779 int n_channels = iwl_init_channel_map(dev, cfg, data, 797 int n_channels = iwl_init_channel_map(dev, cfg, data,
@@ -804,12 +822,13 @@ static void iwl_init_sbands(struct device *dev, const struct iwl_cfg *cfg,
804 822
805/* EEPROM data functions */ 823/* EEPROM data functions */
806 824
807struct iwl_eeprom_data * 825struct iwl_nvm_data *
808iwl_parse_eeprom_data(struct device *dev, const struct iwl_cfg *cfg, 826iwl_parse_eeprom_data(struct device *dev, const struct iwl_cfg *cfg,
809 const u8 *eeprom, size_t eeprom_size) 827 const u8 *eeprom, size_t eeprom_size)
810{ 828{
811 struct iwl_eeprom_data *data; 829 struct iwl_nvm_data *data;
812 const void *tmp; 830 const void *tmp;
831 u16 radio_cfg, sku;
813 832
814 if (WARN_ON(!cfg || !cfg->eeprom_params)) 833 if (WARN_ON(!cfg || !cfg->eeprom_params))
815 return NULL; 834 return NULL;
@@ -849,18 +868,27 @@ iwl_parse_eeprom_data(struct device *dev, const struct iwl_cfg *cfg,
849 data->kelvin_temperature = *(__le16 *)tmp; 868 data->kelvin_temperature = *(__le16 *)tmp;
850 data->kelvin_voltage = *((__le16 *)tmp + 1); 869 data->kelvin_voltage = *((__le16 *)tmp + 1);
851 870
852 data->radio_cfg = iwl_eeprom_query16(eeprom, eeprom_size, 871 radio_cfg = iwl_eeprom_query16(eeprom, eeprom_size,
853 EEPROM_RADIO_CONFIG); 872 EEPROM_RADIO_CONFIG);
854 data->sku = iwl_eeprom_query16(eeprom, eeprom_size, 873 data->radio_cfg_dash = EEPROM_RF_CFG_DASH_MSK(radio_cfg);
855 EEPROM_SKU_CAP); 874 data->radio_cfg_pnum = EEPROM_RF_CFG_PNUM_MSK(radio_cfg);
875 data->radio_cfg_step = EEPROM_RF_CFG_STEP_MSK(radio_cfg);
876 data->radio_cfg_type = EEPROM_RF_CFG_TYPE_MSK(radio_cfg);
877 data->valid_rx_ant = EEPROM_RF_CFG_RX_ANT_MSK(radio_cfg);
878 data->valid_tx_ant = EEPROM_RF_CFG_TX_ANT_MSK(radio_cfg);
879
880 sku = iwl_eeprom_query16(eeprom, eeprom_size,
881 EEPROM_SKU_CAP);
882 data->sku_cap_11n_enable = sku & EEPROM_SKU_CAP_11N_ENABLE;
883 data->sku_cap_amt_enable = sku & EEPROM_SKU_CAP_AMT_ENABLE;
884 data->sku_cap_band_24GHz_enable = sku & EEPROM_SKU_CAP_BAND_24GHZ;
885 data->sku_cap_band_52GHz_enable = sku & EEPROM_SKU_CAP_BAND_52GHZ;
886 data->sku_cap_ipan_enable = sku & EEPROM_SKU_CAP_IPAN_ENABLE;
856 if (iwlwifi_mod_params.disable_11n & IWL_DISABLE_HT_ALL) 887 if (iwlwifi_mod_params.disable_11n & IWL_DISABLE_HT_ALL)
857 data->sku &= ~EEPROM_SKU_CAP_11N_ENABLE; 888 data->sku_cap_11n_enable = false;
858
859 data->eeprom_version = iwl_eeprom_query16(eeprom, eeprom_size,
860 EEPROM_VERSION);
861 889
862 data->valid_tx_ant = EEPROM_RF_CFG_TX_ANT_MSK(data->radio_cfg); 890 data->nvm_version = iwl_eeprom_query16(eeprom, eeprom_size,
863 data->valid_rx_ant = EEPROM_RF_CFG_RX_ANT_MSK(data->radio_cfg); 891 EEPROM_VERSION);
864 892
865 /* check overrides (some devices have wrong EEPROM) */ 893 /* check overrides (some devices have wrong EEPROM) */
866 if (cfg->valid_tx_ant) 894 if (cfg->valid_tx_ant)
@@ -884,20 +912,20 @@ iwl_parse_eeprom_data(struct device *dev, const struct iwl_cfg *cfg,
884EXPORT_SYMBOL_GPL(iwl_parse_eeprom_data); 912EXPORT_SYMBOL_GPL(iwl_parse_eeprom_data);
885 913
886/* helper functions */ 914/* helper functions */
887int iwl_eeprom_check_version(struct iwl_eeprom_data *data, 915int iwl_nvm_check_version(struct iwl_nvm_data *data,
888 struct iwl_trans *trans) 916 struct iwl_trans *trans)
889{ 917{
890 if (data->eeprom_version >= trans->cfg->eeprom_ver || 918 if (data->nvm_version >= trans->cfg->nvm_ver ||
891 data->calib_version >= trans->cfg->eeprom_calib_ver) { 919 data->calib_version >= trans->cfg->nvm_calib_ver) {
892 IWL_DEBUG_INFO(trans, "device EEPROM VER=0x%x, CALIB=0x%x\n", 920 IWL_DEBUG_INFO(trans, "device EEPROM VER=0x%x, CALIB=0x%x\n",
893 data->eeprom_version, data->calib_version); 921 data->nvm_version, data->calib_version);
894 return 0; 922 return 0;
895 } 923 }
896 924
897 IWL_ERR(trans, 925 IWL_ERR(trans,
898 "Unsupported (too old) EEPROM VER=0x%x < 0x%x CALIB=0x%x < 0x%x\n", 926 "Unsupported (too old) EEPROM VER=0x%x < 0x%x CALIB=0x%x < 0x%x\n",
899 data->eeprom_version, trans->cfg->eeprom_ver, 927 data->nvm_version, trans->cfg->nvm_ver,
900 data->calib_version, trans->cfg->eeprom_calib_ver); 928 data->calib_version, trans->cfg->nvm_calib_ver);
901 return -EINVAL; 929 return -EINVAL;
902} 930}
903EXPORT_SYMBOL_GPL(iwl_eeprom_check_version); 931EXPORT_SYMBOL_GPL(iwl_nvm_check_version);
diff --git a/drivers/net/wireless/iwlwifi/iwl-eeprom-parse.h b/drivers/net/wireless/iwlwifi/iwl-eeprom-parse.h
index a5e425718f5..555f0eb61d4 100644
--- a/drivers/net/wireless/iwlwifi/iwl-eeprom-parse.h
+++ b/drivers/net/wireless/iwlwifi/iwl-eeprom-parse.h
@@ -66,22 +66,7 @@
66#include <linux/if_ether.h> 66#include <linux/if_ether.h>
67#include "iwl-trans.h" 67#include "iwl-trans.h"
68 68
69/* SKU Capabilities (actual values from EEPROM definition) */ 69struct iwl_nvm_data {
70#define EEPROM_SKU_CAP_BAND_24GHZ (1 << 4)
71#define EEPROM_SKU_CAP_BAND_52GHZ (1 << 5)
72#define EEPROM_SKU_CAP_11N_ENABLE (1 << 6)
73#define EEPROM_SKU_CAP_AMT_ENABLE (1 << 7)
74#define EEPROM_SKU_CAP_IPAN_ENABLE (1 << 8)
75
76/* radio config bits (actual values from EEPROM definition) */
77#define EEPROM_RF_CFG_TYPE_MSK(x) (x & 0x3) /* bits 0-1 */
78#define EEPROM_RF_CFG_STEP_MSK(x) ((x >> 2) & 0x3) /* bits 2-3 */
79#define EEPROM_RF_CFG_DASH_MSK(x) ((x >> 4) & 0x3) /* bits 4-5 */
80#define EEPROM_RF_CFG_PNUM_MSK(x) ((x >> 6) & 0x3) /* bits 6-7 */
81#define EEPROM_RF_CFG_TX_ANT_MSK(x) ((x >> 8) & 0xF) /* bits 8-11 */
82#define EEPROM_RF_CFG_RX_ANT_MSK(x) ((x >> 12) & 0xF) /* bits 12-15 */
83
84struct iwl_eeprom_data {
85 int n_hw_addrs; 70 int n_hw_addrs;
86 u8 hw_addr[ETH_ALEN]; 71 u8 hw_addr[ETH_ALEN];
87 72
@@ -93,13 +78,21 @@ struct iwl_eeprom_data {
93 __le16 kelvin_voltage; 78 __le16 kelvin_voltage;
94 __le16 xtal_calib[2]; 79 __le16 xtal_calib[2];
95 80
96 u16 sku; 81 bool sku_cap_band_24GHz_enable;
97 u16 radio_cfg; 82 bool sku_cap_band_52GHz_enable;
98 u16 eeprom_version; 83 bool sku_cap_11n_enable;
99 s8 max_tx_pwr_half_dbm; 84 bool sku_cap_amt_enable;
85 bool sku_cap_ipan_enable;
100 86
87 u8 radio_cfg_type;
88 u8 radio_cfg_step;
89 u8 radio_cfg_dash;
90 u8 radio_cfg_pnum;
101 u8 valid_tx_ant, valid_rx_ant; 91 u8 valid_tx_ant, valid_rx_ant;
102 92
93 u16 nvm_version;
94 s8 max_tx_pwr_half_dbm;
95
103 struct ieee80211_supported_band bands[IEEE80211_NUM_BANDS]; 96 struct ieee80211_supported_band bands[IEEE80211_NUM_BANDS];
104 struct ieee80211_channel channels[]; 97 struct ieee80211_channel channels[];
105}; 98};
@@ -115,22 +108,22 @@ struct iwl_eeprom_data {
115 * This function parses all EEPROM values we need and then 108 * This function parses all EEPROM values we need and then
116 * returns a (newly allocated) struct containing all the 109 * returns a (newly allocated) struct containing all the
117 * relevant values for driver use. The struct must be freed 110 * relevant values for driver use. The struct must be freed
118 * later with iwl_free_eeprom_data(). 111 * later with iwl_free_nvm_data().
119 */ 112 */
120struct iwl_eeprom_data * 113struct iwl_nvm_data *
121iwl_parse_eeprom_data(struct device *dev, const struct iwl_cfg *cfg, 114iwl_parse_eeprom_data(struct device *dev, const struct iwl_cfg *cfg,
122 const u8 *eeprom, size_t eeprom_size); 115 const u8 *eeprom, size_t eeprom_size);
123 116
124/** 117/**
125 * iwl_free_eeprom_data - free EEPROM data 118 * iwl_free_nvm_data - free NVM data
126 * @data: the data to free 119 * @data: the data to free
127 */ 120 */
128static inline void iwl_free_eeprom_data(struct iwl_eeprom_data *data) 121static inline void iwl_free_nvm_data(struct iwl_nvm_data *data)
129{ 122{
130 kfree(data); 123 kfree(data);
131} 124}
132 125
133int iwl_eeprom_check_version(struct iwl_eeprom_data *data, 126int iwl_nvm_check_version(struct iwl_nvm_data *data,
134 struct iwl_trans *trans); 127 struct iwl_trans *trans);
135 128
136#endif /* __iwl_eeprom_parse_h__ */ 129#endif /* __iwl_eeprom_parse_h__ */
diff --git a/drivers/net/wireless/iwlwifi/pcie/1000.c b/drivers/net/wireless/iwlwifi/pcie/1000.c
index 81b83f484f0..f8620ecae6b 100644
--- a/drivers/net/wireless/iwlwifi/pcie/1000.c
+++ b/drivers/net/wireless/iwlwifi/pcie/1000.c
@@ -94,8 +94,8 @@ static const struct iwl_eeprom_params iwl1000_eeprom_params = {
94 .device_family = IWL_DEVICE_FAMILY_1000, \ 94 .device_family = IWL_DEVICE_FAMILY_1000, \
95 .max_inst_size = IWLAGN_RTC_INST_SIZE, \ 95 .max_inst_size = IWLAGN_RTC_INST_SIZE, \
96 .max_data_size = IWLAGN_RTC_DATA_SIZE, \ 96 .max_data_size = IWLAGN_RTC_DATA_SIZE, \
97 .eeprom_ver = EEPROM_1000_EEPROM_VERSION, \ 97 .nvm_ver = EEPROM_1000_EEPROM_VERSION, \
98 .eeprom_calib_ver = EEPROM_1000_TX_POWER_VERSION, \ 98 .nvm_calib_ver = EEPROM_1000_TX_POWER_VERSION, \
99 .base_params = &iwl1000_base_params, \ 99 .base_params = &iwl1000_base_params, \
100 .eeprom_params = &iwl1000_eeprom_params, \ 100 .eeprom_params = &iwl1000_eeprom_params, \
101 .led_mode = IWL_LED_BLINK 101 .led_mode = IWL_LED_BLINK
@@ -119,8 +119,8 @@ const struct iwl_cfg iwl1000_bg_cfg = {
119 .device_family = IWL_DEVICE_FAMILY_100, \ 119 .device_family = IWL_DEVICE_FAMILY_100, \
120 .max_inst_size = IWLAGN_RTC_INST_SIZE, \ 120 .max_inst_size = IWLAGN_RTC_INST_SIZE, \
121 .max_data_size = IWLAGN_RTC_DATA_SIZE, \ 121 .max_data_size = IWLAGN_RTC_DATA_SIZE, \
122 .eeprom_ver = EEPROM_1000_EEPROM_VERSION, \ 122 .nvm_ver = EEPROM_1000_EEPROM_VERSION, \
123 .eeprom_calib_ver = EEPROM_1000_TX_POWER_VERSION, \ 123 .nvm_calib_ver = EEPROM_1000_TX_POWER_VERSION, \
124 .base_params = &iwl1000_base_params, \ 124 .base_params = &iwl1000_base_params, \
125 .eeprom_params = &iwl1000_eeprom_params, \ 125 .eeprom_params = &iwl1000_eeprom_params, \
126 .led_mode = IWL_LED_RF_STATE, \ 126 .led_mode = IWL_LED_RF_STATE, \
diff --git a/drivers/net/wireless/iwlwifi/pcie/2000.c b/drivers/net/wireless/iwlwifi/pcie/2000.c
index 9fbde32f755..244019cec3e 100644
--- a/drivers/net/wireless/iwlwifi/pcie/2000.c
+++ b/drivers/net/wireless/iwlwifi/pcie/2000.c
@@ -138,8 +138,8 @@ static const struct iwl_eeprom_params iwl20x0_eeprom_params = {
138 .device_family = IWL_DEVICE_FAMILY_2000, \ 138 .device_family = IWL_DEVICE_FAMILY_2000, \
139 .max_inst_size = IWL60_RTC_INST_SIZE, \ 139 .max_inst_size = IWL60_RTC_INST_SIZE, \
140 .max_data_size = IWL60_RTC_DATA_SIZE, \ 140 .max_data_size = IWL60_RTC_DATA_SIZE, \
141 .eeprom_ver = EEPROM_2000_EEPROM_VERSION, \ 141 .nvm_ver = EEPROM_2000_EEPROM_VERSION, \
142 .eeprom_calib_ver = EEPROM_2000_TX_POWER_VERSION, \ 142 .nvm_calib_ver = EEPROM_2000_TX_POWER_VERSION, \
143 .base_params = &iwl2000_base_params, \ 143 .base_params = &iwl2000_base_params, \
144 .eeprom_params = &iwl20x0_eeprom_params, \ 144 .eeprom_params = &iwl20x0_eeprom_params, \
145 .need_temp_offset_calib = true, \ 145 .need_temp_offset_calib = true, \
@@ -166,8 +166,8 @@ const struct iwl_cfg iwl2000_2bgn_d_cfg = {
166 .device_family = IWL_DEVICE_FAMILY_2030, \ 166 .device_family = IWL_DEVICE_FAMILY_2030, \
167 .max_inst_size = IWL60_RTC_INST_SIZE, \ 167 .max_inst_size = IWL60_RTC_INST_SIZE, \
168 .max_data_size = IWL60_RTC_DATA_SIZE, \ 168 .max_data_size = IWL60_RTC_DATA_SIZE, \
169 .eeprom_ver = EEPROM_2000_EEPROM_VERSION, \ 169 .nvm_ver = EEPROM_2000_EEPROM_VERSION, \
170 .eeprom_calib_ver = EEPROM_2000_TX_POWER_VERSION, \ 170 .nvm_calib_ver = EEPROM_2000_TX_POWER_VERSION, \
171 .base_params = &iwl2030_base_params, \ 171 .base_params = &iwl2030_base_params, \
172 .bt_params = &iwl2030_bt_params, \ 172 .bt_params = &iwl2030_bt_params, \
173 .eeprom_params = &iwl20x0_eeprom_params, \ 173 .eeprom_params = &iwl20x0_eeprom_params, \
@@ -190,8 +190,8 @@ const struct iwl_cfg iwl2030_2bgn_cfg = {
190 .device_family = IWL_DEVICE_FAMILY_105, \ 190 .device_family = IWL_DEVICE_FAMILY_105, \
191 .max_inst_size = IWL60_RTC_INST_SIZE, \ 191 .max_inst_size = IWL60_RTC_INST_SIZE, \
192 .max_data_size = IWL60_RTC_DATA_SIZE, \ 192 .max_data_size = IWL60_RTC_DATA_SIZE, \
193 .eeprom_ver = EEPROM_2000_EEPROM_VERSION, \ 193 .nvm_ver = EEPROM_2000_EEPROM_VERSION, \
194 .eeprom_calib_ver = EEPROM_2000_TX_POWER_VERSION, \ 194 .nvm_calib_ver = EEPROM_2000_TX_POWER_VERSION, \
195 .base_params = &iwl2000_base_params, \ 195 .base_params = &iwl2000_base_params, \
196 .eeprom_params = &iwl20x0_eeprom_params, \ 196 .eeprom_params = &iwl20x0_eeprom_params, \
197 .need_temp_offset_calib = true, \ 197 .need_temp_offset_calib = true, \
@@ -220,8 +220,8 @@ const struct iwl_cfg iwl105_bgn_d_cfg = {
220 .device_family = IWL_DEVICE_FAMILY_135, \ 220 .device_family = IWL_DEVICE_FAMILY_135, \
221 .max_inst_size = IWL60_RTC_INST_SIZE, \ 221 .max_inst_size = IWL60_RTC_INST_SIZE, \
222 .max_data_size = IWL60_RTC_DATA_SIZE, \ 222 .max_data_size = IWL60_RTC_DATA_SIZE, \
223 .eeprom_ver = EEPROM_2000_EEPROM_VERSION, \ 223 .nvm_ver = EEPROM_2000_EEPROM_VERSION, \
224 .eeprom_calib_ver = EEPROM_2000_TX_POWER_VERSION, \ 224 .nvm_calib_ver = EEPROM_2000_TX_POWER_VERSION, \
225 .base_params = &iwl2030_base_params, \ 225 .base_params = &iwl2030_base_params, \
226 .bt_params = &iwl2030_bt_params, \ 226 .bt_params = &iwl2030_bt_params, \
227 .eeprom_params = &iwl20x0_eeprom_params, \ 227 .eeprom_params = &iwl20x0_eeprom_params, \
diff --git a/drivers/net/wireless/iwlwifi/pcie/5000.c b/drivers/net/wireless/iwlwifi/pcie/5000.c
index d1665fa6d15..83ca40321ff 100644
--- a/drivers/net/wireless/iwlwifi/pcie/5000.c
+++ b/drivers/net/wireless/iwlwifi/pcie/5000.c
@@ -92,8 +92,8 @@ static const struct iwl_eeprom_params iwl5000_eeprom_params = {
92 .device_family = IWL_DEVICE_FAMILY_5000, \ 92 .device_family = IWL_DEVICE_FAMILY_5000, \
93 .max_inst_size = IWLAGN_RTC_INST_SIZE, \ 93 .max_inst_size = IWLAGN_RTC_INST_SIZE, \
94 .max_data_size = IWLAGN_RTC_DATA_SIZE, \ 94 .max_data_size = IWLAGN_RTC_DATA_SIZE, \
95 .eeprom_ver = EEPROM_5000_EEPROM_VERSION, \ 95 .nvm_ver = EEPROM_5000_EEPROM_VERSION, \
96 .eeprom_calib_ver = EEPROM_5000_TX_POWER_VERSION, \ 96 .nvm_calib_ver = EEPROM_5000_TX_POWER_VERSION, \
97 .base_params = &iwl5000_base_params, \ 97 .base_params = &iwl5000_base_params, \
98 .eeprom_params = &iwl5000_eeprom_params, \ 98 .eeprom_params = &iwl5000_eeprom_params, \
99 .led_mode = IWL_LED_BLINK 99 .led_mode = IWL_LED_BLINK
@@ -139,8 +139,8 @@ const struct iwl_cfg iwl5350_agn_cfg = {
139 .device_family = IWL_DEVICE_FAMILY_5000, 139 .device_family = IWL_DEVICE_FAMILY_5000,
140 .max_inst_size = IWLAGN_RTC_INST_SIZE, 140 .max_inst_size = IWLAGN_RTC_INST_SIZE,
141 .max_data_size = IWLAGN_RTC_DATA_SIZE, 141 .max_data_size = IWLAGN_RTC_DATA_SIZE,
142 .eeprom_ver = EEPROM_5050_EEPROM_VERSION, 142 .nvm_ver = EEPROM_5050_EEPROM_VERSION,
143 .eeprom_calib_ver = EEPROM_5050_TX_POWER_VERSION, 143 .nvm_calib_ver = EEPROM_5050_TX_POWER_VERSION,
144 .base_params = &iwl5000_base_params, 144 .base_params = &iwl5000_base_params,
145 .eeprom_params = &iwl5000_eeprom_params, 145 .eeprom_params = &iwl5000_eeprom_params,
146 .ht_params = &iwl5000_ht_params, 146 .ht_params = &iwl5000_ht_params,
@@ -156,8 +156,8 @@ const struct iwl_cfg iwl5350_agn_cfg = {
156 .device_family = IWL_DEVICE_FAMILY_5150, \ 156 .device_family = IWL_DEVICE_FAMILY_5150, \
157 .max_inst_size = IWLAGN_RTC_INST_SIZE, \ 157 .max_inst_size = IWLAGN_RTC_INST_SIZE, \
158 .max_data_size = IWLAGN_RTC_DATA_SIZE, \ 158 .max_data_size = IWLAGN_RTC_DATA_SIZE, \
159 .eeprom_ver = EEPROM_5050_EEPROM_VERSION, \ 159 .nvm_ver = EEPROM_5050_EEPROM_VERSION, \
160 .eeprom_calib_ver = EEPROM_5050_TX_POWER_VERSION, \ 160 .nvm_calib_ver = EEPROM_5050_TX_POWER_VERSION, \
161 .base_params = &iwl5000_base_params, \ 161 .base_params = &iwl5000_base_params, \
162 .eeprom_params = &iwl5000_eeprom_params, \ 162 .eeprom_params = &iwl5000_eeprom_params, \
163 .no_xtal_calib = true, \ 163 .no_xtal_calib = true, \
diff --git a/drivers/net/wireless/iwlwifi/pcie/6000.c b/drivers/net/wireless/iwlwifi/pcie/6000.c
index 4a57624afc4..d4df976d470 100644
--- a/drivers/net/wireless/iwlwifi/pcie/6000.c
+++ b/drivers/net/wireless/iwlwifi/pcie/6000.c
@@ -160,8 +160,8 @@ static const struct iwl_eeprom_params iwl6000_eeprom_params = {
160 .device_family = IWL_DEVICE_FAMILY_6005, \ 160 .device_family = IWL_DEVICE_FAMILY_6005, \
161 .max_inst_size = IWL60_RTC_INST_SIZE, \ 161 .max_inst_size = IWL60_RTC_INST_SIZE, \
162 .max_data_size = IWL60_RTC_DATA_SIZE, \ 162 .max_data_size = IWL60_RTC_DATA_SIZE, \
163 .eeprom_ver = EEPROM_6005_EEPROM_VERSION, \ 163 .nvm_ver = EEPROM_6005_EEPROM_VERSION, \
164 .eeprom_calib_ver = EEPROM_6005_TX_POWER_VERSION, \ 164 .nvm_calib_ver = EEPROM_6005_TX_POWER_VERSION, \
165 .base_params = &iwl6000_g2_base_params, \ 165 .base_params = &iwl6000_g2_base_params, \
166 .eeprom_params = &iwl6000_eeprom_params, \ 166 .eeprom_params = &iwl6000_eeprom_params, \
167 .need_temp_offset_calib = true, \ 167 .need_temp_offset_calib = true, \
@@ -215,8 +215,8 @@ const struct iwl_cfg iwl6005_2agn_mow2_cfg = {
215 .device_family = IWL_DEVICE_FAMILY_6030, \ 215 .device_family = IWL_DEVICE_FAMILY_6030, \
216 .max_inst_size = IWL60_RTC_INST_SIZE, \ 216 .max_inst_size = IWL60_RTC_INST_SIZE, \
217 .max_data_size = IWL60_RTC_DATA_SIZE, \ 217 .max_data_size = IWL60_RTC_DATA_SIZE, \
218 .eeprom_ver = EEPROM_6030_EEPROM_VERSION, \ 218 .nvm_ver = EEPROM_6030_EEPROM_VERSION, \
219 .eeprom_calib_ver = EEPROM_6030_TX_POWER_VERSION, \ 219 .nvm_calib_ver = EEPROM_6030_TX_POWER_VERSION, \
220 .base_params = &iwl6000_g2_base_params, \ 220 .base_params = &iwl6000_g2_base_params, \
221 .bt_params = &iwl6000_bt_params, \ 221 .bt_params = &iwl6000_bt_params, \
222 .eeprom_params = &iwl6000_eeprom_params, \ 222 .eeprom_params = &iwl6000_eeprom_params, \
@@ -254,8 +254,8 @@ const struct iwl_cfg iwl6030_2bg_cfg = {
254 .device_family = IWL_DEVICE_FAMILY_6030, \ 254 .device_family = IWL_DEVICE_FAMILY_6030, \
255 .max_inst_size = IWL60_RTC_INST_SIZE, \ 255 .max_inst_size = IWL60_RTC_INST_SIZE, \
256 .max_data_size = IWL60_RTC_DATA_SIZE, \ 256 .max_data_size = IWL60_RTC_DATA_SIZE, \
257 .eeprom_ver = EEPROM_6030_EEPROM_VERSION, \ 257 .nvm_ver = EEPROM_6030_EEPROM_VERSION, \
258 .eeprom_calib_ver = EEPROM_6030_TX_POWER_VERSION, \ 258 .nvm_calib_ver = EEPROM_6030_TX_POWER_VERSION, \
259 .base_params = &iwl6000_g2_base_params, \ 259 .base_params = &iwl6000_g2_base_params, \
260 .bt_params = &iwl6000_bt_params, \ 260 .bt_params = &iwl6000_bt_params, \
261 .eeprom_params = &iwl6000_eeprom_params, \ 261 .eeprom_params = &iwl6000_eeprom_params, \
@@ -306,8 +306,8 @@ const struct iwl_cfg iwl130_bg_cfg = {
306 .max_data_size = IWL60_RTC_DATA_SIZE, \ 306 .max_data_size = IWL60_RTC_DATA_SIZE, \
307 .valid_tx_ant = ANT_BC, /* .cfg overwrite */ \ 307 .valid_tx_ant = ANT_BC, /* .cfg overwrite */ \
308 .valid_rx_ant = ANT_BC, /* .cfg overwrite */ \ 308 .valid_rx_ant = ANT_BC, /* .cfg overwrite */ \
309 .eeprom_ver = EEPROM_6000_EEPROM_VERSION, \ 309 .nvm_ver = EEPROM_6000_EEPROM_VERSION, \
310 .eeprom_calib_ver = EEPROM_6000_TX_POWER_VERSION, \ 310 .nvm_calib_ver = EEPROM_6000_TX_POWER_VERSION, \
311 .base_params = &iwl6000_base_params, \ 311 .base_params = &iwl6000_base_params, \
312 .eeprom_params = &iwl6000_eeprom_params, \ 312 .eeprom_params = &iwl6000_eeprom_params, \
313 .led_mode = IWL_LED_BLINK 313 .led_mode = IWL_LED_BLINK
@@ -337,8 +337,8 @@ const struct iwl_cfg iwl6000i_2bg_cfg = {
337 .max_data_size = IWL60_RTC_DATA_SIZE, \ 337 .max_data_size = IWL60_RTC_DATA_SIZE, \
338 .valid_tx_ant = ANT_AB, /* .cfg overwrite */ \ 338 .valid_tx_ant = ANT_AB, /* .cfg overwrite */ \
339 .valid_rx_ant = ANT_AB, /* .cfg overwrite */ \ 339 .valid_rx_ant = ANT_AB, /* .cfg overwrite */ \
340 .eeprom_ver = EEPROM_6050_EEPROM_VERSION, \ 340 .nvm_ver = EEPROM_6050_EEPROM_VERSION, \
341 .eeprom_calib_ver = EEPROM_6050_TX_POWER_VERSION, \ 341 .nvm_calib_ver = EEPROM_6050_TX_POWER_VERSION, \
342 .base_params = &iwl6050_base_params, \ 342 .base_params = &iwl6050_base_params, \
343 .eeprom_params = &iwl6000_eeprom_params, \ 343 .eeprom_params = &iwl6000_eeprom_params, \
344 .led_mode = IWL_LED_BLINK, \ 344 .led_mode = IWL_LED_BLINK, \
@@ -362,8 +362,8 @@ const struct iwl_cfg iwl6050_2abg_cfg = {
362 .device_family = IWL_DEVICE_FAMILY_6150, \ 362 .device_family = IWL_DEVICE_FAMILY_6150, \
363 .max_inst_size = IWL60_RTC_INST_SIZE, \ 363 .max_inst_size = IWL60_RTC_INST_SIZE, \
364 .max_data_size = IWL60_RTC_DATA_SIZE, \ 364 .max_data_size = IWL60_RTC_DATA_SIZE, \
365 .eeprom_ver = EEPROM_6150_EEPROM_VERSION, \ 365 .nvm_ver = EEPROM_6150_EEPROM_VERSION, \
366 .eeprom_calib_ver = EEPROM_6150_TX_POWER_VERSION, \ 366 .nvm_calib_ver = EEPROM_6150_TX_POWER_VERSION, \
367 .base_params = &iwl6050_base_params, \ 367 .base_params = &iwl6050_base_params, \
368 .eeprom_params = &iwl6000_eeprom_params, \ 368 .eeprom_params = &iwl6000_eeprom_params, \
369 .led_mode = IWL_LED_BLINK, \ 369 .led_mode = IWL_LED_BLINK, \
@@ -389,8 +389,8 @@ const struct iwl_cfg iwl6000_3agn_cfg = {
389 .device_family = IWL_DEVICE_FAMILY_6000, 389 .device_family = IWL_DEVICE_FAMILY_6000,
390 .max_inst_size = IWL60_RTC_INST_SIZE, 390 .max_inst_size = IWL60_RTC_INST_SIZE,
391 .max_data_size = IWL60_RTC_DATA_SIZE, 391 .max_data_size = IWL60_RTC_DATA_SIZE,
392 .eeprom_ver = EEPROM_6000_EEPROM_VERSION, 392 .nvm_ver = EEPROM_6000_EEPROM_VERSION,
393 .eeprom_calib_ver = EEPROM_6000_TX_POWER_VERSION, 393 .nvm_calib_ver = EEPROM_6000_TX_POWER_VERSION,
394 .base_params = &iwl6000_base_params, 394 .base_params = &iwl6000_base_params,
395 .eeprom_params = &iwl6000_eeprom_params, 395 .eeprom_params = &iwl6000_eeprom_params,
396 .ht_params = &iwl6000_ht_params, 396 .ht_params = &iwl6000_ht_params,