2008-04-24 11:55:23 -07:00
/******************************************************************************
*
2011-12-27 11:21:32 -08:00
* Copyright ( c ) 2007 - 2012 Intel Corporation . All rights reserved .
2008-04-24 11:55:23 -07:00
*
* This program is free software ; you can redistribute it and / or modify it
* under the terms of version 2 of the GNU General Public License as
* published by the Free Software Foundation .
*
* This program is distributed in the hope that it will be useful , but WITHOUT
* ANY WARRANTY ; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE . See the GNU General Public License for
* more details .
*
* You should have received a copy of the GNU General Public License along with
* this program ; if not , write to the Free Software Foundation , Inc . ,
* 51 Franklin Street , Fifth Floor , Boston , MA 02110 , USA
*
* The full GNU General Public License is included in this distribution in the
* file called LICENSE .
*
* Contact Information :
2010-03-17 18:57:13 -07:00
* Intel Linux Wireless < ilw @ linux . intel . com >
2008-04-24 11:55:23 -07:00
* Intel Corporation , 5200 N . E . Elam Young Parkway , Hillsboro , OR 97124 - 6497
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
# include <linux/module.h>
2011-06-12 05:34:31 -07:00
# include <linux/stringify.h>
2012-04-10 14:10:28 -07:00
# include "iwl-config.h"
2012-04-03 20:57:59 +02:00
# include "iwl-agn-hw.h"
# include "iwl-csr.h"
2012-05-16 19:13:54 +02:00
# include "cfg.h"
2008-04-24 11:55:23 -07:00
2008-12-02 12:14:06 -08:00
/* Highest firmware API version supported */
2011-02-16 11:49:34 -08:00
# define IWL5000_UCODE_API_MAX 5
2009-02-27 16:21:19 -08:00
# define IWL5150_UCODE_API_MAX 2
2008-04-24 11:55:23 -07:00
2012-04-22 07:55:27 -07:00
/* Oldest version we won't warn about */
# define IWL5000_UCODE_API_OK 5
# define IWL5150_UCODE_API_OK 2
2008-12-02 12:14:06 -08:00
/* Lowest firmware API version supported */
# define IWL5000_UCODE_API_MIN 1
# define IWL5150_UCODE_API_MIN 1
2012-04-03 20:41:07 +02:00
/* EEPROM versions */
# define EEPROM_5000_TX_POWER_VERSION (4)
# define EEPROM_5000_EEPROM_VERSION (0x11A)
# define EEPROM_5050_TX_POWER_VERSION (4)
# define EEPROM_5050_EEPROM_VERSION (0x21E)
2008-12-02 12:14:06 -08:00
# define IWL5000_FW_PRE "iwlwifi-5000-"
2011-06-12 05:34:31 -07:00
# define IWL5000_MODULE_FIRMWARE(api) IWL5000_FW_PRE __stringify(api) ".ucode"
2008-12-02 12:14:06 -08:00
# define IWL5150_FW_PRE "iwlwifi-5150-"
2011-06-12 05:34:31 -07:00
# define IWL5150_MODULE_FIRMWARE(api) IWL5150_FW_PRE __stringify(api) ".ucode"
2008-10-14 12:32:41 -07:00
2012-03-06 13:30:56 -08:00
static const struct iwl_base_params iwl5000_base_params = {
2010-03-16 17:41:23 -07:00
. eeprom_size = IWLAGN_EEPROM_IMG_SIZE ,
. num_of_queues = IWLAGN_NUM_QUEUES ,
2009-10-23 13:42:21 -07:00
. pll_cfg_val = CSR50_ANA_PLL_CFG_VAL ,
2009-09-11 10:38:14 -07:00
. led_compensation = 51 ,
2010-01-22 14:22:46 -08:00
. plcp_delta_threshold = IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF ,
2010-02-05 11:33:46 -08:00
. chain_noise_scale = 1000 ,
2012-04-09 17:46:54 -07:00
. wd_timeout = IWL_WATCHHDOG_DISABLED ,
2010-03-26 12:54:37 -07:00
. max_event_log_size = 512 ,
2011-08-02 09:08:37 -07:00
. no_idle_support = true ,
2008-04-24 11:55:23 -07:00
} ;
2012-03-06 13:30:56 -08:00
static const struct iwl_ht_params iwl5000_ht_params = {
2010-10-06 08:10:00 -07:00
. ht_greenfield_support = true ,
} ;
2010-12-08 07:51:50 -08:00
# define IWL_DEVICE_5000 \
. fw_name_pre = IWL5000_FW_PRE , \
. ucode_api_max = IWL5000_UCODE_API_MAX , \
2012-04-22 07:55:27 -07:00
. ucode_api_ok = IWL5000_UCODE_API_OK , \
2010-12-08 07:51:50 -08:00
. ucode_api_min = IWL5000_UCODE_API_MIN , \
2012-04-09 17:47:00 -07:00
. device_family = IWL_DEVICE_FAMILY_5000 , \
2012-02-07 12:56:26 +02:00
. max_inst_size = IWLAGN_RTC_INST_SIZE , \
. max_data_size = IWLAGN_RTC_DATA_SIZE , \
2010-12-08 07:51:50 -08:00
. eeprom_ver = EEPROM_5000_EEPROM_VERSION , \
. eeprom_calib_ver = EEPROM_5000_TX_POWER_VERSION , \
. base_params = & iwl5000_base_params , \
. led_mode = IWL_LED_BLINK
2012-03-05 11:24:33 -08:00
const struct iwl_cfg iwl5300_agn_cfg = {
2010-10-06 08:10:00 -07:00
. name = " Intel(R) Ultimate N WiFi Link 5300 AGN " ,
2010-12-08 07:51:50 -08:00
IWL_DEVICE_5000 ,
2011-04-05 08:55:05 -07:00
/* at least EEPROM 0x11A has wrong info */
. valid_tx_ant = ANT_ABC , /* .cfg overwrite */
. valid_rx_ant = ANT_ABC , /* .cfg overwrite */
2010-10-06 08:10:00 -07:00
. ht_params = & iwl5000_ht_params ,
} ;
2008-04-24 11:55:23 -07:00
2012-03-05 11:24:33 -08:00
const struct iwl_cfg iwl5100_bgn_cfg = {
2010-03-05 17:05:20 -08:00
. name = " Intel(R) WiFi Link 5100 BGN " ,
2010-12-08 07:51:50 -08:00
IWL_DEVICE_5000 ,
2010-11-15 13:43:07 -08:00
. valid_tx_ant = ANT_B , /* .cfg overwrite */
. valid_rx_ant = ANT_AB , /* .cfg overwrite */
2010-10-06 08:10:00 -07:00
. ht_params = & iwl5000_ht_params ,
2008-07-11 11:53:30 +08:00
} ;
2012-03-05 11:24:33 -08:00
const struct iwl_cfg iwl5100_abg_cfg = {
2010-03-05 17:05:20 -08:00
. name = " Intel(R) WiFi Link 5100 ABG " ,
2010-12-08 07:51:50 -08:00
IWL_DEVICE_5000 ,
2010-11-15 13:43:07 -08:00
. valid_tx_ant = ANT_B , /* .cfg overwrite */
. valid_rx_ant = ANT_AB , /* .cfg overwrite */
2008-07-11 11:53:30 +08:00
} ;
2012-03-05 11:24:33 -08:00
const struct iwl_cfg iwl5100_agn_cfg = {
2010-03-05 17:05:20 -08:00
. name = " Intel(R) WiFi Link 5100 AGN " ,
2010-12-08 07:51:50 -08:00
IWL_DEVICE_5000 ,
2010-11-15 13:43:07 -08:00
. valid_tx_ant = ANT_B , /* .cfg overwrite */
. valid_rx_ant = ANT_AB , /* .cfg overwrite */
2010-10-06 08:10:00 -07:00
. ht_params = & iwl5000_ht_params ,
2008-04-24 11:55:23 -07:00
} ;
2012-03-05 11:24:33 -08:00
const struct iwl_cfg iwl5350_agn_cfg = {
2010-03-05 17:05:20 -08:00
. name = " Intel(R) WiMAX/WiFi Link 5350 AGN " ,
2008-12-02 12:14:06 -08:00
. fw_name_pre = IWL5000_FW_PRE ,
. ucode_api_max = IWL5000_UCODE_API_MAX ,
2012-04-22 07:55:27 -07:00
. ucode_api_ok = IWL5000_UCODE_API_OK ,
2008-12-02 12:14:06 -08:00
. ucode_api_min = IWL5000_UCODE_API_MIN ,
2012-04-09 17:47:00 -07:00
. device_family = IWL_DEVICE_FAMILY_5000 ,
2012-02-07 12:56:26 +02:00
. max_inst_size = IWLAGN_RTC_INST_SIZE ,
. max_data_size = IWLAGN_RTC_DATA_SIZE ,
2008-10-23 23:48:51 -07:00
. eeprom_ver = EEPROM_5050_EEPROM_VERSION ,
. eeprom_calib_ver = EEPROM_5050_TX_POWER_VERSION ,
2010-10-06 08:10:00 -07:00
. base_params = & iwl5000_base_params ,
. ht_params = & iwl5000_ht_params ,
2010-11-09 09:21:34 -08:00
. led_mode = IWL_LED_BLINK ,
2010-12-07 08:06:31 -08:00
. internal_wimax_coex = true ,
2008-04-24 11:55:23 -07:00
} ;
2010-12-08 07:51:50 -08:00
# define IWL_DEVICE_5150 \
. fw_name_pre = IWL5150_FW_PRE , \
. ucode_api_max = IWL5150_UCODE_API_MAX , \
2012-04-22 07:55:27 -07:00
. ucode_api_ok = IWL5150_UCODE_API_OK , \
2010-12-08 07:51:50 -08:00
. ucode_api_min = IWL5150_UCODE_API_MIN , \
2012-04-09 17:47:00 -07:00
. device_family = IWL_DEVICE_FAMILY_5150 , \
2012-02-07 12:56:26 +02:00
. max_inst_size = IWLAGN_RTC_INST_SIZE , \
. max_data_size = IWLAGN_RTC_DATA_SIZE , \
2010-12-08 07:51:50 -08:00
. eeprom_ver = EEPROM_5050_EEPROM_VERSION , \
. eeprom_calib_ver = EEPROM_5050_TX_POWER_VERSION , \
. base_params = & iwl5000_base_params , \
2011-11-25 11:11:43 -08:00
. no_xtal_calib = true , \
2010-12-08 07:51:50 -08:00
. led_mode = IWL_LED_BLINK , \
. internal_wimax_coex = true
2012-03-05 11:24:33 -08:00
const struct iwl_cfg iwl5150_agn_cfg = {
2010-03-05 17:05:20 -08:00
. name = " Intel(R) WiMAX/WiFi Link 5150 AGN " ,
2010-12-08 07:51:50 -08:00
IWL_DEVICE_5150 ,
2010-10-06 08:10:00 -07:00
. ht_params = & iwl5000_ht_params ,
2010-12-08 07:51:50 -08:00
2008-12-01 16:32:18 -08:00
} ;
2012-03-05 11:24:33 -08:00
const struct iwl_cfg iwl5150_abg_cfg = {
2010-03-05 17:05:20 -08:00
. name = " Intel(R) WiMAX/WiFi Link 5150 ABG " ,
2010-12-08 07:51:50 -08:00
IWL_DEVICE_5150 ,
2008-12-01 16:32:18 -08:00
} ;
2012-04-22 07:55:27 -07:00
MODULE_FIRMWARE ( IWL5000_MODULE_FIRMWARE ( IWL5000_UCODE_API_OK ) ) ;
MODULE_FIRMWARE ( IWL5150_MODULE_FIRMWARE ( IWL5150_UCODE_API_OK ) ) ;