From: Daniel Golle <daniel@makrotopia.org>
To: linux-wireless@vger.kernel.org
Cc: Johannes Berg <johannes@sipsolutions.net>,
Stanislaw Gruszka <sgruszka@redhat.com>,
roman@advem.lv, michel.stempin@wanadoo.fr, c.mignanti@gmail.com,
evaxige@qq.com, Kalle Valo <kvalo@codeaurora.org>,
Felix Fietkau <nbd@nbd.name>, John Crispin <john@phrozen.org>,
Gabor Juhos <juhosg@openwrt.org>
Subject: [PATCH v2 13/14] rt2x00: rt2800lib: add support for RT3352 with 20MHz crystal
Date: Mon, 16 Jan 2017 04:15:56 +0100 [thread overview]
Message-ID: <20170116031541.GA32313@makrotopia.org> (raw)
In-Reply-To: <874m114lwq.fsf@codeaurora.org>
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
Signed-off-by: Mathias Kresin <dev@kresin.me>
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
---
drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 50 +++++++++++++++++++++++++-
drivers/net/wireless/ralink/rt2x00/rt2x00.h | 2 ++
2 files changed, 51 insertions(+), 1 deletion(-)
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
index 93c97eade334..cb1457595f05 100644
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
@@ -36,6 +36,7 @@
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/slab.h>
+#include <linux/clk.h>
#include "rt2x00.h"
#include "rt2800lib.h"
@@ -7675,6 +7676,27 @@ static const struct rf_channel rf_vals_5592_xtal40[] = {
{196, 83, 0, 12, 1},
};
+/*
+ * RF value list for rt3xxx with Xtal20MHz
+ * Supports: 2.4 GHz (all) (RF3322)
+ */
+static const struct rf_channel rf_vals_xtal20mhz_3x[] = {
+ {1, 0xE2, 2, 0x14},
+ {2, 0xE3, 2, 0x14},
+ {3, 0xE4, 2, 0x14},
+ {4, 0xE5, 2, 0x14},
+ {5, 0xE6, 2, 0x14},
+ {6, 0xE7, 2, 0x14},
+ {7, 0xE8, 2, 0x14},
+ {8, 0xE9, 2, 0x14},
+ {9, 0xEA, 2, 0x14},
+ {10, 0xEB, 2, 0x14},
+ {11, 0xEC, 2, 0x14},
+ {12, 0xED, 2, 0x14},
+ {13, 0xEE, 2, 0x14},
+ {14, 0xF0, 2, 0x18},
+};
+
static int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
{
struct hw_mode_spec *spec = &rt2x00dev->spec;
@@ -7764,7 +7786,10 @@ static int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
case RF5390:
case RF5392:
spec->num_channels = 14;
- spec->channels = rf_vals_3x;
+ if (spec->clk_is_20mhz)
+ spec->channels = rf_vals_xtal20mhz_3x;
+ else
+ spec->channels = rf_vals_3x;
break;
case RF3052:
@@ -7945,6 +7970,20 @@ static int rt2800_probe_rt(struct rt2x00_dev *rt2x00dev)
return 0;
}
+int rt2800_probe_clk(struct rt2x00_dev *rt2x00dev)
+{
+ struct hw_mode_spec *spec = &rt2x00dev->spec;
+ struct clk *clk = clk_get(rt2x00dev->dev, NULL);
+
+ if (IS_ERR(clk))
+ return PTR_ERR(clk);
+
+ if (clk_get_rate(clk) == 20000000)
+ spec->clk_is_20mhz = 1;
+
+ return 0;
+}
+
int rt2800_probe_hw(struct rt2x00_dev *rt2x00dev)
{
struct rt2800_drv_data *drv_data = rt2x00dev->drv_data;
@@ -7985,6 +8024,15 @@ int rt2800_probe_hw(struct rt2x00_dev *rt2x00dev)
rt2800_register_write(rt2x00dev, GPIO_CTRL, reg);
/*
+ * Probe SoC clock.
+ */
+ if (rt2x00_is_soc(rt2x00dev)) {
+ retval = rt2800_probe_clk(rt2x00dev);
+ if (retval)
+ return retval;
+ }
+
+ /*
* Initialize hw specifications.
*/
retval = rt2800_probe_hw_mode(rt2x00dev);
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00.h b/drivers/net/wireless/ralink/rt2x00/rt2x00.h
index cfbf414c2627..b1eec49b0dac 100644
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00.h
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00.h
@@ -400,6 +400,7 @@ static inline struct rt2x00_intf* vif_to_intf(struct ieee80211_vif *vif)
* @channels: Device/chipset specific channel values (See &struct rf_channel).
* @channels_info: Additional information for channels (See &struct channel_info).
* @ht: Driver HT Capabilities (See &ieee80211_sta_ht_cap).
+ * @clk_is_20mhz: External crystal of WiSoC is 20MHz instead of 40MHz
*/
struct hw_mode_spec {
unsigned int supported_bands;
@@ -415,6 +416,7 @@ struct hw_mode_spec {
const struct channel_info *channels_info;
struct ieee80211_sta_ht_cap ht;
+ int clk_is_20mhz;
};
/*
--
2.11.0
next prev parent reply other threads:[~2017-01-16 3:16 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-01-13 21:20 [PATCH 04/40] rt2x00: rt2800lib: fix beacon generation on RT3593 Daniel Golle
2017-01-14 17:00 ` Kalle Valo
2017-01-16 2:53 ` [PATCH v2 00/14] rt2x00 patches from OpenWrt.org Daniel Golle
2017-01-16 2:55 ` [PATCH v2 01/14] rt2x00: rt2800lib: move rt2800_drv_data declaration into rt2800lib.h Daniel Golle
2017-01-28 8:48 ` [v2, " Kalle Valo
2017-01-16 2:55 ` [PATCH v2 02/14] rt2x00: rt2800lib: introduce RT2800_HAS_HIGH_SHARED_MEM flag Daniel Golle
2017-01-16 2:58 ` [PATCH v2 03/14] rt2x00: rt2800: serialize shared memory access Daniel Golle
2017-01-16 3:01 ` [PATCH v2 04/14] rt2x00: rt2800lib: fix beacon generation on RT3593 Daniel Golle
2017-01-16 10:04 ` Stanislaw Gruszka
2017-01-16 3:02 ` [PATCH v2 05/14] rt2x00: rt2800lib: add hw_beacon_count field to struct rt2800_drv_data Daniel Golle
2017-01-16 3:03 ` [PATCH v2 06/14] rt2x00: rt2800lib: init additional beacon offset registers Daniel Golle
2017-01-16 3:03 ` [PATCH v2 07/14] rt2x00: rt2800lib: fix max supported beacon count for RT3593 Daniel Golle
2017-01-16 3:05 ` [PATCH v2 08/14] rt2x00: rt2800mmio: add a workaround for spurious TX_FIFO_STATUS interrupts Daniel Golle
2017-01-18 14:44 ` Stanislaw Gruszka
2017-01-18 15:13 ` Stanislaw Gruszka
2017-01-16 3:06 ` [PATCH v2 09/14] rt2x00: rt2x00pci: set PCI MWI only if supported Daniel Golle
2017-01-16 10:08 ` Stanislaw Gruszka
2017-01-17 1:56 ` Daniel Golle
2017-01-17 7:34 ` John Crispin
2017-01-16 3:08 ` [PATCH v2 10/14] rt2x00: rt2800lib: correctly set HT20/HT40 filter Daniel Golle
2017-01-16 10:12 ` Stanislaw Gruszka
2017-01-19 12:49 ` [v2,10/14] " Kalle Valo
2017-01-16 3:13 ` [PATCH v2 11/14] rt2x00: rt2800lib: fix rf id for RT3352 Daniel Golle
2017-01-16 10:12 ` Stanislaw Gruszka
2017-01-16 3:14 ` [PATCH v2 12/14] rt2x00: rt2800lib: support for for RT3352 with external PA Daniel Golle
2017-01-16 10:14 ` Stanislaw Gruszka
2017-01-16 3:15 ` Daniel Golle [this message]
2017-01-18 14:30 ` [PATCH v2 13/14] rt2x00: rt2800lib: add support for RT3352 with 20MHz crystal Stanislaw Gruszka
2017-01-19 13:30 ` Daniel Golle
2017-01-19 13:30 ` Daniel Golle
2017-01-19 13:30 ` Daniel Golle
2017-01-19 20:52 ` Daniel Golle
2017-01-19 23:42 ` [PATCH v3] " Daniel Golle
2017-01-20 13:16 ` Stanislaw Gruszka
2017-01-16 3:17 ` [PATCH v2 14/14] rt2x00: add support for RT5350 WiSoC Daniel Golle
2017-01-16 10:17 ` Stanislaw Gruszka
2017-01-17 1:48 ` Daniel Golle
2017-01-18 14:47 ` Stanislaw Gruszka
2017-01-19 13:38 ` [PATCH v3] " Daniel Golle
2017-01-19 19:08 ` Kalle Valo
2017-01-19 20:37 ` Daniel Golle
2017-01-20 2:21 ` kbuild test robot
2017-01-20 13:19 ` Stanislaw Gruszka
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170116031541.GA32313@makrotopia.org \
--to=daniel@makrotopia.org \
--cc=c.mignanti@gmail.com \
--cc=evaxige@qq.com \
--cc=johannes@sipsolutions.net \
--cc=john@phrozen.org \
--cc=juhosg@openwrt.org \
--cc=kvalo@codeaurora.org \
--cc=linux-wireless@vger.kernel.org \
--cc=michel.stempin@wanadoo.fr \
--cc=nbd@nbd.name \
--cc=roman@advem.lv \
--cc=sgruszka@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.