2010.07.13. 19:26 keltezéssel, daniel.go...@gmail.com írta: > This adds ath_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.go...@gmail.com> > > Index: package/mac80211/patches/450-add-ath-platform.patch > =================================================================== > --- package/mac80211/patches/450-add-ath-platform.patch (revision 0) > +++ package/mac80211/patches/450-add-ath-platform.patch (revision 0) > @@ -0,0 +1,35 @@ > +diff -Nur a/include/linux/ath_platform.h b/include/linux/ath_platform.h > +--- a/include/linux/ath_platform.h 1970-01-01 01:00:00.000000000 +0100 > ++++ b/include/linux/ath_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 <juh...@openwrt.org> > ++ * Copyright (c) 2009 Imre Kaloz <ka...@openwrt.org> > ++ * Copyright (c) 2010 Daniel Golle <daniel.go...@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_ATH_PLATFORM_H > ++#define _LINUX_ATH_PLATFORM_H > ++ > ++#define ATH_PLAT_EEP_MAX_WORDS 2048 > ++ > ++struct ath_platform_data { > ++ u16 *eeprom_data; > ++ u8 *macaddr; > ++}; > ++ > ++#endif /* _LINUX_ATH_PLATFORM_H */ > + > Index: package/mac80211/patches/451-add-platform-eeprom-support-to-ath5k.patch > =================================================================== > --- package/mac80211/patches/451-add-platform-eeprom-support-to-ath5k.patch > (revision 0) > +++ package/mac80211/patches/451-add-platform-eeprom-support-to-ath5k.patch > (revision 0) > @@ -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/ath_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 ath_platform_data *pdata = NULL; > ++ > ++ if (ah->ah_sc->pdev) // we only got pdev with PCI bus, right? > ++ pdata = (struct ath_platform_data *) > ah->ah_sc->pdev->dev.platform_data;
The cast is not needed. > ++ > ++ if (pdata && ((__u16)(pdata->eeprom_data) == AR5K_EEPROM_MAGIC_VALUE)) You are checking the address of the eeprom_data instead of the first word of the actual data. > ++ { > ++ ATH5K_INFO(ah->ah_sc, "using eeprom-content from > platform_data\n"); > ++ if (offset >= ATH_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 ath_platform_data *pdata = NULL; > ++ > ++ if (ah->ah_sc->pdev) > ++ pdata = (struct ath_platform_data *) > ah->ah_sc->pdev->dev.platform_data; The cast is not needed. > ++ > ++ if (pdata && pdata->macaddr) > ++ { > ++ memcpy(mac, pdata->macaddr, ETH_ALEN); > ++ return 0; > ++ } > + > + ret = ath5k_hw_eeprom_read(ah, 0x20, &data); > + if (ret) > + > _______________________________________________ > openwrt-devel mailing list > openwrt-devel@lists.openwrt.org > https://lists.openwrt.org/mailman/listinfo/openwrt-devel > _______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/mailman/listinfo/openwrt-devel