mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-11-04 06:54:27 -05:00 
			
		
		
		
	Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.6.29 Removed upstreamed: generic/backport-6.6/740-v6.9-01-netfilter-flowtable-validate-pppoe-header.patch[1] generic/backport-6.6/740-v6.9-02-netfilter-flowtable-incorrect-pppoe-tuple.patch[2] generic/backport-6.6/790-29-v6.9-net-dsa-mt7530-fix-improper-frames-on-all-25MHz-and-.patch[3] generic/backport-6.6/790-31-v6.10-net-dsa-mt7530-fix-enabling-EEE-on-MT7531-switch-on-.patch[4] generic/backport-6.6/790-34-v6.10-net-dsa-mt7530-fix-mirroring-frames-received-on-loca.patch[5] generic/backport-6.6/790-35-v6.10-net-dsa-mt7530-fix-port-mirroring-for-MT7988-SoC-swi.patch[6] mediatek/patches-6.6/963-net-ethernet-mtk_eth_soc-fix-WED-wifi-reset.patch[7] Manually rebased: generic/backport-6.6/790-23-v6.9-net-dsa-mt7530-get-rid-of-priv-info-cpu_port_config.patch All other patches automatically rebased. 1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.29&id=a2471d271042ea18e8a6babc132a8716bb2f08b9 2. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.29&id=4ed82dd368ad883dc4284292937b882f044e625d 3. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.29&id=21b9d89d93422221cdda1b82fd075fa3c94a11d9 4. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.29&id=bd41ee1efd478852a0882ce5f136bc2b5e83eff2 5. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.29&id=d1be3960539249a8690ed09a29d0e3bf34189dd2 6. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.29&id=f8de1b6208bf71bd3102548d33dd8475573ad2ea 7. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.29&id=6855f724f19620c3ddff57c349e0abba797475b1 Build system: x86/64 Build-tested: x86/64/AMD Cezanne, flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3 Run-tested: x86/64/AMD Cezanne, flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3 Signed-off-by: John Audia <therealgraysky@proton.me>
		
			
				
	
	
		
			233 lines
		
	
	
		
			7.0 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			233 lines
		
	
	
		
			7.0 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
From: Lorenzo Bianconi <lorenzo@kernel.org>
 | 
						|
Date: Mon, 18 Sep 2023 12:29:05 +0200
 | 
						|
Subject: [PATCH] net: ethernet: mtk_wed: introduce versioning utility routines
 | 
						|
 | 
						|
Similar to mtk_eth_soc, introduce the following wed versioning
 | 
						|
utility routines:
 | 
						|
- mtk_wed_is_v1
 | 
						|
- mtk_wed_is_v2
 | 
						|
 | 
						|
This is a preliminary patch to introduce WED support for MT7988 SoC
 | 
						|
 | 
						|
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
 | 
						|
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
 | 
						|
---
 | 
						|
 | 
						|
--- a/drivers/net/ethernet/mediatek/mtk_wed.c
 | 
						|
+++ b/drivers/net/ethernet/mediatek/mtk_wed.c
 | 
						|
