There are two types of swapping the EEPROM data in the ath9k driver. Before this series one type of swapping could not be used without the other. The first type of swapping looks at the "magic bytes" at the start of the EEPROM data and performs swab16 on the EEPROM contents if needed. The second type of swapping is EEPROM format specific and swaps specific fields within the EEPROM itself (swab16, swab32 - depends on the EEPROM format). With this series the second part now looks at the EEPMISC register inside the EEPROM, which uses a bit to indicate if the EEPROM data is Big Endian (this is also done by the FreeBSD kernel). This has a nice advantage: currently there are some out-of-tree hacks (in OpenWrt and LEDE) where the EEPROM has a Big Endian header on a Big Endian system (= no swab16 is performed) but the EEPROM itself indicates that it's data is Little Endian. Until now the out-of-tree code simply did a swab16 before passing the data to ath9k, so ath9k first did the swab16 - this also enabled the format specific swapping. These out-of-tree hacks are still working with the new logic, but it is recommended to remove them. The last patch in this series allows enabling the EEPROM endianness swapping via devicetree. This should be fine now since it addresses the concerns raised by Arnd Bergmann in in the original OF support patches: [0]. This series depends on my other series (V5): "add devicetree support to ath9k" - see [1] [0] http://www.spinics.net/lists/linux-wireless/msg152634.html [1] https://marc.info/?l=linux-wireless&m=147178988827847&w=2 Martin Blumenstingl (5): ath9k: Add a #define for the EEPROM "eepmisc" endianness bit ath9k: Set the "big endian" bit of the AR9003 EEPROM templates ath9k: Add an eeprom_ops callback for retrieving the eepmisc value ath9k: Make the EEPROM swapping check use the eepmisc register ath9k: Make EEPROM endianness swapping configurable via devicetree .../devicetree/bindings/net/wireless/qca,ath9k.txt | 16 ++++++ drivers/net/wireless/ath/ath9k/ar9003_eeprom.c | 21 +++++--- drivers/net/wireless/ath/ath9k/ar9003_eeprom.h | 7 ++- drivers/net/wireless/ath/ath9k/eeprom.c | 57 ++++++++++++++++------ drivers/net/wireless/ath/ath9k/eeprom.h | 5 +- drivers/net/wireless/ath/ath9k/eeprom_4k.c | 10 +++- drivers/net/wireless/ath/ath9k/eeprom_9287.c | 10 +++- drivers/net/wireless/ath/ath9k/eeprom_def.c | 10 +++- drivers/net/wireless/ath/ath9k/init.c | 6 ++- 9 files changed, 110 insertions(+), 32 deletions(-) -- 2.9.3