---- a/drivers/net/wireless/ath/ath5k/eeprom.c
-+++ b/drivers/net/wireless/ath/ath5k/eeprom.c
-@@ -22,6 +22,8 @@
- \*************************************/
-
- #include <linux/slab.h>
+--- a/drivers/net/wireless/ath/ath5k/pci.c
++++ b/drivers/net/wireless/ath/ath5k/pci.c
+@@ -19,6 +19,7 @@
+ #include <linux/pci-aspm.h>
+ #include <linux/etherdevice.h>
+ #include <linux/module.h>
+#include <linux/ath5k_platform.h>
-+#include <linux/pci.h>
-
+ #include "../ath.h"
#include "ath5k.h"
- #include "reg.h"
-@@ -34,6 +36,18 @@
- static int ath5k_hw_eeprom_read(struct ath5k_hw *ah, u32 offset, u16 *data)
- {
+ #include "debug.h"
+@@ -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[0] == AR5K_EEPROM_MAGIC_VALUE)
-+ {
-+ ATH5K_INFO(ah->ah_sc, "using eeprom-content from platform_data\n");
-+ if (offset >= ATH5K_PLAT_EEP_MAX_WORDS) return -EIO;
++ 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 0;
++ return true;
+ }
-
++
/*
* Initialize EEPROM access
-@@ -1788,7 +1802,7 @@ ath5k_eeprom_init(struct ath5k_hw *ah)
- }
-
- /*
-- * 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)
- {
-@@ -1796,6 +1810,16 @@ int ath5k_eeprom_read_mac(struct ath5k_h
- u32 total, offset;
+ */
+@@ -120,6 +134,16 @@ static int ath5k_pci_eeprom_read_mac(str
u16 data;
- int octet, ret;
+ int octet;
+
+ struct ath5k_platform_data *pdata = NULL;
+
-+ if (ah->ah_sc->pdev)
-+ pdata = ah->ah_sc->pdev->dev.platform_data;
++ if (ah->pdev)
++ pdata = ah->pdev->dev.platform_data;
+
-+ if (pdata && pdata->macaddr)
-+ {
++ if (pdata && pdata->macaddr) {
+ memcpy(mac, pdata->macaddr, ETH_ALEN);
+ return 0;
+ }
++
+ AR5K_EEPROM_READ(0x20, data);
- ret = ath5k_hw_eeprom_read(ah, 0x20, &data);
- if (ret)
+ for (offset = 0x1f, octet = 0, total = 0; offset >= 0x1d; offset--) {