mt76x02: minor beaconing init changes
authorStanislaw Gruszka <sgruszka@redhat.com>
Wed, 30 Jan 2019 16:02:16 +0000 (17:02 +0100)
committerFelix Fietkau <nbd@nbd.name>
Mon, 18 Feb 2019 18:54:32 +0000 (19:54 +0100)
Disable BEACON timer during init and configure interrupt registers
only for mmio devices.

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt76x02_util.c

index 1ecd4ef83c82a0f85580fe3b21a8ada19a84a6de..4bc0520da1c69e0e605985d88f89e67d0765db68 100644 (file)
@@ -670,13 +670,19 @@ void mt76x02_init_beacon_config(struct mt76x02_dev *dev)
 {
        int i;
 
-       /* Fire a pre-TBTT interrupt 8 ms before TBTT */
-       mt76_rmw_field(dev, MT_INT_TIMER_CFG, MT_INT_TIMER_CFG_PRE_TBTT,
-                      8 << 4);
-       mt76_rmw_field(dev, MT_INT_TIMER_CFG, MT_INT_TIMER_CFG_GP_TIMER,
-                      MT_DFS_GP_INTERVAL);
-       mt76_wr(dev, MT_INT_TIMER_EN, 0);
+       if (mt76_is_mmio(dev)) {
+               /* Fire a pre-TBTT interrupt 8 ms before TBTT */
+               mt76_rmw_field(dev, MT_INT_TIMER_CFG, MT_INT_TIMER_CFG_PRE_TBTT,
+                              8 << 4);
+               mt76_rmw_field(dev, MT_INT_TIMER_CFG, MT_INT_TIMER_CFG_GP_TIMER,
+                              MT_DFS_GP_INTERVAL);
+               mt76_wr(dev, MT_INT_TIMER_EN, 0);
+       }
 
+       mt76_clear(dev, MT_BEACON_TIME_CFG, (MT_BEACON_TIME_CFG_TIMER_EN |
+                                            MT_BEACON_TIME_CFG_SYNC_MODE |
+                                            MT_BEACON_TIME_CFG_TBTT_EN |
+                                            MT_BEACON_TIME_CFG_BEACON_TX));
        mt76_wr(dev, MT_BCN_BYPASS_MASK, 0xffff);
 
        for (i = 0; i < 8; i++)