wpa_supplicant: fix regressions introduced by the ibss-rsn changes
[openwrt.git] / package / mac80211 / patches / 451-add-platform-eeprom-support-to-ath5k.patch
index 2ec20081b74ab9bd8aba51603241f5aec924c341..6e03d70a74db7d525623eb4bc5e8d9d185c53d2e 100644 (file)
@@ -1,67 +1,56 @@
---- 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--) {