729-12-v6.2-net-ethernet-mtk_wed-update-mtk_wed_stop.patch 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. From: Lorenzo Bianconi <[email protected]>
  2. Date: Thu, 24 Nov 2022 16:22:53 +0100
  3. Subject: [PATCH] net: ethernet: mtk_wed: update mtk_wed_stop
  4. Update mtk_wed_stop routine and rename old mtk_wed_stop() to
  5. mtk_wed_deinit(). This is a preliminary patch to add Wireless Ethernet
  6. Dispatcher reset support.
  7. Co-developed-by: Sujuan Chen <[email protected]>
  8. Signed-off-by: Sujuan Chen <[email protected]>
  9. Signed-off-by: Lorenzo Bianconi <[email protected]>
  10. Signed-off-by: Paolo Abeni <[email protected]>
  11. ---
  12. --- a/drivers/net/ethernet/mediatek/mtk_wed.c
  13. +++ b/drivers/net/ethernet/mediatek/mtk_wed.c
  14. @@ -539,14 +539,8 @@ mtk_wed_dma_disable(struct mtk_wed_devic
  15. static void
  16. mtk_wed_stop(struct mtk_wed_device *dev)
  17. {
  18. - mtk_wed_dma_disable(dev);
  19. mtk_wed_set_ext_int(dev, false);
  20. - wed_clr(dev, MTK_WED_CTRL,
  21. - MTK_WED_CTRL_WDMA_INT_AGENT_EN |
  22. - MTK_WED_CTRL_WPDMA_INT_AGENT_EN |
  23. - MTK_WED_CTRL_WED_TX_BM_EN |
  24. - MTK_WED_CTRL_WED_TX_FREE_AGENT_EN);
  25. wed_w32(dev, MTK_WED_WPDMA_INT_TRIGGER, 0);
  26. wed_w32(dev, MTK_WED_WDMA_INT_TRIGGER, 0);
  27. wdma_w32(dev, MTK_WDMA_INT_MASK, 0);
  28. @@ -558,7 +552,27 @@ mtk_wed_stop(struct mtk_wed_device *dev)
  29. wed_w32(dev, MTK_WED_EXT_INT_MASK1, 0);
  30. wed_w32(dev, MTK_WED_EXT_INT_MASK2, 0);
  31. - wed_clr(dev, MTK_WED_CTRL, MTK_WED_CTRL_WED_RX_BM_EN);
  32. +}
  33. +
  34. +static void
  35. +mtk_wed_deinit(struct mtk_wed_device *dev)
  36. +{
  37. + mtk_wed_stop(dev);
  38. + mtk_wed_dma_disable(dev);
  39. +
  40. + wed_clr(dev, MTK_WED_CTRL,
  41. + MTK_WED_CTRL_WDMA_INT_AGENT_EN |
  42. + MTK_WED_CTRL_WPDMA_INT_AGENT_EN |
  43. + MTK_WED_CTRL_WED_TX_BM_EN |
  44. + MTK_WED_CTRL_WED_TX_FREE_AGENT_EN);
  45. +
  46. + if (dev->hw->version == 1)
  47. + return;
  48. +
  49. + wed_clr(dev, MTK_WED_CTRL,
  50. + MTK_WED_CTRL_RX_ROUTE_QM_EN |
  51. + MTK_WED_CTRL_WED_RX_BM_EN |
  52. + MTK_WED_CTRL_RX_RRO_QM_EN);
  53. }
  54. static void
  55. @@ -568,7 +582,7 @@ mtk_wed_detach(struct mtk_wed_device *de
  56. mutex_lock(&hw_lock);
  57. - mtk_wed_stop(dev);
  58. + mtk_wed_deinit(dev);
  59. mtk_wdma_rx_reset(dev);
  60. mtk_wed_reset(dev, MTK_WED_RESET_WED);
  61. @@ -677,7 +691,7 @@ mtk_wed_hw_init_early(struct mtk_wed_dev
  62. {
  63. u32 mask, set;
  64. - mtk_wed_stop(dev);
  65. + mtk_wed_deinit(dev);
  66. mtk_wed_reset(dev, MTK_WED_RESET_WED);
  67. mtk_wed_set_wpdma(dev);
  68. --- a/include/linux/soc/mediatek/mtk_wed.h
  69. +++ b/include/linux/soc/mediatek/mtk_wed.h
  70. @@ -234,6 +234,8 @@ mtk_wed_get_rx_capa(struct mtk_wed_devic
  71. (_dev)->ops->ppe_check(_dev, _skb, _reason, _hash)
  72. #define mtk_wed_device_update_msg(_dev, _id, _msg, _len) \
  73. (_dev)->ops->msg_update(_dev, _id, _msg, _len)
  74. +#define mtk_wed_device_stop(_dev) (_dev)->ops->stop(_dev)
  75. +#define mtk_wed_device_dma_reset(_dev) (_dev)->ops->reset_dma(_dev)
  76. #else
  77. static inline bool mtk_wed_device_active(struct mtk_wed_device *dev)
  78. {
  79. @@ -250,6 +252,8 @@ static inline bool mtk_wed_device_active
  80. #define mtk_wed_device_rx_ring_setup(_dev, _ring, _regs) -ENODEV
  81. #define mtk_wed_device_ppe_check(_dev, _skb, _reason, _hash) do {} while (0)
  82. #define mtk_wed_device_update_msg(_dev, _id, _msg, _len) -ENODEV
  83. +#define mtk_wed_device_stop(_dev) do {} while (0)
  84. +#define mtk_wed_device_dma_reset(_dev) do {} while (0)
  85. #endif
  86. #endif