@@ -278,7 +278,7 @@ mtk_wed_assign(struct mtk_wed_device *de
 | 
						|
 		if (!hw->wed_dev)
 | 
						|
 			goto out;
 | 
						|
 
 | 
						|
-		if (hw->version == 1)
 | 
						|
+		if (mtk_wed_is_v1(hw))
 | 
						|
 			return NULL;
 | 
						|
 
 | 
						|
 		/* MT7986 WED devices do not have any pcie slot restrictions */
 | 
						|
@@ -359,7 +359,7 @@ mtk_wed_tx_buffer_alloc(struct mtk_wed_d
 | 
						|
 			desc->buf0 = cpu_to_le32(buf_phys);
 | 
						|
 			desc->buf1 = cpu_to_le32(buf_phys + txd_size);
 | 
						|
 
 | 
						|
-			if (dev->hw->version == 1)
 | 
						|
+			if (mtk_wed_is_v1(dev->hw))
 | 
						|
 				ctrl = FIELD_PREP(MTK_WDMA_DESC_CTRL_LEN0, txd_size) |
 | 
						|
 				       FIELD_PREP(MTK_WDMA_DESC_CTRL_LEN1,
 | 
						|
 						  MTK_WED_BUF_SIZE - txd_size) |
 | 
						|
@@ -498,7 +498,7 @@ mtk_wed_set_ext_int(struct mtk_wed_devic
 | 
						|
 {
 | 
						|
 	u32 mask = MTK_WED_EXT_INT_STATUS_ERROR_MASK;
 | 
						|
 
 | 
						|
-	if (dev->hw->version == 1)
 | 
						|
+	if (mtk_wed_is_v1(dev->hw))
 | 
						|
 		mask |= MTK_WED_EXT_INT_STATUS_TX_DRV_R_RESP_ERR;
 | 
						|
 	else
 | 
						|
 		mask |= MTK_WED_EXT_INT_STATUS_RX_FBUF_LO_TH |
 | 
						|
@@ -577,7 +577,7 @@ mtk_wed_dma_disable(struct mtk_wed_devic
 | 
						|
 		 MTK_WDMA_GLO_CFG_RX_INFO1_PRERES |
 | 
						|
 		 MTK_WDMA_GLO_CFG_RX_INFO2_PRERES);
 | 
						|
 
 | 
						|
-	if (dev->hw->version == 1) {
 | 
						|
+	if (mtk_wed_is_v1(dev->hw)) {
 | 
						|
 		regmap_write(dev->hw->mirror, dev->hw->index * 4, 0);
 | 
						|
 		wdma_clr(dev, MTK_WDMA_GLO_CFG,
 | 
						|
 			 MTK_WDMA_GLO_CFG_RX_INFO3_PRERES);
 | 
						|
@@ -606,7 +606,7 @@ mtk_wed_stop(struct mtk_wed_device *dev)
 | 
						|
 	wdma_w32(dev, MTK_WDMA_INT_MASK, 0);
 | 
						|
 	wdma_w32(dev, MTK_WDMA_INT_GRP2, 0);
 | 
						|
 
 | 
						|
-	if (dev->hw->version == 1)
 | 
						|
+	if (mtk_wed_is_v1(dev->hw))
 | 
						|
 		return;
 | 
						|
 
 | 
						|
 	wed_w32(dev, MTK_WED_EXT_INT_MASK1, 0);
 | 
						|
@@ -624,7 +624,7 @@ mtk_wed_deinit(struct mtk_wed_device *de
 | 
						|
 		MTK_WED_CTRL_WED_TX_BM_EN |
 | 
						|
 		MTK_WED_CTRL_WED_TX_FREE_AGENT_EN);
 | 
						|
 
 | 
						|
-	if (dev->hw->version == 1)
 | 
						|
+	if (mtk_wed_is_v1(dev->hw))
 | 
						|
 		return;
 | 
						|
 
 | 
						|
 	wed_clr(dev, MTK_WED_CTRL,
 | 
						|
@@ -730,7 +730,7 @@ mtk_wed_bus_init(struct mtk_wed_device *
 | 
						|
 static void
 | 
						|
 mtk_wed_set_wpdma(struct mtk_wed_device *dev)
 | 
						|
 {
 | 
						|
-	if (dev->hw->version == 1) {
 | 
						|
+	if (mtk_wed_is_v1(dev->hw)) {
 | 
						|
 		wed_w32(dev, MTK_WED_WPDMA_CFG_BASE,  dev->wlan.wpdma_phys);
 | 
						|
 	} else {
 | 
						|
 		mtk_wed_bus_init(dev);
 | 
						|
@@ -761,7 +761,7 @@ mtk_wed_hw_init_early(struct mtk_wed_dev
 | 
						|
 	      MTK_WED_WDMA_GLO_CFG_IDLE_DMAD_SUPPLY;
 | 
						|
 	wed_m32(dev, MTK_WED_WDMA_GLO_CFG, mask, set);
 | 
						|
 
 | 
						|
-	if (dev->hw->version == 1) {
 | 
						|
+	if (mtk_wed_is_v1(dev->hw)) {
 | 
						|
 		u32 offset = dev->hw->index ? 0x04000400 : 0;
 | 
						|
 
 | 
						|
 		wdma_set(dev, MTK_WDMA_GLO_CFG,
 | 
						|
@@ -934,7 +934,7 @@ mtk_wed_hw_init(struct mtk_wed_device *d
 | 
						|
 
 | 
						|
 	wed_w32(dev, MTK_WED_TX_BM_BUF_LEN, MTK_WED_PKT_SIZE);
 | 
						|
 
 | 
						|
-	if (dev->hw->version == 1) {
 | 
						|
+	if (mtk_wed_is_v1(dev->hw)) {
 | 
						|
 		wed_w32(dev, MTK_WED_TX_BM_TKID,
 | 
						|
 			FIELD_PREP(MTK_WED_TX_BM_TKID_START,
 | 
						|
 				   dev->wlan.token_start) |
 | 
						|
@@ -967,7 +967,7 @@ mtk_wed_hw_init(struct mtk_wed_device *d
 | 
						|
 
 | 
						|
 	mtk_wed_reset(dev, MTK_WED_RESET_TX_BM);
 | 
						|
 
 | 
						|
-	if (dev->hw->version == 1) {
 | 
						|
+	if (mtk_wed_is_v1(dev->hw)) {
 | 
						|
 		wed_set(dev, MTK_WED_CTRL,
 | 
						|
 			MTK_WED_CTRL_WED_TX_BM_EN |
 | 
						|
 			MTK_WED_CTRL_WED_TX_FREE_AGENT_EN);
 | 
						|
@@ -1217,7 +1217,7 @@ mtk_wed_reset_dma(struct mtk_wed_device
 | 
						|
 	}
 | 
						|
 
 | 
						|
 	dev->init_done = false;
 | 
						|
-	if (dev->hw->version == 1)
 | 
						|
+	if (mtk_wed_is_v1(dev->hw))
 | 
						|
 		return;
 | 
						|
 
 | 
						|
 	if (!busy) {
 | 
						|
@@ -1343,7 +1343,7 @@ mtk_wed_configure_irq(struct mtk_wed_dev
 | 
						|
 		MTK_WED_CTRL_WED_TX_BM_EN |
 | 
						|
 		MTK_WED_CTRL_WED_TX_FREE_AGENT_EN);
 | 
						|
 
 | 
						|
-	if (dev->hw->version == 1) {
 | 
						|
+	if (mtk_wed_is_v1(dev->hw)) {
 | 
						|
 		wed_w32(dev, MTK_WED_PCIE_INT_TRIGGER,
 | 
						|
 			MTK_WED_PCIE_INT_TRIGGER_STATUS);
 | 
						|
 
 | 
						|
@@ -1416,7 +1416,7 @@ mtk_wed_dma_enable(struct mtk_wed_device
 | 
						|
 		 MTK_WDMA_GLO_CFG_RX_INFO1_PRERES |
 | 
						|
 		 MTK_WDMA_GLO_CFG_RX_INFO2_PRERES);
 | 
						|
 
 | 
						|
-	if (dev->hw->version == 1) {
 | 
						|
+	if (mtk_wed_is_v1(dev->hw)) {
 | 
						|
 		wdma_set(dev, MTK_WDMA_GLO_CFG,
 | 
						|
 			 MTK_WDMA_GLO_CFG_RX_INFO3_PRERES);
 | 
						|
 	} else {
 | 
						|
@@ -1465,7 +1465,7 @@ mtk_wed_start(struct mtk_wed_device *dev
 | 
						|
 
 | 
						|
 	mtk_wed_set_ext_int(dev, true);
 | 
						|
 
 | 
						|
-	if (dev->hw->version == 1) {
 | 
						|
+	if (mtk_wed_is_v1(dev->hw)) {
 | 
						|
 		u32 val = dev->wlan.wpdma_phys | MTK_PCIE_MIRROR_MAP_EN |
 | 
						|
 			  FIELD_PREP(MTK_PCIE_MIRROR_MAP_WED_ID,
 | 
						|
 				     dev->hw->index);
 | 
						|
@@ -1550,7 +1550,7 @@ mtk_wed_attach(struct mtk_wed_device *de
 | 
						|
 	}
 | 
						|
 
 | 
						|
 	mtk_wed_hw_init_early(dev);
 | 
						|
-	if (hw->version == 1) {
 | 
						|
+	if (mtk_wed_is_v1(hw)) {
 | 
						|
 		regmap_update_bits(hw->hifsys, HIFSYS_DMA_AG_MAP,
 | 
						|
 				   BIT(hw->index), 0);
 | 
						|
 	} else {
 | 
						|
@@ -1618,7 +1618,7 @@ static int
 | 
						|
 mtk_wed_txfree_ring_setup(struct mtk_wed_device *dev, void __iomem *regs)
 | 
						|
 {
 | 
						|
 	struct mtk_wed_ring *ring = &dev->txfree_ring;
 | 
						|
-	int i, index = dev->hw->version == 1;
 | 
						|
+	int i, index = mtk_wed_is_v1(dev->hw);
 | 
						|
 
 | 
						|
 	/*
 | 
						|
 	 * For txfree event handling, the same DMA ring is shared between WED
 | 
						|
@@ -1676,7 +1676,7 @@ mtk_wed_irq_get(struct mtk_wed_device *d
 | 
						|
 {
 | 
						|
 	u32 val, ext_mask = MTK_WED_EXT_INT_STATUS_ERROR_MASK;
 | 
						|
 
 | 
						|
-	if (dev->hw->version == 1)
 | 
						|
+	if (mtk_wed_is_v1(dev->hw))
 | 
						|
 		ext_mask |= MTK_WED_EXT_INT_STATUS_TX_DRV_R_RESP_ERR;
 | 
						|
 	else
 | 
						|
 		ext_mask |= MTK_WED_EXT_INT_STATUS_RX_FBUF_LO_TH |
 | 
						|
@@ -1840,7 +1840,7 @@ mtk_wed_setup_tc(struct mtk_wed_device *
 | 
						|
 {
 | 
						|
 	struct mtk_wed_hw *hw = wed->hw;
 | 
						|
 
 | 
						|
-	if (hw->version < 2)
 | 
						|
+	if (mtk_wed_is_v1(hw))
 | 
						|
 		return -EOPNOTSUPP;
 | 
						|
 
 | 
						|
 	switch (type) {
 | 
						|
@@ -1914,9 +1914,9 @@ void mtk_wed_add_hw(struct device_node *
 | 
						|
 	hw->wdma = wdma;
 | 
						|
 	hw->index = index;
 | 
						|
 	hw->irq = irq;
 | 
						|
-	hw->version = mtk_is_netsys_v1(eth) ? 1 : 2;
 | 
						|
+	hw->version = eth->soc->version;
 | 
						|
 
 | 
						|
-	if (hw->version == 1) {
 | 
						|
+	if (mtk_wed_is_v1(hw)) {
 | 
						|
 		hw->mirror = syscon_regmap_lookup_by_phandle(eth_np,
 | 
						|
 				"mediatek,pcie-mirror");
 | 
						|
 		hw->hifsys = syscon_regmap_lookup_by_phandle(eth_np,
 | 
						|
--- a/drivers/net/ethernet/mediatek/mtk_wed.h
 | 
						|
+++ b/drivers/net/ethernet/mediatek/mtk_wed.h
 | 
						|
@@ -40,6 +40,16 @@ struct mtk_wdma_info {
 | 
						|
 };
 | 
						|
 
 | 
						|
 #ifdef CONFIG_NET_MEDIATEK_SOC_WED
 | 
						|
+static inline bool mtk_wed_is_v1(struct mtk_wed_hw *hw)
 | 
						|
+{
 | 
						|
+	return hw->version == 1;
 | 
						|
+}
 | 
						|
+
 | 
						|
+static inline bool mtk_wed_is_v2(struct mtk_wed_hw *hw)
 | 
						|
+{
 | 
						|
+	return hw->version == 2;
 | 
						|
+}
 | 
						|
+
 | 
						|
 static inline void
 | 
						|
 wed_w32(struct mtk_wed_device *dev, u32 reg, u32 val)
 | 
						|
 {
 | 
						|
--- a/drivers/net/ethernet/mediatek/mtk_wed_debugfs.c
 | 
						|
+++ b/drivers/net/ethernet/mediatek/mtk_wed_debugfs.c
 | 
						|
@@ -261,7 +261,7 @@ void mtk_wed_hw_add_debugfs(struct mtk_w
 | 
						|
 	debugfs_create_u32("regidx", 0600, dir, &hw->debugfs_reg);
 | 
						|
 	debugfs_create_file_unsafe("regval", 0600, dir, hw, &fops_regval);
 | 
						|
 	debugfs_create_file_unsafe("txinfo", 0400, dir, hw, &wed_txinfo_fops);
 | 
						|
-	if (hw->version != 1)
 | 
						|
+	if (!mtk_wed_is_v1(hw))
 | 
						|
 		debugfs_create_file_unsafe("rxinfo", 0400, dir, hw,
 | 
						|
 					   &wed_rxinfo_fops);
 | 
						|
 }
 | 
						|
--- a/drivers/net/ethernet/mediatek/mtk_wed_mcu.c
 | 
						|
+++ b/drivers/net/ethernet/mediatek/mtk_wed_mcu.c
 | 
						|
@@ -207,7 +207,7 @@ int mtk_wed_mcu_msg_update(struct mtk_we
 | 
						|
 {
 | 
						|
 	struct mtk_wed_wo *wo = dev->hw->wed_wo;
 | 
						|
 
 | 
						|
-	if (dev->hw->version == 1)
 | 
						|
+	if (mtk_wed_is_v1(dev->hw))
 | 
						|
 		return 0;
 | 
						|
 
 | 
						|
 	if (WARN_ON(!wo))
 |