Merge pull request #580 from wigyori/cc-libpcap
[15.05/openwrt.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/ralink/rt2x00/rt2800.h    |   14 ++++++++++++++
9  drivers/net/wireless/ralink/rt2x00/rt2800lib.c |   24 ++++++++++++++++++++++++
10  2 files changed, 38 insertions(+)
11
12 --- a/drivers/net/wireless/ralink/rt2x00/rt2800.h
13 +++ b/drivers/net/wireless/ralink/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/ralink/rt2x00/rt2800lib.c
36 +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
37 @@ -4627,6 +4627,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