68 lines
2.5 KiB
Diff
68 lines
2.5 KiB
Diff
|
From 1bfa43ca8f30be53ce4fa79cfc3e219642a812b6 Mon Sep 17 00:00:00 2001
|
||
|
From: Gabor Juhos <juhosg@openwrt.org>
|
||
|
Date: Mon, 2 Sep 2013 10:58:32 +0200
|
||
|
Subject: [PATCH] rt2x00: rt2800lib: init additional beacon offset registers
|
||
|
|
||
|
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
||
|
---
|
||
|
drivers/net/wireless/rt2x00/rt2800.h | 14 ++++++++++++++
|
||
|
drivers/net/wireless/rt2x00/rt2800lib.c | 24 ++++++++++++++++++++++++
|
||
|
2 files changed, 38 insertions(+)
|
||
|
|
||
|
--- a/drivers/net/wireless/rt2x00/rt2800.h
|
||
|
+++ b/drivers/net/wireless/rt2x00/rt2800.h
|
||
|
@@ -627,6 +627,20 @@
|
||
|
*/
|
||
|
#define PBF_DBG 0x043c
|
||
|
|
||
|
+/* BCN_OFFSET2 */
|
||
|
+#define BCN_OFFSET2 0x0444
|
||
|
+#define BCN_OFFSET2_BCN8 FIELD32(0x000000ff)
|
||
|
+#define BCN_OFFSET2_BCN9 FIELD32(0x0000ff00)
|
||
|
+#define BCN_OFFSET2_BCN10 FIELD32(0x00ff0000)
|
||
|
+#define BCN_OFFSET2_BCN11 FIELD32(0xff000000)
|
||
|
+
|
||
|
+/* BCN_OFFSET3 */
|
||
|
+#define BCN_OFFSET3 0x0448
|
||
|
+#define BCN_OFFSET3_BCN12 FIELD32(0x000000ff)
|
||
|
+#define BCN_OFFSET3_BCN13 FIELD32(0x0000ff00)
|
||
|
+#define BCN_OFFSET3_BCN14 FIELD32(0x00ff0000)
|
||
|
+#define BCN_OFFSET3_BCN15 FIELD32(0xff000000)
|
||
|
+
|
||
|
/*
|
||
|
* RF registers
|
||
|
*/
|
||
|
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
|
||
|
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
|
||
|
@@ -4618,6 +4618,30 @@ static int rt2800_init_registers(struct
|
||
|
rt2800_get_beacon_offset(rt2x00dev, 7));
|
||
|
rt2800_register_write(rt2x00dev, BCN_OFFSET1, reg);
|
||
|
|
||
|
+ if (drv_data->hw_beacon_count == 16) {
|
||
|
+ rt2800_register_read(rt2x00dev, BCN_OFFSET2, ®);
|
||
|
+ rt2x00_set_field32(®, BCN_OFFSET2_BCN8,
|
||
|
+ rt2800_get_beacon_offset(rt2x00dev, 8));
|
||
|
+ rt2x00_set_field32(®, BCN_OFFSET2_BCN9,
|
||
|
+ rt2800_get_beacon_offset(rt2x00dev, 9));
|
||
|
+ rt2x00_set_field32(®, BCN_OFFSET2_BCN10,
|
||
|
+ rt2800_get_beacon_offset(rt2x00dev, 10));
|
||
|
+ rt2x00_set_field32(®, BCN_OFFSET2_BCN11,
|
||
|
+ rt2800_get_beacon_offset(rt2x00dev, 11));
|
||
|
+ rt2800_register_write(rt2x00dev, BCN_OFFSET2, reg);
|
||
|
+
|
||
|
+ rt2800_register_read(rt2x00dev, BCN_OFFSET3, ®);
|
||
|
+ rt2x00_set_field32(®, BCN_OFFSET3_BCN12,
|
||
|
+ rt2800_get_beacon_offset(rt2x00dev, 12));
|
||
|
+ rt2x00_set_field32(®, BCN_OFFSET3_BCN13,
|
||
|
+ rt2800_get_beacon_offset(rt2x00dev, 13));
|
||
|
+ rt2x00_set_field32(®, BCN_OFFSET3_BCN14,
|
||
|
+ rt2800_get_beacon_offset(rt2x00dev, 14));
|
||
|
+ rt2x00_set_field32(®, BCN_OFFSET3_BCN15,
|
||
|
+ rt2800_get_beacon_offset(rt2x00dev, 15));
|
||
|
+ rt2800_register_write(rt2x00dev, BCN_OFFSET3, reg);
|
||
|
+ }
|
||
|
+
|
||
|
rt2800_register_write(rt2x00dev, LEGACY_BASIC_RATE, 0x0000013f);
|
||
|
rt2800_register_write(rt2x00dev, HT_BASIC_RATE, 0x00008003);
|
||
|
|