| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- From: Lorenzo Bianconi <[email protected]>
- Date: Thu, 24 Nov 2022 16:22:53 +0100
- Subject: [PATCH] net: ethernet: mtk_wed: update mtk_wed_stop
- Update mtk_wed_stop routine and rename old mtk_wed_stop() to
- mtk_wed_deinit(). This is a preliminary patch to add Wireless Ethernet
- Dispatcher reset support.
- Co-developed-by: Sujuan Chen <[email protected]>
- Signed-off-by: Sujuan Chen <[email protected]>
- Signed-off-by: Lorenzo Bianconi <[email protected]>
- Signed-off-by: Paolo Abeni <[email protected]>
- ---
- --- a/drivers/net/ethernet/mediatek/mtk_wed.c
- +++ b/drivers/net/ethernet/mediatek/mtk_wed.c
- @@ -539,14 +539,8 @@ mtk_wed_dma_disable(struct mtk_wed_devic
- static void
- mtk_wed_stop(struct mtk_wed_device *dev)
- {
- - mtk_wed_dma_disable(dev);
- mtk_wed_set_ext_int(dev, false);
-
- - wed_clr(dev, MTK_WED_CTRL,
- - MTK_WED_CTRL_WDMA_INT_AGENT_EN |
- - MTK_WED_CTRL_WPDMA_INT_AGENT_EN |
- - MTK_WED_CTRL_WED_TX_BM_EN |
- - MTK_WED_CTRL_WED_TX_FREE_AGENT_EN);
- wed_w32(dev, MTK_WED_WPDMA_INT_TRIGGER, 0);
- wed_w32(dev, MTK_WED_WDMA_INT_TRIGGER, 0);
- wdma_w32(dev, MTK_WDMA_INT_MASK, 0);
- @@ -558,7 +552,27 @@ mtk_wed_stop(struct mtk_wed_device *dev)
-
- wed_w32(dev, MTK_WED_EXT_INT_MASK1, 0);
- wed_w32(dev, MTK_WED_EXT_INT_MASK2, 0);
- - wed_clr(dev, MTK_WED_CTRL, MTK_WED_CTRL_WED_RX_BM_EN);
- +}
- +
- +static void
- +mtk_wed_deinit(struct mtk_wed_device *dev)
- +{
- + mtk_wed_stop(dev);
- + mtk_wed_dma_disable(dev);
- +
- + wed_clr(dev, MTK_WED_CTRL,
- + MTK_WED_CTRL_WDMA_INT_AGENT_EN |
- + MTK_WED_CTRL_WPDMA_INT_AGENT_EN |
- + MTK_WED_CTRL_WED_TX_BM_EN |
- + MTK_WED_CTRL_WED_TX_FREE_AGENT_EN);
- +
- + if (dev->hw->version == 1)
- + return;
- +
- + wed_clr(dev, MTK_WED_CTRL,
- + MTK_WED_CTRL_RX_ROUTE_QM_EN |
- + MTK_WED_CTRL_WED_RX_BM_EN |
- + MTK_WED_CTRL_RX_RRO_QM_EN);
- }
-
- static void
- @@ -568,7 +582,7 @@ mtk_wed_detach(struct mtk_wed_device *de
-
- mutex_lock(&hw_lock);
-
- - mtk_wed_stop(dev);
- + mtk_wed_deinit(dev);
-
- mtk_wdma_rx_reset(dev);
- mtk_wed_reset(dev, MTK_WED_RESET_WED);
- @@ -677,7 +691,7 @@ mtk_wed_hw_init_early(struct mtk_wed_dev
- {
- u32 mask, set;
-
- - mtk_wed_stop(dev);
- + mtk_wed_deinit(dev);
- mtk_wed_reset(dev, MTK_WED_RESET_WED);
- mtk_wed_set_wpdma(dev);
-
- --- a/include/linux/soc/mediatek/mtk_wed.h
- +++ b/include/linux/soc/mediatek/mtk_wed.h
- @@ -234,6 +234,8 @@ mtk_wed_get_rx_capa(struct mtk_wed_devic
- (_dev)->ops->ppe_check(_dev, _skb, _reason, _hash)
- #define mtk_wed_device_update_msg(_dev, _id, _msg, _len) \
- (_dev)->ops->msg_update(_dev, _id, _msg, _len)
- +#define mtk_wed_device_stop(_dev) (_dev)->ops->stop(_dev)
- +#define mtk_wed_device_dma_reset(_dev) (_dev)->ops->reset_dma(_dev)
- #else
- static inline bool mtk_wed_device_active(struct mtk_wed_device *dev)
- {
- @@ -250,6 +252,8 @@ static inline bool mtk_wed_device_active
- #define mtk_wed_device_rx_ring_setup(_dev, _ring, _regs) -ENODEV
- #define mtk_wed_device_ppe_check(_dev, _skb, _reason, _hash) do {} while (0)
- #define mtk_wed_device_update_msg(_dev, _id, _msg, _len) -ENODEV
- +#define mtk_wed_device_stop(_dev) do {} while (0)
- +#define mtk_wed_device_dma_reset(_dev) do {} while (0)
- #endif
-
- #endif
|