ath5k: in-flash macs and eeprom for mach-eap7660d
authorGabor Juhos <juhosg@openwrt.org>
Thu, 15 Jul 2010 07:36:55 +0000 (07:36 +0000)
committerGabor Juhos <juhosg@openwrt.org>
Thu, 15 Jul 2010 07:36:55 +0000 (07:36 +0000)
This adds ath5k_platform.h to mac80211 and patches ath5k to respect
MAC addresses and eeprom content from platform_data, if supplied.

Signed-off-by: Daniel Golle <daniel.golle@gmail.com>
SVN-Revision: 22188

package/mac80211/Makefile
package/mac80211/patches/450-add-ath5k-platform.patch [new file with mode: 0644]
package/mac80211/patches/451-add-platform-eeprom-support-to-ath5k.patch [new file with mode: 0644]

index 51ac7696e2f413cdd680fb2e4773685af3e29407..11a9202c531544a6f3cfa645b96fcef3e89da98c 100644 (file)
@@ -11,7 +11,7 @@ include $(INCLUDE_DIR)/kernel.mk
 PKG_NAME:=mac80211
 
 PKG_VERSION:=2010-07-06
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources
 #      http://www.orbit-lab.org/kernel/compat-wireless-2.6/2010/11 \
 #      http://wireless.kernel.org/download/compat-wireless-2.6
diff --git a/package/mac80211/patches/450-add-ath5k-platform.patch b/package/mac80211/patches/450-add-ath5k-platform.patch
new file mode 100644 (file)
index 0000000..77717b9
--- /dev/null
@@ -0,0 +1,35 @@
+diff -Nur a/include/linux/ath5k_platform.h b/include/linux/ath5k_platform.h
+--- a/include/linux/ath5k_platform.h   1970-01-01 01:00:00.000000000 +0100
++++ b/include/linux/ath5k_platform.h   2010-06-21 00:19:52.000000000 +0200
+@@ -0,0 +1,30 @@
++/*
++ * Copyright (c) 2008 Atheros Communications Inc.
++ * Copyright (c) 2009 Gabor Juhos <juhosg@openwrt.org>
++ * Copyright (c) 2009 Imre Kaloz <kaloz@openwrt.org>
++ * Copyright (c) 2010 Daniel Golle <daniel.golle@gmail.com>
++ *
++ * Permission to use, copy, modify, and/or distribute this software for any
++ * purpose with or without fee is hereby granted, provided that the above
++ * copyright notice and this permission notice appear in all copies.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
++ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
++ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
++ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
++ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
++ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
++ */
++
++#ifndef _LINUX_ATH5K_PLATFORM_H
++#define _LINUX_ATH5K_PLATFORM_H
++
++#define ATH5K_PLAT_EEP_MAX_WORDS      2048
++
++struct ath5k_platform_data {
++      u16 *eeprom_data;
++      u8 *macaddr;
++};
++
++#endif /* _LINUX_ATH5K_PLATFORM_H */
+
diff --git a/package/mac80211/patches/451-add-platform-eeprom-support-to-ath5k.patch b/package/mac80211/patches/451-add-platform-eeprom-support-to-ath5k.patch
new file mode 100644 (file)
index 0000000..717acd2
--- /dev/null
@@ -0,0 +1,57 @@
+--- a/drivers/net/wireless/ath/ath5k/eeprom.c  2010-06-23 03:08:32.000000000 +0200
++++ b/drivers/net/wireless/ath/ath5k/eeprom.c  2010-06-23 05:59:30.000000000 +0200
+@@ -22,6 +23,8 @@
+ \*************************************/
+ #include <linux/slab.h>
++#include <linux/ath5k_platform.h>
++#include <linux/pci.h>
+ #include "ath5k.h"
+ #include "reg.h"
+@@ -34,6 +37,18 @@
+ static int ath5k_hw_eeprom_read(struct ath5k_hw *ah, u32 offset, u16 *data)
+ {
+       u32 status, timeout;
++      struct ath5k_platform_data *pdata = NULL;
++
++      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;
++              *data = pdata->eeprom_data[offset];
++              return 0;
++      }
+       /*
+        * Initialize EEPROM access
+@@ -1788,7 +1802,7 @@
+ }
+ /*
+- * 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 @@
+       u32 total, offset;
+       u16 data;
+       int octet, ret;
++      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;
++      }
+       ret = ath5k_hw_eeprom_read(ah, 0x20, &data);
+       if (ret)
+