}
 
        eeval = ah->eep_ops->get_eeprom(ah, EEP_OP_MODE);
-       if ((eeval & (AR5416_OPFLAGS_11G | AR5416_OPFLAGS_11A)) == 0) {
-               ath_err(common,
-                       "no band has been marked as supported in EEPROM\n");
-               return -EINVAL;
+
+       if (eeval & AR5416_OPFLAGS_11A) {
+               if (ah->disable_5ghz)
+                       ath_warn(common, "disabling 5GHz band\n");
+               else
+                       pCap->hw_caps |= ATH9K_HW_CAP_5GHZ;
        }
 
-       if (eeval & AR5416_OPFLAGS_11A)
-               pCap->hw_caps |= ATH9K_HW_CAP_5GHZ;
+       if (eeval & AR5416_OPFLAGS_11G) {
+               if (ah->disable_2ghz)
+                       ath_warn(common, "disabling 2GHz band\n");
+               else
+                       pCap->hw_caps |= ATH9K_HW_CAP_2GHZ;
+       }
 
-       if (eeval & AR5416_OPFLAGS_11G)
-               pCap->hw_caps |= ATH9K_HW_CAP_2GHZ;
+       if ((pCap->hw_caps & (ATH9K_HW_CAP_2GHZ | ATH9K_HW_CAP_5GHZ)) == 0) {
+               ath_err(common, "both bands are disabled\n");
+               return -EINVAL;
+       }
 
        if (AR_SREV_9485(ah) ||
            AR_SREV_9285(ah) ||
 
                ah->is_clk_25mhz = pdata->is_clk_25mhz;
                ah->get_mac_revision = pdata->get_mac_revision;
                ah->external_reset = pdata->external_reset;
+               ah->disable_2ghz = pdata->disable_2ghz;
+               ah->disable_5ghz = pdata->disable_5ghz;
                if (!pdata->endian_check)
                        ah->ah_flags |= AH_NO_EEP_SWAP;
        }