From dfd718d13d5351916325ff7464af88e617804cd4 Mon Sep 17 00:00:00 2001 From: Gabor Juhos Date: Mon, 10 Dec 2012 15:46:15 +0000 Subject: mac80211: ath9k: allow to load EEPROM data via firmware API Signed-off-by: Gabor Juhos SVN-Revision: 34606 --- ...truct-ath_hw-as-the-first-argument-for-at.patch | 203 +++++++++++++++++++++ 1 file changed, 203 insertions(+) create mode 100644 package/mac80211/patches/304-pending-ath9k-use-struct-ath_hw-as-the-first-argument-for-at.patch (limited to 'package/mac80211/patches/304-pending-ath9k-use-struct-ath_hw-as-the-first-argument-for-at.patch') diff --git a/package/mac80211/patches/304-pending-ath9k-use-struct-ath_hw-as-the-first-argument-for-at.patch b/package/mac80211/patches/304-pending-ath9k-use-struct-ath_hw-as-the-first-argument-for-at.patch new file mode 100644 index 0000000000..9076522a8b --- /dev/null +++ b/package/mac80211/patches/304-pending-ath9k-use-struct-ath_hw-as-the-first-argument-for-at.patch @@ -0,0 +1,203 @@ +From 26c22324cca2db37fa294156fd875100d95438f4 Mon Sep 17 00:00:00 2001 +From: Gabor Juhos +Date: Sun, 9 Dec 2012 15:19:01 +0100 +Subject: [PATCH 3/4] ath9k: use 'struct ath_hw *' as the first argument for + 'ath9k_hw_nvram_read' + +The 'ath9k_hw_nvram_read' function takes a +'struct ath_common *' as its first argument. +Almost each of its caller has a 'struct ath_hw *' +parameter in their argument list, and that is +dereferenced in order to get the 'struct ath_common' +pointer. + +Change the first argument of 'ath9k_hw_nvram_read' +to be a 'struct ath_hw *', and remove the dereference +calls from the callers. + +Also change the type of the first argument of the +ar9300_eeprom_read_{byte,word} functions. + +Signed-off-by: Gabor Juhos +--- + drivers/net/wireless/ath/ath9k/ar9003_eeprom.c | 17 ++++++++--------- + drivers/net/wireless/ath/ath9k/eeprom.c | 3 ++- + drivers/net/wireless/ath/ath9k/eeprom.h | 2 +- + drivers/net/wireless/ath/ath9k/eeprom_4k.c | 6 ++---- + drivers/net/wireless/ath/ath9k/eeprom_9287.c | 6 ++---- + drivers/net/wireless/ath/ath9k/eeprom_def.c | 5 ++--- + 6 files changed, 17 insertions(+), 22 deletions(-) + +--- a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c ++++ b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c +@@ -3005,24 +3005,24 @@ static u32 ath9k_hw_ar9300_get_eeprom(st + } + } + +-static bool ar9300_eeprom_read_byte(struct ath_common *common, int address, ++static bool ar9300_eeprom_read_byte(struct ath_hw *ah, int address, + u8 *buffer) + { + u16 val; + +- if (unlikely(!ath9k_hw_nvram_read(common, address / 2, &val))) ++ if (unlikely(!ath9k_hw_nvram_read(ah, address / 2, &val))) + return false; + + *buffer = (val >> (8 * (address % 2))) & 0xff; + return true; + } + +-static bool ar9300_eeprom_read_word(struct ath_common *common, int address, ++static bool ar9300_eeprom_read_word(struct ath_hw *ah, int address, + u8 *buffer) + { + u16 val; + +- if (unlikely(!ath9k_hw_nvram_read(common, address / 2, &val))) ++ if (unlikely(!ath9k_hw_nvram_read(ah, address / 2, &val))) + return false; + + buffer[0] = val >> 8; +@@ -3048,14 +3048,14 @@ static bool ar9300_read_eeprom(struct at + * the 16-bit word at that address + */ + if (address % 2 == 0) { +- if (!ar9300_eeprom_read_byte(common, address--, buffer++)) ++ if (!ar9300_eeprom_read_byte(ah, address--, buffer++)) + goto error; + + count--; + } + + for (i = 0; i < count / 2; i++) { +- if (!ar9300_eeprom_read_word(common, address, buffer)) ++ if (!ar9300_eeprom_read_word(ah, address, buffer)) + goto error; + + address -= 2; +@@ -3063,7 +3063,7 @@ static bool ar9300_read_eeprom(struct at + } + + if (count % 2) +- if (!ar9300_eeprom_read_byte(common, address, buffer)) ++ if (!ar9300_eeprom_read_byte(ah, address, buffer)) + goto error; + + return true; +@@ -3240,12 +3240,11 @@ static bool ar9300_check_eeprom_header(s + static int ar9300_eeprom_restore_flash(struct ath_hw *ah, u8 *mptr, + int mdata_size) + { +- struct ath_common *common = ath9k_hw_common(ah); + u16 *data = (u16 *) mptr; + int i; + + for (i = 0; i < mdata_size / 2; i++, data++) +- ath9k_hw_nvram_read(common, i, data); ++ ath9k_hw_nvram_read(ah, i, data); + + return 0; + } +--- a/drivers/net/wireless/ath/ath9k/eeprom.c ++++ b/drivers/net/wireless/ath/ath9k/eeprom.c +@@ -113,8 +113,9 @@ void ath9k_hw_usb_gen_fill_eeprom(struct + } + } + +-bool ath9k_hw_nvram_read(struct ath_common *common, u32 off, u16 *data) ++bool ath9k_hw_nvram_read(struct ath_hw *ah, u32 off, u16 *data) + { ++ struct ath_common *common = ath9k_hw_common(ah); + bool ret; + + ret = common->bus_ops->eeprom_read(common, off, data); +--- a/drivers/net/wireless/ath/ath9k/eeprom.h ++++ b/drivers/net/wireless/ath/ath9k/eeprom.h +@@ -663,7 +663,7 @@ int16_t ath9k_hw_interpolate(u16 target, + int16_t targetRight); + bool ath9k_hw_get_lower_upper_index(u8 target, u8 *pList, u16 listSize, + u16 *indexL, u16 *indexR); +-bool ath9k_hw_nvram_read(struct ath_common *common, u32 off, u16 *data); ++bool ath9k_hw_nvram_read(struct ath_hw *ah, u32 off, u16 *data); + void ath9k_hw_usb_gen_fill_eeprom(struct ath_hw *ah, u16 *eep_data, + int eep_start_loc, int size); + void ath9k_hw_fill_vpd_table(u8 pwrMin, u8 pwrMax, u8 *pPwrList, +--- a/drivers/net/wireless/ath/ath9k/eeprom_4k.c ++++ b/drivers/net/wireless/ath/ath9k/eeprom_4k.c +@@ -32,13 +32,11 @@ static int ath9k_hw_4k_get_eeprom_rev(st + + static bool __ath9k_hw_4k_fill_eeprom(struct ath_hw *ah) + { +- struct ath_common *common = ath9k_hw_common(ah); + u16 *eep_data = (u16 *)&ah->eeprom.map4k; + int addr, eep_start_loc = 64; + + for (addr = 0; addr < SIZE_EEPROM_4K; addr++) { +- if (!ath9k_hw_nvram_read(common, addr + eep_start_loc, +- eep_data)) ++ if (!ath9k_hw_nvram_read(ah, addr + eep_start_loc, eep_data)) + return false; + eep_data++; + } +@@ -194,7 +192,7 @@ static int ath9k_hw_4k_check_eeprom(stru + + + if (!ath9k_hw_use_flash(ah)) { +- if (!ath9k_hw_nvram_read(common, AR5416_EEPROM_MAGIC_OFFSET, ++ if (!ath9k_hw_nvram_read(ah, AR5416_EEPROM_MAGIC_OFFSET, + &magic)) { + ath_err(common, "Reading Magic # failed\n"); + return false; +--- a/drivers/net/wireless/ath/ath9k/eeprom_9287.c ++++ b/drivers/net/wireless/ath/ath9k/eeprom_9287.c +@@ -33,14 +33,12 @@ static int ath9k_hw_ar9287_get_eeprom_re + static bool __ath9k_hw_ar9287_fill_eeprom(struct ath_hw *ah) + { + struct ar9287_eeprom *eep = &ah->eeprom.map9287; +- struct ath_common *common = ath9k_hw_common(ah); + u16 *eep_data; + int addr, eep_start_loc = AR9287_EEP_START_LOC; + eep_data = (u16 *)eep; + + for (addr = 0; addr < SIZE_EEPROM_AR9287; addr++) { +- if (!ath9k_hw_nvram_read(common, addr + eep_start_loc, +- eep_data)) ++ if (!ath9k_hw_nvram_read(ah, addr + eep_start_loc, eep_data)) + return false; + eep_data++; + } +@@ -187,7 +185,7 @@ static int ath9k_hw_ar9287_check_eeprom( + struct ath_common *common = ath9k_hw_common(ah); + + if (!ath9k_hw_use_flash(ah)) { +- if (!ath9k_hw_nvram_read(common, AR5416_EEPROM_MAGIC_OFFSET, ++ if (!ath9k_hw_nvram_read(ah, AR5416_EEPROM_MAGIC_OFFSET, + &magic)) { + ath_err(common, "Reading Magic # failed\n"); + return false; +--- a/drivers/net/wireless/ath/ath9k/eeprom_def.c ++++ b/drivers/net/wireless/ath/ath9k/eeprom_def.c +@@ -91,12 +91,11 @@ static int ath9k_hw_def_get_eeprom_rev(s + + static bool __ath9k_hw_def_fill_eeprom(struct ath_hw *ah) + { +- struct ath_common *common = ath9k_hw_common(ah); + u16 *eep_data = (u16 *)&ah->eeprom.def; + int addr, ar5416_eep_start_loc = 0x100; + + for (addr = 0; addr < SIZE_EEPROM_DEF; addr++) { +- if (!ath9k_hw_nvram_read(common, addr + ar5416_eep_start_loc, ++ if (!ath9k_hw_nvram_read(ah, addr + ar5416_eep_start_loc, + eep_data)) + return false; + eep_data++; +@@ -268,7 +267,7 @@ static int ath9k_hw_def_check_eeprom(str + bool need_swap = false; + int i, addr, size; + +- if (!ath9k_hw_nvram_read(common, AR5416_EEPROM_MAGIC_OFFSET, &magic)) { ++ if (!ath9k_hw_nvram_read(ah, AR5416_EEPROM_MAGIC_OFFSET, &magic)) { + ath_err(common, "Reading Magic # failed\n"); + return false; + } -- cgit v1.2.3