From 1bfa43ca8f30be53ce4fa79cfc3e219642a812b6 Mon Sep 17 00:00:00 2001 From: Gabor Juhos Date: Mon, 2 Sep 2013 10:58:32 +0200 Subject: [PATCH] rt2x00: rt2800lib: init additional beacon offset registers Signed-off-by: Gabor Juhos --- 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 @@ -629,6 +629,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 @@ -4626,6 +4626,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);