--- /dev/null
+From 03469e79fee9e8e908dae3bd1a80bcd9a66f2a88 Mon Sep 17 00:00:00 2001
+From: Christian Lamparter <chunkeey@gmail.com>
+Date: Mon, 11 Oct 2021 18:18:00 +0300
+Subject: ath9k: support DT ieee80211-freq-limit property to limit channels
+
+The common DT property can be used to limit the available channels
+but ath9k has to manually call wiphy_read_of_freq_limits().
+
+I would have put this into ath9k_of_init(). But it didn't work there.
+The reason is that in ath9k_of_init() the channels and bands are not yet
+registered in the wiphy struct. So there isn't any channel to flag as
+disabled.
+
+Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
+Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
+Link: https://lore.kernel.org/r/20211009212847.1781986-1-chunkeey@gmail.com
+---
+--- a/drivers/net/wireless/ath/ath9k/init.c
++++ b/drivers/net/wireless/ath/ath9k/init.c
+@@ -1094,6 +1094,8 @@ int ath9k_init_device(u16 devid, struct ath_softc *sc,
+ ARRAY_SIZE(ath9k_tpt_blink));
+ #endif
+
++ wiphy_read_of_freq_limits(hw->wiphy);
++
+ /* Register with mac80211 */
+ error = ieee80211_register_hw(hw);
+ if (error)
+
+++ /dev/null
---- a/drivers/net/wireless/ath/ath9k/init.c
-+++ b/drivers/net/wireless/ath/ath9k/init.c
-@@ -625,6 +625,12 @@ static int ath9k_of_init(struct ath_soft
-
- ath_dbg(common, CONFIG, "parsing configuration from OF node\n");
-
-+ if (of_property_read_bool(np, "qca,disable-2ghz"))
-+ ah->disable_2ghz = true;
-+
-+ if (of_property_read_bool(np, "qca,disable-5ghz"))
-+ ah->disable_5ghz = true;
-+
- if (of_property_read_bool(np, "qca,no-eeprom")) {
- /* ath9k-eeprom-<bus>-<id>.bin */
- scnprintf(eeprom_name, sizeof(eeprom_name),
static const struct platform_device_id ath9k_platform_id_table[] = {
{
-@@ -69,6 +77,242 @@ static const struct ath_bus_ops ath_ahb_
+@@ -69,6 +77,236 @@ static const struct ath_bus_ops ath_ahb_
.eeprom_read = ath_ahb_eeprom_read,
};
+ else
+ pdata->led_pin = -1;
+
-+ if (of_property_read_bool(pdev->dev.of_node, "qca,disable-2ghz"))
-+ pdata->disable_2ghz = true;
-+
-+ if (of_property_read_bool(pdev->dev.of_node, "qca,disable-5ghz"))
-+ pdata->disable_5ghz = true;
-+
+ if (of_property_read_bool(pdev->dev.of_node, "qca,tx-gain-buffalo"))
+ pdata->tx_gain_buffalo = true;
+
&wmac {
status = "okay";
- qca,disable-5ghz;
+ ieee80211-freq-limit = <2402000 2482000>;
mtd-cal-data = <&art 0x1000>;
};
compatible = "pci168c,0030";
reg = <0x0000 0 0 0 0>;
qca,no-eeprom;
- qca,disable-2ghz;
+ ieee80211-freq-limit = <4900000 5990000>;
#gpio-cells = <2>;
gpio-controller;
};
ath9k: wifi@0,0,0 {
compatible = "pci168c,0030";
reg = <0x0 0 0 0 0>;
- qca,disable-5ghz;
+ ieee80211-freq-limit = <2402000 2482000>;
qca,no-eeprom;
#gpio-cells = <2>;
gpio-controller;
&wmac {
status = "okay";
- qca,disable-2ghz;
+ ieee80211-freq-limit = <4900000 5990000>;
mtd-cal-data = <&art 0x1000>;
};
mac-address-increment = <(-2)>;
mtd-cal-data = <&art 0x5000>;
qca,no-eeprom;
- qca,disable-5ghz;
+ ieee80211-freq-limit = <2402000 2482000>;
#gpio-cells = <2>;
gpio-controller;
};
&wmac {
status = "okay";
- qca,disable-2ghz;
+ ieee80211-freq-limit = <4900000 5990000>;
mtd-cal-data = <&art 0x1000>;
nvmem-cells = <&macaddr_art_0>;
nvmem-cell-names = "mac-address";
compatible = "pci168c,002d";
reg = <0x7000 0 0 0 0>;
qca,no-eeprom; /* load from ath9k-eeprom-pci-0000:00:0e.0.bin */
- qca,disable-5ghz;
+ ieee80211-freq-limit = <2402000 2482000>;
};
};
#gpio-cells = <2>;
gpio-controller;
qca,no-eeprom;
- qca,disable-5ghz;
+ ieee80211-freq-limit = <2402000 2482000>;
nvmem-cells = <&macaddr_ath9k_cal_f100>;
nvmem-cell-names = "mac-address";
mac-address-increment = <2>;