---- a/drivers/net/wireless/ath/ath5k/eeprom.c
-+++ b/drivers/net/wireless/ath/ath5k/eeprom.c
-@@ -22,6 +22,8 @@
- \*************************************/
-
- #include <linux/slab.h>
-+#include <linux/ath5k_platform.h>
-+#include <linux/pci.h>
-
- #include "ath5k.h"
- #include "reg.h"
-@@ -1722,7 +1724,7 @@ ath5k_eeprom_read_spur_chans(struct ath5
- }
-
- /*
-- * Read the MAC address from eeprom
-+ * Read the MAC address from eeprom or platform_data
- */
- int ath5k_eeprom_read_mac(struct ath5k_hw *ah, u8 *mac)
- {
-@@ -1730,6 +1732,16 @@ int ath5k_eeprom_read_mac(struct ath5k_h
- u32 total, offset;
- u16 data;
- int octet;
-+ struct ath5k_platform_data *pdata = NULL;
-+
-+ if (ah->ah_sc->pdev)
-+ pdata = ah->ah_sc->pdev->dev.platform_data;
-+
-+ if (pdata && pdata->macaddr)
-+ {
-+ memcpy(mac, pdata->macaddr, ETH_ALEN);
-+ return 0;
-+ }
-
- AR5K_EEPROM_READ(0x20, data);
-
--- a/drivers/net/wireless/ath/ath5k/pci.c
+++ b/drivers/net/wireless/ath/ath5k/pci.c
-@@ -17,6 +17,7 @@
- #include <linux/nl80211.h>
- #include <linux/pci.h>
+@@ -19,6 +19,7 @@
#include <linux/pci-aspm.h>
+ #include <linux/etherdevice.h>
+ #include <linux/module.h>
+#include <linux/ath5k_platform.h>
#include "../ath.h"
#include "ath5k.h"
#include "debug.h"
-@@ -74,6 +75,19 @@ ath5k_pci_eeprom_read(struct ath_common
- {
+@@ -69,7 +70,7 @@ static void ath5k_pci_read_cachesize(str
+ }
+
+ /*
+- * Read from eeprom
++ * Read from eeprom or platform_data
+ */
+ static bool
+ ath5k_pci_eeprom_read(struct ath_common *common, u32 offset, u16 *data)
+@@ -77,6 +78,19 @@ ath5k_pci_eeprom_read(struct ath_common
struct ath5k_hw *ah = (struct ath5k_hw *) common->ah;
u32 status, timeout;
+
+ struct ath5k_platform_data *pdata = NULL;
++
++ if (ah->pdev)
++ pdata = ah->pdev->dev.platform_data;
+
-+ if (ah->ah_sc->pdev)
-+ pdata = ah->ah_sc->pdev->dev.platform_data;
++ if (pdata && pdata->eeprom_data && pdata->eeprom_data[61] == AR5K_EEPROM_MAGIC_VALUE) {
++ if (offset >= ATH5K_PLAT_EEP_MAX_WORDS)
++ return false;
++
++ *data = pdata->eeprom_data[offset];
++ return true;
++ }
+
-+ if (pdata && pdata->eeprom_data && pdata->eeprom_data[0] == AR5K_EEPROM_MAGIC_VALUE)
-+ {
-+ if (offset >= ATH5K_PLAT_EEP_MAX_WORDS)
-+ return -EIO;
+ /*
+ * Initialize EEPROM access
+ */
+@@ -120,6 +134,16 @@ static int ath5k_pci_eeprom_read_mac(str
+ u16 data;
+ int octet;
+
++ struct ath5k_platform_data *pdata = NULL;
+
-+ *data = pdata->eeprom_data[offset];
++ if (ah->pdev)
++ pdata = ah->pdev->dev.platform_data;
++
++ if (pdata && pdata->macaddr) {
++ memcpy(mac, pdata->macaddr, ETH_ALEN);
+ return 0;
+ }
++
+ AR5K_EEPROM_READ(0x20, data);
- /*
- * Initialize EEPROM access
+ for (offset = 0x1f, octet = 0, total = 0; offset >= 0x1d; offset--) {