mac80211: rt2x00: add tags to upstreamed patches
[openwrt/openwrt.git] / package / kernel / mac80211 / patches / rt2x00 / 015-v6.1-rt2x00-set-SoC-wmac-clock-register.patch
diff --git a/package/kernel/mac80211/patches/rt2x00/015-v6.1-rt2x00-set-SoC-wmac-clock-register.patch b/package/kernel/mac80211/patches/rt2x00/015-v6.1-rt2x00-set-SoC-wmac-clock-register.patch
new file mode 100644 (file)
index 0000000..3cadc91
--- /dev/null
@@ -0,0 +1,70 @@
+From patchwork Sat Sep 17 20:29:55 2022
+Content-Type: text/plain; charset="utf-8"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+X-Patchwork-Submitter: Daniel Golle <daniel@makrotopia.org>
+X-Patchwork-Id: 12979256
+X-Patchwork-Delegate: kvalo@adurom.com
+Return-Path: <linux-wireless-owner@kernel.org>
+Date: Sat, 17 Sep 2022 21:29:55 +0100
+From: Daniel Golle <daniel@makrotopia.org>
+To: linux-wireless@vger.kernel.org, Stanislaw Gruszka <stf_xl@wp.pl>,
+        Helmut Schaa <helmut.schaa@googlemail.com>
+Cc: Kalle Valo <kvalo@kernel.org>,
+        "David S. Miller" <davem@davemloft.net>,
+        Eric Dumazet <edumazet@google.com>,
+        Jakub Kicinski <kuba@kernel.org>,
+        Paolo Abeni <pabeni@redhat.com>,
+        Johannes Berg <johannes.berg@intel.com>
+Subject: [PATCH v3 15/16] rt2x00: set SoC wmac clock register
+Message-ID: 
+ <3e275d259f476f597dab91a9c395015ef3fe3284.1663445157.git.daniel@makrotopia.org>
+References: <cover.1663445157.git.daniel@makrotopia.org>
+MIME-Version: 1.0
+Content-Disposition: inline
+In-Reply-To: <cover.1663445157.git.daniel@makrotopia.org>
+Precedence: bulk
+List-ID: <linux-wireless.vger.kernel.org>
+X-Mailing-List: linux-wireless@vger.kernel.org
+
+Instead of using the default value 33 (pci), set US_CYC_CNT init based
+on Programming guide:
+If available, set chipset bus clock with fallback to cpu clock/3.
+
+Reported-by: Serge Vasilugin <vasilugin@yandex.ru>
+Signed-off-by: Daniel Golle <daniel@makrotopia.org>
+Acked-by: Stanislaw Gruszka <stf_xl@wp.pl>
+---
+ .../net/wireless/ralink/rt2x00/rt2800lib.c    | 21 +++++++++++++++++++
+ 1 file changed, 21 insertions(+)
+
+--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
+@@ -6229,6 +6229,27 @@ static int rt2800_init_registers(struct
+               reg = rt2800_register_read(rt2x00dev, US_CYC_CNT);
+               rt2x00_set_field32(&reg, US_CYC_CNT_CLOCK_CYCLE, 125);
+               rt2800_register_write(rt2x00dev, US_CYC_CNT, reg);
++      } else if (rt2x00_is_soc(rt2x00dev)) {
++              struct clk *clk = clk_get_sys("bus", NULL);
++              int rate;
++
++              if (IS_ERR(clk)) {
++                      clk = clk_get_sys("cpu", NULL);
++
++                      if (IS_ERR(clk)) {
++                              rate = 125;
++                      } else {
++                              rate = clk_get_rate(clk) / 3000000;
++                              clk_put(clk);
++                      }
++              } else {
++                      rate = clk_get_rate(clk) / 1000000;
++                      clk_put(clk);
++              }
++
++              reg = rt2800_register_read(rt2x00dev, US_CYC_CNT);
++              rt2x00_set_field32(&reg, US_CYC_CNT_CLOCK_CYCLE, rate);
++              rt2800_register_write(rt2x00dev, US_CYC_CNT, reg);
+       }
+       reg = rt2800_register_read(rt2x00dev, HT_FBK_CFG0);