00f80b0472d576a84902dda17a294f8dd3d18b36
[openwrt/staging/chunkeey.git] / package / kernel / mac80211 / patches / 600-0006-rt2x00-rt2800lib-init-additional-beacon-offset-regis.patch
1 From 1bfa43ca8f30be53ce4fa79cfc3e219642a812b6 Mon Sep 17 00:00:00 2001
2 From: Gabor Juhos <juhosg@openwrt.org>
3 Date: Mon, 2 Sep 2013 10:58:32 +0200
4 Subject: [PATCH] rt2x00: rt2800lib: init additional beacon offset registers
5
6 Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
7 ---
8 drivers/net/wireless/rt2x00/rt2800.h | 14 ++++++++++++++
9 drivers/net/wireless/rt2x00/rt2800lib.c | 24 ++++++++++++++++++++++++
10 2 files changed, 38 insertions(+)
11
12 --- a/drivers/net/wireless/rt2x00/rt2800.h
13 +++ b/drivers/net/wireless/rt2x00/rt2800.h
14 @@ -629,6 +629,20 @@
15 */
16 #define PBF_DBG 0x043c
17
18 +/* BCN_OFFSET2 */
19 +#define BCN_OFFSET2 0x0444
20 +#define BCN_OFFSET2_BCN8 FIELD32(0x000000ff)
21 +#define BCN_OFFSET2_BCN9 FIELD32(0x0000ff00)
22 +#define BCN_OFFSET2_BCN10 FIELD32(0x00ff0000)
23 +#define BCN_OFFSET2_BCN11 FIELD32(0xff000000)
24 +
25 +/* BCN_OFFSET3 */
26 +#define BCN_OFFSET3 0x0448
27 +#define BCN_OFFSET3_BCN12 FIELD32(0x000000ff)
28 +#define BCN_OFFSET3_BCN13 FIELD32(0x0000ff00)
29 +#define BCN_OFFSET3_BCN14 FIELD32(0x00ff0000)
30 +#define BCN_OFFSET3_BCN15 FIELD32(0xff000000)
31 +
32 /*
33 * RF registers
34 */
35 --- a/drivers/net/wireless/rt2x00/rt2800lib.c
36 +++ b/drivers/net/wireless/rt2x00/rt2800lib.c
37 @@ -4650,6 +4650,30 @@ static int rt2800_init_registers(struct
38 if (ret)
39 return ret;
40
41 + if (drv_data->hw_beacon_count == 16) {
42 + rt2800_register_read(rt2x00dev, BCN_OFFSET2, &reg);
43 + rt2x00_set_field32(&reg, BCN_OFFSET2_BCN8,
44 + rt2800_get_beacon_offset(rt2x00dev, 8));
45 + rt2x00_set_field32(&reg, BCN_OFFSET2_BCN9,
46 + rt2800_get_beacon_offset(rt2x00dev, 9));
47 + rt2x00_set_field32(&reg, BCN_OFFSET2_BCN10,
48 + rt2800_get_beacon_offset(rt2x00dev, 10));
49 + rt2x00_set_field32(&reg, BCN_OFFSET2_BCN11,
50 + rt2800_get_beacon_offset(rt2x00dev, 11));
51 + rt2800_register_write(rt2x00dev, BCN_OFFSET2, reg);
52 +
53 + rt2800_register_read(rt2x00dev, BCN_OFFSET3, &reg);
54 + rt2x00_set_field32(&reg, BCN_OFFSET3_BCN12,
55 + rt2800_get_beacon_offset(rt2x00dev, 12));
56 + rt2x00_set_field32(&reg, BCN_OFFSET3_BCN13,
57 + rt2800_get_beacon_offset(rt2x00dev, 13));
58 + rt2x00_set_field32(&reg, BCN_OFFSET3_BCN14,
59 + rt2800_get_beacon_offset(rt2x00dev, 14));
60 + rt2x00_set_field32(&reg, BCN_OFFSET3_BCN15,
61 + rt2800_get_beacon_offset(rt2x00dev, 15));
62 + rt2800_register_write(rt2x00dev, BCN_OFFSET3, reg);
63 + }
64 +
65 rt2800_register_write(rt2x00dev, LEGACY_BASIC_RATE, 0x0000013f);
66 rt2800_register_write(rt2x00dev, HT_BASIC_RATE, 0x00008003);
67