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 <[email protected]>
---
 drivers/net/wireless/mediatek/mt76/mmio.c | 13 ++++++++++---
 drivers/net/wireless/mediatek/mt76/mt76.h | 12 ++++++++----
 drivers/net/wireless/mediatek/mt76/usb.c  |  2 +-
 3 files changed, 19 insertions(+), 8 deletions(-)

diff --git a/drivers/net/wireless/mediatek/mt76/mmio.c 
b/drivers/net/wireless/mediatek/mt76/mmio.c
index 83c96a47914f..33512801dc02 100644
--- a/drivers/net/wireless/mediatek/mt76/mmio.c
+++ b/drivers/net/wireless/mediatek/mt76/mmio.c
@@ -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,
diff --git a/drivers/net/wireless/mediatek/mt76/mt76.h 
b/drivers/net/wireless/mediatek/mt76/mt76.h
index 094e6e543542..3da9cbe3ebc2 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76.h
+++ b/drivers/net/wireless/mediatek/mt76/mt76.h
@@ -48,8 +48,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,
@@ -540,7 +542,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)
@@ -548,7 +551,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__)
 
diff --git a/drivers/net/wireless/mediatek/mt76/usb.c 
b/drivers/net/wireless/mediatek/mt76/usb.c
index 00069c2536f8..d8d4d4573f39 100644
--- a/drivers/net/wireless/mediatek/mt76/usb.c
+++ b/drivers/net/wireless/mediatek/mt76/usb.c
@@ -929,7 +929,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,
-- 
2.21.0

Reply via email to