aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/iwl-5000.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-5000.c')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-5000.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-5000.c b/drivers/net/wireless/iwlwifi/iwl-5000.c
index 1e63b497471..d8e3dd70423 100644
--- a/drivers/net/wireless/iwlwifi/iwl-5000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-5000.c
@@ -125,6 +125,33 @@ static u32 eeprom_indirect_address(const struct iwl_priv *priv, u32 address)
125 return (address & ADDRESS_MSK) + (offset << 1); 125 return (address & ADDRESS_MSK) + (offset << 1);
126} 126}
127 127
128static int iwl5000_eeprom_check_version(struct iwl_priv *priv)
129{
130 u16 eeprom_ver;
131 struct iwl_eeprom_calib_hdr {
132 u8 version;
133 u8 pa_type;
134 u16 voltage;
135 } *hdr;
136
137 eeprom_ver = iwl_eeprom_query16(priv, EEPROM_VERSION);
138
139 hdr = (struct iwl_eeprom_calib_hdr *)iwl_eeprom_query_addr(priv,
140 EEPROM_5000_CALIB_ALL);
141
142 if (eeprom_ver < EEPROM_5000_EEPROM_VERSION ||
143 hdr->version < EEPROM_5000_TX_POWER_VERSION)
144 goto err;
145
146 return 0;
147err:
148 IWL_ERROR("Unsuported EEPROM VER=0x%x < 0x%x CALIB=0x%x < 0x%x\n",
149 eeprom_ver, EEPROM_5000_EEPROM_VERSION,
150 hdr->version, EEPROM_5000_TX_POWER_VERSION);
151 return -EINVAL;
152
153}
154
128#ifdef CONFIG_IWL5000_RUN_TIME_CALIB 155#ifdef CONFIG_IWL5000_RUN_TIME_CALIB
129 156
130static void iwl5000_gain_computation(struct iwl_priv *priv, 157static void iwl5000_gain_computation(struct iwl_priv *priv,
@@ -179,6 +206,7 @@ static void iwl5000_gain_computation(struct iwl_priv *priv,
179 data->beacon_count = 0; 206 data->beacon_count = 0;
180} 207}
181 208
209
182static void iwl5000_chain_noise_reset(struct iwl_priv *priv) 210static void iwl5000_chain_noise_reset(struct iwl_priv *priv)
183{ 211{
184 struct iwl_chain_noise_data *data = &priv->chain_noise_data; 212 struct iwl_chain_noise_data *data = &priv->chain_noise_data;
@@ -394,6 +422,7 @@ static struct iwl_lib_ops iwl5000_lib = {
394 .verify_signature = iwlcore_eeprom_verify_signature, 422 .verify_signature = iwlcore_eeprom_verify_signature,
395 .acquire_semaphore = iwlcore_eeprom_acquire_semaphore, 423 .acquire_semaphore = iwlcore_eeprom_acquire_semaphore,
396 .release_semaphore = iwlcore_eeprom_release_semaphore, 424 .release_semaphore = iwlcore_eeprom_release_semaphore,
425 .check_version = iwl5000_eeprom_check_version,
397 .query_addr = iwl5000_eeprom_query_addr, 426 .query_addr = iwl5000_eeprom_query_addr,
398 }, 427 },
399}; 428};