1 // SPDX-License-Identifier: GPL-2.0-only
4 #ifndef __MTK_WED_PRIV_H
5 #define __MTK_WED_PRIV_H
7 #include <linux/soc/mediatek/mtk_wed.h>
8 #include <linux/debugfs.h>
9 #include <linux/regmap.h>
10 #include <linux/netdevice.h>
16 struct device_node *node;
19 struct regmap *hifsys;
23 struct regmap *mirror;
24 struct dentry *debugfs_dir;
25 struct mtk_wed_device *wed_dev;
26 struct mtk_wed_wo *wed_wo;
35 struct mtk_wdma_info {
42 #ifdef CONFIG_NET_MEDIATEK_SOC_WED
44 wed_w32(struct mtk_wed_device *dev, u32 reg, u32 val)
46 regmap_write(dev->hw->regs, reg, val);
50 wed_r32(struct mtk_wed_device *dev, u32 reg)
54 regmap_read(dev->hw->regs, reg, &val);
60 wdma_w32(struct mtk_wed_device *dev, u32 reg, u32 val)
62 writel(val, dev->hw->wdma + reg);
66 wdma_r32(struct mtk_wed_device *dev, u32 reg)
68 return readl(dev->hw->wdma + reg);
72 wpdma_tx_r32(struct mtk_wed_device *dev, int ring, u32 reg)
74 if (!dev->tx_ring[ring].wpdma)
77 return readl(dev->tx_ring[ring].wpdma + reg);
81 wpdma_tx_w32(struct mtk_wed_device *dev, int ring, u32 reg, u32 val)
83 if (!dev->tx_ring[ring].wpdma)
86 writel(val, dev->tx_ring[ring].wpdma + reg);
90 wpdma_rx_r32(struct mtk_wed_device *dev, int ring, u32 reg)
92 if (!dev->rx_ring[ring].wpdma)
95 return readl(dev->rx_ring[ring].wpdma + reg);
99 wpdma_rx_w32(struct mtk_wed_device *dev, int ring, u32 reg, u32 val)
101 if (!dev->rx_ring[ring].wpdma)
104 writel(val, dev->rx_ring[ring].wpdma + reg);
108 wpdma_txfree_r32(struct mtk_wed_device *dev, u32 reg)
110 if (!dev->txfree_ring.wpdma)
113 return readl(dev->txfree_ring.wpdma + reg);
117 wpdma_txfree_w32(struct mtk_wed_device *dev, u32 reg, u32 val)
119 if (!dev->txfree_ring.wpdma)
122 writel(val, dev->txfree_ring.wpdma + reg);
125 void mtk_wed_add_hw(struct device_node *np, struct mtk_eth *eth,
126 void __iomem *wdma, phys_addr_t wdma_phy,
128 void mtk_wed_exit(void);
129 int mtk_wed_flow_add(int index);
130 void mtk_wed_flow_remove(int index);
131 void mtk_wed_fe_reset(void);
132 void mtk_wed_fe_reset_complete(void);
135 mtk_wed_add_hw(struct device_node *np, struct mtk_eth *eth,
136 void __iomem *wdma, phys_addr_t wdma_phy,
144 static inline int mtk_wed_flow_add(int index)
148 static inline void mtk_wed_flow_remove(int index)
152 static inline void mtk_wed_fe_reset(void)
156 static inline void mtk_wed_fe_reset_complete(void)
161 #ifdef CONFIG_DEBUG_FS
162 void mtk_wed_hw_add_debugfs(struct mtk_wed_hw *hw);
164 static inline void mtk_wed_hw_add_debugfs(struct mtk_wed_hw *hw)