aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/iwl-3945.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-3945.c')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-3945.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-3945.c b/drivers/net/wireless/iwlwifi/iwl-3945.c
index 953a9bec063..51b90309ce5 100644
--- a/drivers/net/wireless/iwlwifi/iwl-3945.c
+++ b/drivers/net/wireless/iwlwifi/iwl-3945.c
@@ -2202,6 +2202,7 @@ int iwl3945_init_hw_rate_table(struct iwl3945_priv *priv)
2202 &rate_cmd); 2202 &rate_cmd);
2203} 2203}
2204 2204
2205/* Called when initializing driver */
2205int iwl3945_hw_set_hw_setting(struct iwl3945_priv *priv) 2206int iwl3945_hw_set_hw_setting(struct iwl3945_priv *priv)
2206{ 2207{
2207 memset((void *)&priv->hw_setting, 0, 2208 memset((void *)&priv->hw_setting, 0,
@@ -2284,6 +2285,14 @@ struct pci_device_id iwl3945_hw_card_ids[] = {
2284 {0} 2285 {0}
2285}; 2286};
2286 2287
2288/*
2289 * Clear the OWNER_MSK, to establish driver (instead of uCode running on
2290 * embedded controller) as EEPROM reader; each read is a series of pulses
2291 * to/from the EEPROM chip, not a single event, so even reads could conflict
2292 * if they weren't arbitrated by some ownership mechanism. Here, the driver
2293 * simply claims ownership, which should be safe when this function is called
2294 * (i.e. before loading uCode!).
2295 */
2287inline int iwl3945_eeprom_acquire_semaphore(struct iwl3945_priv *priv) 2296inline int iwl3945_eeprom_acquire_semaphore(struct iwl3945_priv *priv)
2288{ 2297{
2289 _iwl3945_clear_bit(priv, CSR_EEPROM_GP, CSR_EEPROM_GP_IF_OWNER_MSK); 2298 _iwl3945_clear_bit(priv, CSR_EEPROM_GP, CSR_EEPROM_GP_IF_OWNER_MSK);