diff options
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-3945.c')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-3945.c | 9 |
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 953a9bec0639..51b90309ce5a 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 */ | ||
2205 | int iwl3945_hw_set_hw_setting(struct iwl3945_priv *priv) | 2206 | int 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 | */ | ||
2287 | inline int iwl3945_eeprom_acquire_semaphore(struct iwl3945_priv *priv) | 2296 | inline 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); |