|
@@ -1557,6 +1557,20 @@ static void get_eeprom_mac(struct iwl3945_priv *priv, u8 *mac)
|
|
memcpy(mac, priv->eeprom.mac_address, 6);
|
|
memcpy(mac, priv->eeprom.mac_address, 6);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+/*
|
|
|
|
+ * Clear the OWNER_MSK, to establish driver (instead of uCode running on
|
|
|
|
+ * embedded controller) as EEPROM reader; each read is a series of pulses
|
|
|
|
+ * to/from the EEPROM chip, not a single event, so even reads could conflict
|
|
|
|
+ * if they weren't arbitrated by some ownership mechanism. Here, the driver
|
|
|
|
+ * simply claims ownership, which should be safe when this function is called
|
|
|
|
+ * (i.e. before loading uCode!).
|
|
|
|
+ */
|
|
|
|
+static inline int iwl3945_eeprom_acquire_semaphore(struct iwl3945_priv *priv)
|
|
|
|
+{
|
|
|
|
+ _iwl3945_clear_bit(priv, CSR_EEPROM_GP, CSR_EEPROM_GP_IF_OWNER_MSK);
|
|
|
|
+ return 0;
|
|
|
|
+}
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* iwl3945_eeprom_init - read EEPROM contents
|
|
* iwl3945_eeprom_init - read EEPROM contents
|
|
*
|
|
*
|