68 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			2.4 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
 | 
						|
@@ -4640,6 +4640,30 @@ static int rt2800_init_registers(struct 
 | 
						|
 	if (ret)
 | 
						|
 		return ret;
 | 
						|
 
 | 
						|
+	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);
 | 
						|
 
 |