Commit 329bce51 authored by Lorenzo Bianconi's avatar Lorenzo Bianconi Committed by Paolo Abeni
Browse files

net: ethernet: mtk_eth_soc: move gdma_to_ppe and ppe_base definitions in mtk register map



This is a preliminary patch to introduce mt7986 hw packet engine.

Tested-by: default avatarDaniel Golle <daniel@makrotopia.org>
Signed-off-by: default avatarLorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
parent 22ecfce1
Loading
Loading
Loading
Loading
+11 −4
Original line number Diff line number Diff line
@@ -73,6 +73,8 @@ static const struct mtk_reg_map mtk_reg_map = {
		.fq_blen	= 0x1b2c,
	},
	.gdm1_cnt		= 0x2400,
	.gdma_to_ppe		= 0x4444,
	.ppe_base		= 0x0c00,
};

static const struct mtk_reg_map mt7628_reg_map = {
@@ -126,6 +128,8 @@ static const struct mtk_reg_map mt7986_reg_map = {
		.fq_blen	= 0x472c,
	},
	.gdm1_cnt		= 0x1c00,
	.gdma_to_ppe		= 0x3333,
	.ppe_base		= 0x2000,
};

/* strings used by ethtool */
@@ -2978,21 +2982,22 @@ static int mtk_open(struct net_device *dev)

	/* we run 2 netdevs on the same dma ring so we only bring it up once */
	if (!refcount_read(&eth->dma_refcnt)) {
		const struct mtk_soc_data *soc = eth->soc;
		u32 gdm_config = MTK_GDMA_TO_PDMA;

		err = mtk_start_dma(eth);
		if (err)
			return err;

		if (eth->soc->offload_version && mtk_ppe_start(eth->ppe) == 0)
			gdm_config = MTK_GDMA_TO_PPE;
		if (soc->offload_version && mtk_ppe_start(eth->ppe) == 0)
			gdm_config = soc->reg_map->gdma_to_ppe;

		mtk_gdm_config(eth, gdm_config);

		napi_enable(&eth->tx_napi);
		napi_enable(&eth->rx_napi);
		mtk_tx_irq_enable(eth, MTK_TX_DONE_INT);
		mtk_rx_irq_enable(eth, eth->soc->txrx.rx_irq_done_mask);
		mtk_rx_irq_enable(eth, soc->txrx.rx_irq_done_mask);
		refcount_set(&eth->dma_refcnt, 1);
	}
	else
@@ -4098,7 +4103,9 @@ static int mtk_probe(struct platform_device *pdev)
	}

	if (eth->soc->offload_version) {
		eth->ppe = mtk_ppe_init(eth, eth->base + MTK_ETH_PPE_BASE, 2);
		u32 ppe_addr = eth->soc->reg_map->ppe_base;

		eth->ppe = mtk_ppe_init(eth, eth->base + ppe_addr, 2);
		if (!eth->ppe) {
			err = -ENOMEM;
			goto err_free_dev;
+2 −1
Original line number Diff line number Diff line
@@ -105,7 +105,6 @@
#define MTK_GDMA_TCS_EN		BIT(21)
#define MTK_GDMA_UCS_EN		BIT(20)
#define MTK_GDMA_TO_PDMA	0x0
#define MTK_GDMA_TO_PPE		0x4444
#define MTK_GDMA_DROP_ALL       0x7777

/* Unicast Filter MAC Address Register - Low */
@@ -955,6 +954,8 @@ struct mtk_reg_map {
		u32	fq_blen;	/* fq free page buffer length */
	} qdma;
	u32	gdm1_cnt;
	u32	gdma_to_ppe;
	u32	ppe_base;
};

/* struct mtk_eth_data -	This is the structure holding all differences
+0 −2
Original line number Diff line number Diff line
@@ -8,8 +8,6 @@
#include <linux/bitfield.h>
#include <linux/rhashtable.h>

#define MTK_ETH_PPE_BASE		0xc00

#define MTK_PPE_ENTRIES_SHIFT		3
#define MTK_PPE_ENTRIES			(1024 << MTK_PPE_ENTRIES_SHIFT)
#define MTK_PPE_HASH_MASK		(MTK_PPE_ENTRIES - 1)