--- linux-3.8.13/drivers/net/wireless/ath/ath5k/base.c.orig +++ linux-3.8.13/drivers/net/wireless/ath/ath5k/base.c @@ -277,7 +277,9 @@ /* 802.11j 5.030-5.080 GHz (20MHz) */ (chan == 8 || chan == 12 || chan == 16) || /* 802.11j 4.9GHz (20MHz) */ - (chan == 184 || chan == 188 || chan == 192 || chan == 196)); + (chan == 184 || chan == 188 || chan == 192 || chan == 196) || + /* J52 */ + (chan == 34 || chan == 38 || chan == 42 || chan == 46 )); } #endif --- linux-3.8.13/drivers/net/wireless/ath/ath5k/eeprom.c.orig +++ linux-3.8.13/drivers/net/wireless/ath/ath5k/eeprom.c @@ -29,6 +29,11 @@ #include "reg.h" #include "debug.h" +#include +static int ath5k_override_eeprom_regdom = -1; +module_param_named(override_eeprom_regdomain, ath5k_override_eeprom_regdom, + int, S_IRUGO); +MODULE_PARM_DESC(override_eeprom_regdomain, " Override regdomain of EEPROM"); /******************\ * Helper functions * @@ -179,6 +184,22 @@ ee->ee_serdes = (val == AR5K_EEPROM_PCIE_SERDES_SECTION) ? true : false; + /* Check for valid Amode in upgraded h/w */ + if (!(ee->ee_header & 0x1)) { + if (ee->ee_version >= AR5K_EEPROM_VERSION_4_0) { + AR5K_EEPROM_READ(0xca, val); + ee->ee_header |= ( (val & 0x0800) ? 1 : 0 ); + } else { + AR5K_EEPROM_READ(0xcf, val); + ee->ee_header |= ( (val & 0x8000) ? 1 : 0 ); + } + } + + /* Override EEPROM regdomain */ + if (ath5k_override_eeprom_regdom != -1) { + ee->ee_regdomain = ath5k_override_eeprom_regdom; + } + return 0; }