diff options
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl3945-base.c')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl3945-base.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c index f96a1a2e90f4..8cef48c9d748 100644 --- a/drivers/net/wireless/iwlwifi/iwl3945-base.c +++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c | |||
@@ -1557,6 +1557,20 @@ static void get_eeprom_mac(struct iwl3945_priv *priv, u8 *mac) | |||
1557 | memcpy(mac, priv->eeprom.mac_address, 6); | 1557 | memcpy(mac, priv->eeprom.mac_address, 6); |
1558 | } | 1558 | } |
1559 | 1559 | ||
1560 | /* | ||
1561 | * Clear the OWNER_MSK, to establish driver (instead of uCode running on | ||
1562 | * embedded controller) as EEPROM reader; each read is a series of pulses | ||
1563 | * to/from the EEPROM chip, not a single event, so even reads could conflict | ||
1564 | * if they weren't arbitrated by some ownership mechanism. Here, the driver | ||
1565 | * simply claims ownership, which should be safe when this function is called | ||
1566 | * (i.e. before loading uCode!). | ||
1567 | */ | ||
1568 | static inline int iwl3945_eeprom_acquire_semaphore(struct iwl3945_priv *priv) | ||
1569 | { | ||
1570 | _iwl3945_clear_bit(priv, CSR_EEPROM_GP, CSR_EEPROM_GP_IF_OWNER_MSK); | ||
1571 | return 0; | ||
1572 | } | ||
1573 | |||
1560 | /** | 1574 | /** |
1561 | * iwl3945_eeprom_init - read EEPROM contents | 1575 | * iwl3945_eeprom_init - read EEPROM contents |
1562 | * | 1576 | * |