OSDN Git Service

mt76: mmio: add implementation of wr_rp and rd_rp
authorLorenzo Bianconi <lorenzo.bianconi@redhat.com>
Fri, 28 Sep 2018 11:38:50 +0000 (13:38 +0200)
committerFelix Fietkau <nbd@nbd.name>
Mon, 1 Oct 2018 10:34:24 +0000 (12:34 +0200)
Introduce mmio implementation of mt76_mmio_rd_rp and
mt76_mmio_wr_rp and remove mt76x2 duplicated code.
mt76_mmio_{wr,rd}_rp allows to reuse mt76x0 init code
adding mt76x0e support

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mmio.c
drivers/net/wireless/mediatek/mt76/mt76x2_init_common.c

index 08685f5..30a5d92 100644 (file)
@@ -46,6 +46,30 @@ static void mt76_mmio_copy(struct mt76_dev *dev, u32 offset, const void *data,
        __iowrite32_copy(dev->mmio.regs + offset, data, len >> 2);
 }
 
+static int mt76_mmio_wr_rp(struct mt76_dev *dev, u32 base,
+                          const struct mt76_reg_pair *data, int len)
+{
+       while (len > 0) {
+               mt76_mmio_wr(dev, data->reg, data->value);
+               data++;
+               len--;
+       }
+
+       return 0;
+}
+
+static int mt76_mmio_rd_rp(struct mt76_dev *dev, u32 base,
+                          struct mt76_reg_pair *data, int len)
+{
+       while (len > 0) {
+               data->value = mt76_mmio_rr(dev, data->reg);
+               data++;
+               len--;
+       }
+
+       return 0;
+}
+
 void mt76_mmio_init(struct mt76_dev *dev, void __iomem *regs)
 {
        static const struct mt76_bus_ops mt76_mmio_ops = {
@@ -53,6 +77,8 @@ void mt76_mmio_init(struct mt76_dev *dev, void __iomem *regs)
                .rmw = mt76_mmio_rmw,
                .wr = mt76_mmio_wr,
                .copy = mt76_mmio_copy,
+               .wr_rp = mt76_mmio_wr_rp,
+               .rd_rp = mt76_mmio_rd_rp,
        };
 
        dev->bus = &mt76_mmio_ops;
index abf535d..4eacc68 100644 (file)
@@ -62,17 +62,6 @@ out:
 }
 EXPORT_SYMBOL_GPL(mt76x2_reset_wlan);
 
-static void
-mt76x2_write_reg_pairs(struct mt76x2_dev *dev,
-                      const struct mt76_reg_pair *data, int len)
-{
-       while (len > 0) {
-               mt76_wr(dev, data->reg, data->value);
-               len--;
-               data++;
-       }
-}
-
 void mt76_write_mac_initvals(struct mt76x2_dev *dev)
 {
 #define DEFAULT_PROT_CFG_CCK                           \
@@ -164,8 +153,8 @@ void mt76_write_mac_initvals(struct mt76x2_dev *dev)
                { MT_GF40_PROT_CFG,             DEFAULT_PROT_CFG_40 },
        };
 
-       mt76x2_write_reg_pairs(dev, vals, ARRAY_SIZE(vals));
-       mt76x2_write_reg_pairs(dev, prot_vals, ARRAY_SIZE(prot_vals));
+       mt76_wr_rp(dev, 0, vals, ARRAY_SIZE(vals));
+       mt76_wr_rp(dev, 0, prot_vals, ARRAY_SIZE(prot_vals));
 }
 EXPORT_SYMBOL_GPL(mt76_write_mac_initvals);