Merge branch 'oprofile-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
[pandora-kernel.git] / drivers / net / wireless / ath / regd.c
index eef370b..bf3d25b 100644 (file)
@@ -474,6 +474,21 @@ ath_regd_init_wiphy(struct ath_regulatory *reg,
        return 0;
 }
 
+/*
+ * Some users have reported their EEPROM programmed with
+ * 0x8000 set, this is not a supported regulatory domain
+ * but since we have more than one user with it we need
+ * a solution for them. We default to 0x64, which is the
+ * default Atheros world regulatory domain.
+ */
+static void ath_regd_sanitize(struct ath_regulatory *reg)
+{
+       if (reg->current_rd != COUNTRY_ERD_FLAG)
+               return;
+       printk(KERN_DEBUG "ath: EEPROM regdomain sanitized\n");
+       reg->current_rd = 0x64;
+}
+
 int
 ath_regd_init(struct ath_regulatory *reg,
              struct wiphy *wiphy,
@@ -486,6 +501,8 @@ ath_regd_init(struct ath_regulatory *reg,
        if (!reg)
                return -EINVAL;
 
+       ath_regd_sanitize(reg);
+
        printk(KERN_DEBUG "ath: EEPROM regdomain: 0x%0x\n", reg->current_rd);
 
        if (!ath_regd_is_eeprom_valid(reg)) {