mt76: introduce mt76_mmio_read_copy routine
authorLorenzo Bianconi <lorenzo@kernel.org>
Sat, 13 Jul 2019 15:09:06 +0000 (17:09 +0200)
committerFelix Fietkau <nbd@nbd.name>
Thu, 5 Sep 2019 15:42:30 +0000 (17:42 +0200)
Add mt76_mmio_read_copy routine and the related function pointer in
mt76_bus_ops data structure. mt76_mmio_read_copy will be used to add
BIP_CMAC_128 cipher hw support to mt7615 driver

Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mmio.c
drivers/net/wireless/mediatek/mt76/mt76.h
drivers/net/wireless/mediatek/mt76/usb.c

index 83c96a4..3351280 100644 (file)
@@ -40,12 +40,18 @@ static u32 mt76_mmio_rmw(struct mt76_dev *dev, u32 offset, u32 mask, u32 val)
        return val;
 }
 
-static void mt76_mmio_copy(struct mt76_dev *dev, u32 offset, const void *data,
-                          int len)
+static void mt76_mmio_write_copy(struct mt76_dev *dev, u32 offset,
+                                const void *data, int len)
 {
        __iowrite32_copy(dev->mmio.regs + offset, data, DIV_ROUND_UP(len, 4));
 }
 
+static void mt76_mmio_read_copy(struct mt76_dev *dev, u32 offset,
+                               void *data, int len)
+{
+       __ioread32_copy(data, dev->mmio.regs + offset, DIV_ROUND_UP(len, 4));
+}
+
 static int mt76_mmio_wr_rp(struct mt76_dev *dev, u32 base,
                           const struct mt76_reg_pair *data, int len)
 {
@@ -89,7 +95,8 @@ void mt76_mmio_init(struct mt76_dev *dev, void __iomem *regs)
                .rr = mt76_mmio_rr,
                .rmw = mt76_mmio_rmw,
                .wr = mt76_mmio_wr,
-               .copy = mt76_mmio_copy,
+               .write_copy = mt76_mmio_write_copy,
+               .read_copy = mt76_mmio_read_copy,
                .wr_rp = mt76_mmio_wr_rp,
                .rd_rp = mt76_mmio_rd_rp,
                .type = MT76_BUS_MMIO,
index 44299e7..eaf63dc 100644 (file)
@@ -49,8 +49,10 @@ struct mt76_bus_ops {
        u32 (*rr)(struct mt76_dev *dev, u32 offset);
        void (*wr)(struct mt76_dev *dev, u32 offset, u32 val);
        u32 (*rmw)(struct mt76_dev *dev, u32 offset, u32 mask, u32 val);
-       void (*copy)(struct mt76_dev *dev, u32 offset, const void *data,
-                    int len);
+       void (*write_copy)(struct mt76_dev *dev, u32 offset, const void *data,
+                          int len);
+       void (*read_copy)(struct mt76_dev *dev, u32 offset, void *data,
+                         int len);
        int (*wr_rp)(struct mt76_dev *dev, u32 base,
                     const struct mt76_reg_pair *rp, int len);
        int (*rd_rp)(struct mt76_dev *dev, u32 base,
@@ -541,7 +543,8 @@ struct mt76_rx_status {
 #define __mt76_rr(dev, ...)    (dev)->bus->rr((dev), __VA_ARGS__)
 #define __mt76_wr(dev, ...)    (dev)->bus->wr((dev), __VA_ARGS__)
 #define __mt76_rmw(dev, ...)   (dev)->bus->rmw((dev), __VA_ARGS__)
-#define __mt76_wr_copy(dev, ...)       (dev)->bus->copy((dev), __VA_ARGS__)
+#define __mt76_wr_copy(dev, ...)       (dev)->bus->write_copy((dev), __VA_ARGS__)
+#define __mt76_rr_copy(dev, ...)       (dev)->bus->read_copy((dev), __VA_ARGS__)
 
 #define __mt76_set(dev, offset, val)   __mt76_rmw(dev, offset, 0, val)
 #define __mt76_clear(dev, offset, val) __mt76_rmw(dev, offset, val, 0)
@@ -549,7 +552,8 @@ struct mt76_rx_status {
 #define mt76_rr(dev, ...)      (dev)->mt76.bus->rr(&((dev)->mt76), __VA_ARGS__)
 #define mt76_wr(dev, ...)      (dev)->mt76.bus->wr(&((dev)->mt76), __VA_ARGS__)
 #define mt76_rmw(dev, ...)     (dev)->mt76.bus->rmw(&((dev)->mt76), __VA_ARGS__)
-#define mt76_wr_copy(dev, ...) (dev)->mt76.bus->copy(&((dev)->mt76), __VA_ARGS__)
+#define mt76_wr_copy(dev, ...) (dev)->mt76.bus->write_copy(&((dev)->mt76), __VA_ARGS__)
+#define mt76_rr_copy(dev, ...) (dev)->mt76.bus->read_copy(&((dev)->mt76), __VA_ARGS__)
 #define mt76_wr_rp(dev, ...)   (dev)->mt76.bus->wr_rp(&((dev)->mt76), __VA_ARGS__)
 #define mt76_rd_rp(dev, ...)   (dev)->mt76.bus->rd_rp(&((dev)->mt76), __VA_ARGS__)
 
index 9b8fbf4..92bc93e 100644 (file)
@@ -957,7 +957,7 @@ int mt76u_init(struct mt76_dev *dev,
                .rr = mt76u_rr,
                .wr = mt76u_wr,
                .rmw = mt76u_rmw,
-               .copy = mt76u_copy,
+               .write_copy = mt76u_copy,
                .wr_rp = mt76u_wr_rp,
                .rd_rp = mt76u_rd_rp,
                .type = MT76_BUS_USB,