1*4882a593Smuzhiyun // SPDX-License-Identifier: GPL-2.0-only 2*4882a593Smuzhiyun /****************************************************************************** 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * Copyright(c) 2008 - 2014 Intel Corporation. All rights reserved. 5*4882a593Smuzhiyun * Copyright(c) 2018 - 2019 Intel Corporation 6*4882a593Smuzhiyun * 7*4882a593Smuzhiyun * Contact Information: 8*4882a593Smuzhiyun * Intel Linux Wireless <linuxwifi@intel.com> 9*4882a593Smuzhiyun * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 10*4882a593Smuzhiyun * 11*4882a593Smuzhiyun *****************************************************************************/ 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun #include <linux/module.h> 14*4882a593Smuzhiyun #include <linux/stringify.h> 15*4882a593Smuzhiyun #include "iwl-config.h" 16*4882a593Smuzhiyun #include "iwl-agn-hw.h" 17*4882a593Smuzhiyun #include "dvm/commands.h" /* needed for BT for now */ 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun /* Highest firmware API version supported */ 20*4882a593Smuzhiyun #define IWL6000_UCODE_API_MAX 6 21*4882a593Smuzhiyun #define IWL6050_UCODE_API_MAX 5 22*4882a593Smuzhiyun #define IWL6000G2_UCODE_API_MAX 6 23*4882a593Smuzhiyun #define IWL6035_UCODE_API_MAX 6 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun /* Lowest firmware API version supported */ 26*4882a593Smuzhiyun #define IWL6000_UCODE_API_MIN 4 27*4882a593Smuzhiyun #define IWL6050_UCODE_API_MIN 4 28*4882a593Smuzhiyun #define IWL6000G2_UCODE_API_MIN 5 29*4882a593Smuzhiyun #define IWL6035_UCODE_API_MIN 6 30*4882a593Smuzhiyun 31*4882a593Smuzhiyun /* EEPROM versions */ 32*4882a593Smuzhiyun #define EEPROM_6000_TX_POWER_VERSION (4) 33*4882a593Smuzhiyun #define EEPROM_6000_EEPROM_VERSION (0x423) 34*4882a593Smuzhiyun #define EEPROM_6050_TX_POWER_VERSION (4) 35*4882a593Smuzhiyun #define EEPROM_6050_EEPROM_VERSION (0x532) 36*4882a593Smuzhiyun #define EEPROM_6150_TX_POWER_VERSION (6) 37*4882a593Smuzhiyun #define EEPROM_6150_EEPROM_VERSION (0x553) 38*4882a593Smuzhiyun #define EEPROM_6005_TX_POWER_VERSION (6) 39*4882a593Smuzhiyun #define EEPROM_6005_EEPROM_VERSION (0x709) 40*4882a593Smuzhiyun #define EEPROM_6030_TX_POWER_VERSION (6) 41*4882a593Smuzhiyun #define EEPROM_6030_EEPROM_VERSION (0x709) 42*4882a593Smuzhiyun #define EEPROM_6035_TX_POWER_VERSION (6) 43*4882a593Smuzhiyun #define EEPROM_6035_EEPROM_VERSION (0x753) 44*4882a593Smuzhiyun 45*4882a593Smuzhiyun #define IWL6000_FW_PRE "iwlwifi-6000-" 46*4882a593Smuzhiyun #define IWL6000_MODULE_FIRMWARE(api) IWL6000_FW_PRE __stringify(api) ".ucode" 47*4882a593Smuzhiyun 48*4882a593Smuzhiyun #define IWL6050_FW_PRE "iwlwifi-6050-" 49*4882a593Smuzhiyun #define IWL6050_MODULE_FIRMWARE(api) IWL6050_FW_PRE __stringify(api) ".ucode" 50*4882a593Smuzhiyun 51*4882a593Smuzhiyun #define IWL6005_FW_PRE "iwlwifi-6000g2a-" 52*4882a593Smuzhiyun #define IWL6005_MODULE_FIRMWARE(api) IWL6005_FW_PRE __stringify(api) ".ucode" 53*4882a593Smuzhiyun 54*4882a593Smuzhiyun #define IWL6030_FW_PRE "iwlwifi-6000g2b-" 55*4882a593Smuzhiyun #define IWL6030_MODULE_FIRMWARE(api) IWL6030_FW_PRE __stringify(api) ".ucode" 56*4882a593Smuzhiyun 57*4882a593Smuzhiyun static const struct iwl_base_params iwl6000_base_params = { 58*4882a593Smuzhiyun .eeprom_size = OTP_LOW_IMAGE_SIZE_2K, 59*4882a593Smuzhiyun .num_of_queues = IWLAGN_NUM_QUEUES, 60*4882a593Smuzhiyun .max_tfd_queue_size = 256, 61*4882a593Smuzhiyun .max_ll_items = OTP_MAX_LL_ITEMS_6x00, 62*4882a593Smuzhiyun .shadow_ram_support = true, 63*4882a593Smuzhiyun .led_compensation = 51, 64*4882a593Smuzhiyun .wd_timeout = IWL_DEF_WD_TIMEOUT, 65*4882a593Smuzhiyun .max_event_log_size = 512, 66*4882a593Smuzhiyun .shadow_reg_enable = false, /* TODO: fix bugs using this feature */ 67*4882a593Smuzhiyun .scd_chain_ext_wa = true, 68*4882a593Smuzhiyun }; 69*4882a593Smuzhiyun 70*4882a593Smuzhiyun static const struct iwl_base_params iwl6050_base_params = { 71*4882a593Smuzhiyun .eeprom_size = OTP_LOW_IMAGE_SIZE_2K, 72*4882a593Smuzhiyun .num_of_queues = IWLAGN_NUM_QUEUES, 73*4882a593Smuzhiyun .max_tfd_queue_size = 256, 74*4882a593Smuzhiyun .max_ll_items = OTP_MAX_LL_ITEMS_6x50, 75*4882a593Smuzhiyun .shadow_ram_support = true, 76*4882a593Smuzhiyun .led_compensation = 51, 77*4882a593Smuzhiyun .wd_timeout = IWL_DEF_WD_TIMEOUT, 78*4882a593Smuzhiyun .max_event_log_size = 1024, 79*4882a593Smuzhiyun .shadow_reg_enable = false, /* TODO: fix bugs using this feature */ 80*4882a593Smuzhiyun .scd_chain_ext_wa = true, 81*4882a593Smuzhiyun }; 82*4882a593Smuzhiyun 83*4882a593Smuzhiyun static const struct iwl_base_params iwl6000_g2_base_params = { 84*4882a593Smuzhiyun .eeprom_size = OTP_LOW_IMAGE_SIZE_2K, 85*4882a593Smuzhiyun .num_of_queues = IWLAGN_NUM_QUEUES, 86*4882a593Smuzhiyun .max_tfd_queue_size = 256, 87*4882a593Smuzhiyun .max_ll_items = OTP_MAX_LL_ITEMS_6x00, 88*4882a593Smuzhiyun .shadow_ram_support = true, 89*4882a593Smuzhiyun .led_compensation = 57, 90*4882a593Smuzhiyun .wd_timeout = IWL_LONG_WD_TIMEOUT, 91*4882a593Smuzhiyun .max_event_log_size = 512, 92*4882a593Smuzhiyun .shadow_reg_enable = false, /* TODO: fix bugs using this feature */ 93*4882a593Smuzhiyun .scd_chain_ext_wa = true, 94*4882a593Smuzhiyun }; 95*4882a593Smuzhiyun 96*4882a593Smuzhiyun static const struct iwl_ht_params iwl6000_ht_params = { 97*4882a593Smuzhiyun .ht_greenfield_support = true, 98*4882a593Smuzhiyun .use_rts_for_aggregation = true, /* use rts/cts protection */ 99*4882a593Smuzhiyun .ht40_bands = BIT(NL80211_BAND_2GHZ) | BIT(NL80211_BAND_5GHZ), 100*4882a593Smuzhiyun }; 101*4882a593Smuzhiyun 102*4882a593Smuzhiyun static const struct iwl_eeprom_params iwl6000_eeprom_params = { 103*4882a593Smuzhiyun .regulatory_bands = { 104*4882a593Smuzhiyun EEPROM_REG_BAND_1_CHANNELS, 105*4882a593Smuzhiyun EEPROM_REG_BAND_2_CHANNELS, 106*4882a593Smuzhiyun EEPROM_REG_BAND_3_CHANNELS, 107*4882a593Smuzhiyun EEPROM_REG_BAND_4_CHANNELS, 108*4882a593Smuzhiyun EEPROM_REG_BAND_5_CHANNELS, 109*4882a593Smuzhiyun EEPROM_6000_REG_BAND_24_HT40_CHANNELS, 110*4882a593Smuzhiyun EEPROM_REG_BAND_52_HT40_CHANNELS 111*4882a593Smuzhiyun }, 112*4882a593Smuzhiyun .enhanced_txpower = true, 113*4882a593Smuzhiyun }; 114*4882a593Smuzhiyun 115*4882a593Smuzhiyun #define IWL_DEVICE_6005 \ 116*4882a593Smuzhiyun .fw_name_pre = IWL6005_FW_PRE, \ 117*4882a593Smuzhiyun .ucode_api_max = IWL6000G2_UCODE_API_MAX, \ 118*4882a593Smuzhiyun .ucode_api_min = IWL6000G2_UCODE_API_MIN, \ 119*4882a593Smuzhiyun .trans.device_family = IWL_DEVICE_FAMILY_6005, \ 120*4882a593Smuzhiyun .max_inst_size = IWL60_RTC_INST_SIZE, \ 121*4882a593Smuzhiyun .max_data_size = IWL60_RTC_DATA_SIZE, \ 122*4882a593Smuzhiyun .nvm_ver = EEPROM_6005_EEPROM_VERSION, \ 123*4882a593Smuzhiyun .nvm_calib_ver = EEPROM_6005_TX_POWER_VERSION, \ 124*4882a593Smuzhiyun .trans.base_params = &iwl6000_g2_base_params, \ 125*4882a593Smuzhiyun .eeprom_params = &iwl6000_eeprom_params, \ 126*4882a593Smuzhiyun .led_mode = IWL_LED_RF_STATE, \ 127*4882a593Smuzhiyun .max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K 128*4882a593Smuzhiyun 129*4882a593Smuzhiyun const struct iwl_cfg iwl6005_2agn_cfg = { 130*4882a593Smuzhiyun .name = "Intel(R) Centrino(R) Advanced-N 6205 AGN", 131*4882a593Smuzhiyun IWL_DEVICE_6005, 132*4882a593Smuzhiyun .ht_params = &iwl6000_ht_params, 133*4882a593Smuzhiyun }; 134*4882a593Smuzhiyun 135*4882a593Smuzhiyun const struct iwl_cfg iwl6005_2abg_cfg = { 136*4882a593Smuzhiyun .name = "Intel(R) Centrino(R) Advanced-N 6205 ABG", 137*4882a593Smuzhiyun IWL_DEVICE_6005, 138*4882a593Smuzhiyun }; 139*4882a593Smuzhiyun 140*4882a593Smuzhiyun const struct iwl_cfg iwl6005_2bg_cfg = { 141*4882a593Smuzhiyun .name = "Intel(R) Centrino(R) Advanced-N 6205 BG", 142*4882a593Smuzhiyun IWL_DEVICE_6005, 143*4882a593Smuzhiyun }; 144*4882a593Smuzhiyun 145*4882a593Smuzhiyun const struct iwl_cfg iwl6005_2agn_sff_cfg = { 146*4882a593Smuzhiyun .name = "Intel(R) Centrino(R) Advanced-N 6205S AGN", 147*4882a593Smuzhiyun IWL_DEVICE_6005, 148*4882a593Smuzhiyun .ht_params = &iwl6000_ht_params, 149*4882a593Smuzhiyun }; 150*4882a593Smuzhiyun 151*4882a593Smuzhiyun const struct iwl_cfg iwl6005_2agn_d_cfg = { 152*4882a593Smuzhiyun .name = "Intel(R) Centrino(R) Advanced-N 6205D AGN", 153*4882a593Smuzhiyun IWL_DEVICE_6005, 154*4882a593Smuzhiyun .ht_params = &iwl6000_ht_params, 155*4882a593Smuzhiyun }; 156*4882a593Smuzhiyun 157*4882a593Smuzhiyun const struct iwl_cfg iwl6005_2agn_mow1_cfg = { 158*4882a593Smuzhiyun .name = "Intel(R) Centrino(R) Advanced-N 6206 AGN", 159*4882a593Smuzhiyun IWL_DEVICE_6005, 160*4882a593Smuzhiyun .ht_params = &iwl6000_ht_params, 161*4882a593Smuzhiyun }; 162*4882a593Smuzhiyun 163*4882a593Smuzhiyun const struct iwl_cfg iwl6005_2agn_mow2_cfg = { 164*4882a593Smuzhiyun .name = "Intel(R) Centrino(R) Advanced-N 6207 AGN", 165*4882a593Smuzhiyun IWL_DEVICE_6005, 166*4882a593Smuzhiyun .ht_params = &iwl6000_ht_params, 167*4882a593Smuzhiyun }; 168*4882a593Smuzhiyun 169*4882a593Smuzhiyun #define IWL_DEVICE_6030 \ 170*4882a593Smuzhiyun .fw_name_pre = IWL6030_FW_PRE, \ 171*4882a593Smuzhiyun .ucode_api_max = IWL6000G2_UCODE_API_MAX, \ 172*4882a593Smuzhiyun .ucode_api_min = IWL6000G2_UCODE_API_MIN, \ 173*4882a593Smuzhiyun .trans.device_family = IWL_DEVICE_FAMILY_6030, \ 174*4882a593Smuzhiyun .max_inst_size = IWL60_RTC_INST_SIZE, \ 175*4882a593Smuzhiyun .max_data_size = IWL60_RTC_DATA_SIZE, \ 176*4882a593Smuzhiyun .nvm_ver = EEPROM_6030_EEPROM_VERSION, \ 177*4882a593Smuzhiyun .nvm_calib_ver = EEPROM_6030_TX_POWER_VERSION, \ 178*4882a593Smuzhiyun .trans.base_params = &iwl6000_g2_base_params, \ 179*4882a593Smuzhiyun .eeprom_params = &iwl6000_eeprom_params, \ 180*4882a593Smuzhiyun .led_mode = IWL_LED_RF_STATE, \ 181*4882a593Smuzhiyun .max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K 182*4882a593Smuzhiyun 183*4882a593Smuzhiyun const struct iwl_cfg iwl6030_2agn_cfg = { 184*4882a593Smuzhiyun .name = "Intel(R) Centrino(R) Advanced-N 6230 AGN", 185*4882a593Smuzhiyun IWL_DEVICE_6030, 186*4882a593Smuzhiyun .ht_params = &iwl6000_ht_params, 187*4882a593Smuzhiyun }; 188*4882a593Smuzhiyun 189*4882a593Smuzhiyun const struct iwl_cfg iwl6030_2abg_cfg = { 190*4882a593Smuzhiyun .name = "Intel(R) Centrino(R) Advanced-N 6230 ABG", 191*4882a593Smuzhiyun IWL_DEVICE_6030, 192*4882a593Smuzhiyun }; 193*4882a593Smuzhiyun 194*4882a593Smuzhiyun const struct iwl_cfg iwl6030_2bgn_cfg = { 195*4882a593Smuzhiyun .name = "Intel(R) Centrino(R) Advanced-N 6230 BGN", 196*4882a593Smuzhiyun IWL_DEVICE_6030, 197*4882a593Smuzhiyun .ht_params = &iwl6000_ht_params, 198*4882a593Smuzhiyun }; 199*4882a593Smuzhiyun 200*4882a593Smuzhiyun const struct iwl_cfg iwl6030_2bg_cfg = { 201*4882a593Smuzhiyun .name = "Intel(R) Centrino(R) Advanced-N 6230 BG", 202*4882a593Smuzhiyun IWL_DEVICE_6030, 203*4882a593Smuzhiyun }; 204*4882a593Smuzhiyun 205*4882a593Smuzhiyun #define IWL_DEVICE_6035 \ 206*4882a593Smuzhiyun .fw_name_pre = IWL6030_FW_PRE, \ 207*4882a593Smuzhiyun .ucode_api_max = IWL6035_UCODE_API_MAX, \ 208*4882a593Smuzhiyun .ucode_api_min = IWL6035_UCODE_API_MIN, \ 209*4882a593Smuzhiyun .trans.device_family = IWL_DEVICE_FAMILY_6030, \ 210*4882a593Smuzhiyun .max_inst_size = IWL60_RTC_INST_SIZE, \ 211*4882a593Smuzhiyun .max_data_size = IWL60_RTC_DATA_SIZE, \ 212*4882a593Smuzhiyun .nvm_ver = EEPROM_6030_EEPROM_VERSION, \ 213*4882a593Smuzhiyun .nvm_calib_ver = EEPROM_6030_TX_POWER_VERSION, \ 214*4882a593Smuzhiyun .trans.base_params = &iwl6000_g2_base_params, \ 215*4882a593Smuzhiyun .eeprom_params = &iwl6000_eeprom_params, \ 216*4882a593Smuzhiyun .led_mode = IWL_LED_RF_STATE, \ 217*4882a593Smuzhiyun .max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K 218*4882a593Smuzhiyun 219*4882a593Smuzhiyun const struct iwl_cfg iwl6035_2agn_cfg = { 220*4882a593Smuzhiyun .name = "Intel(R) Centrino(R) Advanced-N 6235 AGN", 221*4882a593Smuzhiyun IWL_DEVICE_6035, 222*4882a593Smuzhiyun .ht_params = &iwl6000_ht_params, 223*4882a593Smuzhiyun }; 224*4882a593Smuzhiyun 225*4882a593Smuzhiyun const struct iwl_cfg iwl6035_2agn_sff_cfg = { 226*4882a593Smuzhiyun .name = "Intel(R) Centrino(R) Ultimate-N 6235 AGN", 227*4882a593Smuzhiyun IWL_DEVICE_6035, 228*4882a593Smuzhiyun .ht_params = &iwl6000_ht_params, 229*4882a593Smuzhiyun }; 230*4882a593Smuzhiyun 231*4882a593Smuzhiyun const struct iwl_cfg iwl1030_bgn_cfg = { 232*4882a593Smuzhiyun .name = "Intel(R) Centrino(R) Wireless-N 1030 BGN", 233*4882a593Smuzhiyun IWL_DEVICE_6030, 234*4882a593Smuzhiyun .ht_params = &iwl6000_ht_params, 235*4882a593Smuzhiyun }; 236*4882a593Smuzhiyun 237*4882a593Smuzhiyun const struct iwl_cfg iwl1030_bg_cfg = { 238*4882a593Smuzhiyun .name = "Intel(R) Centrino(R) Wireless-N 1030 BG", 239*4882a593Smuzhiyun IWL_DEVICE_6030, 240*4882a593Smuzhiyun }; 241*4882a593Smuzhiyun 242*4882a593Smuzhiyun const struct iwl_cfg iwl130_bgn_cfg = { 243*4882a593Smuzhiyun .name = "Intel(R) Centrino(R) Wireless-N 130 BGN", 244*4882a593Smuzhiyun IWL_DEVICE_6030, 245*4882a593Smuzhiyun .ht_params = &iwl6000_ht_params, 246*4882a593Smuzhiyun .rx_with_siso_diversity = true, 247*4882a593Smuzhiyun }; 248*4882a593Smuzhiyun 249*4882a593Smuzhiyun const struct iwl_cfg iwl130_bg_cfg = { 250*4882a593Smuzhiyun .name = "Intel(R) Centrino(R) Wireless-N 130 BG", 251*4882a593Smuzhiyun IWL_DEVICE_6030, 252*4882a593Smuzhiyun .rx_with_siso_diversity = true, 253*4882a593Smuzhiyun }; 254*4882a593Smuzhiyun 255*4882a593Smuzhiyun /* 256*4882a593Smuzhiyun * "i": Internal configuration, use internal Power Amplifier 257*4882a593Smuzhiyun */ 258*4882a593Smuzhiyun #define IWL_DEVICE_6000i \ 259*4882a593Smuzhiyun .fw_name_pre = IWL6000_FW_PRE, \ 260*4882a593Smuzhiyun .ucode_api_max = IWL6000_UCODE_API_MAX, \ 261*4882a593Smuzhiyun .ucode_api_min = IWL6000_UCODE_API_MIN, \ 262*4882a593Smuzhiyun .trans.device_family = IWL_DEVICE_FAMILY_6000i, \ 263*4882a593Smuzhiyun .max_inst_size = IWL60_RTC_INST_SIZE, \ 264*4882a593Smuzhiyun .max_data_size = IWL60_RTC_DATA_SIZE, \ 265*4882a593Smuzhiyun .valid_tx_ant = ANT_BC, /* .cfg overwrite */ \ 266*4882a593Smuzhiyun .valid_rx_ant = ANT_BC, /* .cfg overwrite */ \ 267*4882a593Smuzhiyun .nvm_ver = EEPROM_6000_EEPROM_VERSION, \ 268*4882a593Smuzhiyun .nvm_calib_ver = EEPROM_6000_TX_POWER_VERSION, \ 269*4882a593Smuzhiyun .trans.base_params = &iwl6000_base_params, \ 270*4882a593Smuzhiyun .eeprom_params = &iwl6000_eeprom_params, \ 271*4882a593Smuzhiyun .led_mode = IWL_LED_BLINK, \ 272*4882a593Smuzhiyun .max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K 273*4882a593Smuzhiyun 274*4882a593Smuzhiyun const struct iwl_cfg iwl6000i_2agn_cfg = { 275*4882a593Smuzhiyun .name = "Intel(R) Centrino(R) Advanced-N 6200 AGN", 276*4882a593Smuzhiyun IWL_DEVICE_6000i, 277*4882a593Smuzhiyun .ht_params = &iwl6000_ht_params, 278*4882a593Smuzhiyun }; 279*4882a593Smuzhiyun 280*4882a593Smuzhiyun const struct iwl_cfg iwl6000i_2abg_cfg = { 281*4882a593Smuzhiyun .name = "Intel(R) Centrino(R) Advanced-N 6200 ABG", 282*4882a593Smuzhiyun IWL_DEVICE_6000i, 283*4882a593Smuzhiyun }; 284*4882a593Smuzhiyun 285*4882a593Smuzhiyun const struct iwl_cfg iwl6000i_2bg_cfg = { 286*4882a593Smuzhiyun .name = "Intel(R) Centrino(R) Advanced-N 6200 BG", 287*4882a593Smuzhiyun IWL_DEVICE_6000i, 288*4882a593Smuzhiyun }; 289*4882a593Smuzhiyun 290*4882a593Smuzhiyun #define IWL_DEVICE_6050 \ 291*4882a593Smuzhiyun .fw_name_pre = IWL6050_FW_PRE, \ 292*4882a593Smuzhiyun .ucode_api_max = IWL6050_UCODE_API_MAX, \ 293*4882a593Smuzhiyun .ucode_api_min = IWL6050_UCODE_API_MIN, \ 294*4882a593Smuzhiyun .trans.device_family = IWL_DEVICE_FAMILY_6050, \ 295*4882a593Smuzhiyun .max_inst_size = IWL60_RTC_INST_SIZE, \ 296*4882a593Smuzhiyun .max_data_size = IWL60_RTC_DATA_SIZE, \ 297*4882a593Smuzhiyun .valid_tx_ant = ANT_AB, /* .cfg overwrite */ \ 298*4882a593Smuzhiyun .valid_rx_ant = ANT_AB, /* .cfg overwrite */ \ 299*4882a593Smuzhiyun .nvm_ver = EEPROM_6050_EEPROM_VERSION, \ 300*4882a593Smuzhiyun .nvm_calib_ver = EEPROM_6050_TX_POWER_VERSION, \ 301*4882a593Smuzhiyun .trans.base_params = &iwl6050_base_params, \ 302*4882a593Smuzhiyun .eeprom_params = &iwl6000_eeprom_params, \ 303*4882a593Smuzhiyun .led_mode = IWL_LED_BLINK, \ 304*4882a593Smuzhiyun .internal_wimax_coex = true, \ 305*4882a593Smuzhiyun .max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K 306*4882a593Smuzhiyun 307*4882a593Smuzhiyun const struct iwl_cfg iwl6050_2agn_cfg = { 308*4882a593Smuzhiyun .name = "Intel(R) Centrino(R) Advanced-N + WiMAX 6250 AGN", 309*4882a593Smuzhiyun IWL_DEVICE_6050, 310*4882a593Smuzhiyun .ht_params = &iwl6000_ht_params, 311*4882a593Smuzhiyun }; 312*4882a593Smuzhiyun 313*4882a593Smuzhiyun const struct iwl_cfg iwl6050_2abg_cfg = { 314*4882a593Smuzhiyun .name = "Intel(R) Centrino(R) Advanced-N + WiMAX 6250 ABG", 315*4882a593Smuzhiyun IWL_DEVICE_6050, 316*4882a593Smuzhiyun }; 317*4882a593Smuzhiyun 318*4882a593Smuzhiyun #define IWL_DEVICE_6150 \ 319*4882a593Smuzhiyun .fw_name_pre = IWL6050_FW_PRE, \ 320*4882a593Smuzhiyun .ucode_api_max = IWL6050_UCODE_API_MAX, \ 321*4882a593Smuzhiyun .ucode_api_min = IWL6050_UCODE_API_MIN, \ 322*4882a593Smuzhiyun .trans.device_family = IWL_DEVICE_FAMILY_6150, \ 323*4882a593Smuzhiyun .max_inst_size = IWL60_RTC_INST_SIZE, \ 324*4882a593Smuzhiyun .max_data_size = IWL60_RTC_DATA_SIZE, \ 325*4882a593Smuzhiyun .nvm_ver = EEPROM_6150_EEPROM_VERSION, \ 326*4882a593Smuzhiyun .nvm_calib_ver = EEPROM_6150_TX_POWER_VERSION, \ 327*4882a593Smuzhiyun .trans.base_params = &iwl6050_base_params, \ 328*4882a593Smuzhiyun .eeprom_params = &iwl6000_eeprom_params, \ 329*4882a593Smuzhiyun .led_mode = IWL_LED_BLINK, \ 330*4882a593Smuzhiyun .internal_wimax_coex = true, \ 331*4882a593Smuzhiyun .max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K 332*4882a593Smuzhiyun 333*4882a593Smuzhiyun const struct iwl_cfg iwl6150_bgn_cfg = { 334*4882a593Smuzhiyun .name = "Intel(R) Centrino(R) Wireless-N + WiMAX 6150 BGN", 335*4882a593Smuzhiyun IWL_DEVICE_6150, 336*4882a593Smuzhiyun .ht_params = &iwl6000_ht_params, 337*4882a593Smuzhiyun }; 338*4882a593Smuzhiyun 339*4882a593Smuzhiyun const struct iwl_cfg iwl6150_bg_cfg = { 340*4882a593Smuzhiyun .name = "Intel(R) Centrino(R) Wireless-N + WiMAX 6150 BG", 341*4882a593Smuzhiyun IWL_DEVICE_6150, 342*4882a593Smuzhiyun }; 343*4882a593Smuzhiyun 344*4882a593Smuzhiyun const struct iwl_cfg iwl6000_3agn_cfg = { 345*4882a593Smuzhiyun .name = "Intel(R) Centrino(R) Ultimate-N 6300 AGN", 346*4882a593Smuzhiyun .fw_name_pre = IWL6000_FW_PRE, 347*4882a593Smuzhiyun .ucode_api_max = IWL6000_UCODE_API_MAX, 348*4882a593Smuzhiyun .ucode_api_min = IWL6000_UCODE_API_MIN, 349*4882a593Smuzhiyun .trans.device_family = IWL_DEVICE_FAMILY_6000, 350*4882a593Smuzhiyun .max_inst_size = IWL60_RTC_INST_SIZE, 351*4882a593Smuzhiyun .max_data_size = IWL60_RTC_DATA_SIZE, 352*4882a593Smuzhiyun .nvm_ver = EEPROM_6000_EEPROM_VERSION, 353*4882a593Smuzhiyun .nvm_calib_ver = EEPROM_6000_TX_POWER_VERSION, 354*4882a593Smuzhiyun .trans.base_params = &iwl6000_base_params, 355*4882a593Smuzhiyun .eeprom_params = &iwl6000_eeprom_params, 356*4882a593Smuzhiyun .ht_params = &iwl6000_ht_params, 357*4882a593Smuzhiyun .led_mode = IWL_LED_BLINK, 358*4882a593Smuzhiyun }; 359*4882a593Smuzhiyun 360*4882a593Smuzhiyun MODULE_FIRMWARE(IWL6000_MODULE_FIRMWARE(IWL6000_UCODE_API_MAX)); 361*4882a593Smuzhiyun MODULE_FIRMWARE(IWL6050_MODULE_FIRMWARE(IWL6050_UCODE_API_MAX)); 362*4882a593Smuzhiyun MODULE_FIRMWARE(IWL6005_MODULE_FIRMWARE(IWL6000G2_UCODE_API_MAX)); 363*4882a593Smuzhiyun MODULE_FIRMWARE(IWL6030_MODULE_FIRMWARE(IWL6000G2_UCODE_API_MAX)); 364