| From 7c68ae1b991064bc0904313c56b83d2f3e03ccd7 Mon Sep 17 00:00:00 2001 |
| From: Sujuan Chen <sujuan.chen@mediatek.com> |
| Date: Mon, 18 Sep 2023 11:03:33 +0800 |
| Subject: [PATCH 07/24] add-wed-tx-wds-support-for-netsys2 |
| |
| --- |
| drivers/net/ethernet/mediatek/mtk_wed.c | 6 ++++-- |
| drivers/net/ethernet/mediatek/mtk_wed_regs.h | 1 + |
| include/linux/soc/mediatek/mtk_wed.h | 3 +++ |
| 3 files changed, 8 insertions(+), 2 deletions(-) |
| |
| diff --git a/drivers/net/ethernet/mediatek/mtk_wed.c b/drivers/net/ethernet/mediatek/mtk_wed.c |
| index 02e06a8..ea8b2db 100644 |
| --- a/drivers/net/ethernet/mediatek/mtk_wed.c |
| +++ b/drivers/net/ethernet/mediatek/mtk_wed.c |
| @@ -813,7 +813,7 @@ mtk_wed_start(struct mtk_wed_device *dev, u32 irq_mask) |
| val |= BIT(0) | (BIT(1) * !!dev->hw->index); |
| regmap_write(dev->hw->mirror, dev->hw->index * 4, val); |
| } else { |
| - mtk_wed_set_512_support(dev, true); |
| + mtk_wed_set_512_support(dev, dev->wlan.wcid_512); |
| } |
| |
| mtk_wed_dma_enable(dev); |
| @@ -869,9 +869,11 @@ mtk_wed_attach(struct mtk_wed_device *dev) |
| |
| mtk_wed_hw_init_early(dev); |
| |
| - if (hw->hifsys) |
| + if (hw->version == 1) |
| regmap_update_bits(hw->hifsys, HIFSYS_DMA_AG_MAP, |
| BIT(hw->index), 0); |
| + else |
| + dev->rev_id = wed_r32(dev, MTK_WED_REV_ID); |
| |
| out: |
| mutex_unlock(&hw_lock); |
| diff --git a/drivers/net/ethernet/mediatek/mtk_wed_regs.h b/drivers/net/ethernet/mediatek/mtk_wed_regs.h |
| index e66acda..e797e9d 100644 |
| --- a/drivers/net/ethernet/mediatek/mtk_wed_regs.h |
| +++ b/drivers/net/ethernet/mediatek/mtk_wed_regs.h |
| @@ -26,6 +26,7 @@ struct mtk_wdma_desc { |
| #define MTK_WED_REV_ID 0x000 |
| #define MTK_WED_REV_ID_MAJOR GENMASK(7, 0) |
| #endif |
| +#define MTK_WED_REV_ID_MINOR GENMASK(27, 16) |
| |
| #define MTK_WED_RESET 0x008 |
| #define MTK_WED_RESET_TX_BM BIT(0) |
| diff --git a/include/linux/soc/mediatek/mtk_wed.h b/include/linux/soc/mediatek/mtk_wed.h |
| index 4db70b0..00036f9 100644 |
| --- a/include/linux/soc/mediatek/mtk_wed.h |
| +++ b/include/linux/soc/mediatek/mtk_wed.h |
| @@ -35,6 +35,7 @@ struct mtk_wed_device { |
| bool init_done, running; |
| int wdma_idx; |
| int irq; |
| + u32 rev_id; |
| |
| struct mtk_wed_ring tx_ring[MTK_WED_TX_QUEUES]; |
| struct mtk_wed_ring txfree_ring; |
| @@ -68,6 +69,8 @@ struct mtk_wed_device { |
| u16 token_start; |
| unsigned int nbuf; |
| |
| + bool wcid_512; |
| + |
| u32 (*init_buf)(void *ptr, dma_addr_t phys, int token_id); |
| int (*offload_enable)(struct mtk_wed_device *wed); |
| void (*offload_disable)(struct mtk_wed_device *wed); |
| -- |
| 2.18.0 |
| |