Commit cad4162a authored by David S. Miller's avatar David S. Miller
Browse files

Merge branch 'stmmac-swmac-desc-prefetch'



Mohammad Athari Bin Ismail says:

====================
Enable DWMAC HW descriptor prefetch

This patch series to add setting for HW descriptor prefetch for DWMAC
version 5.20 onwards. For Intel platform, enable the capability by
default.
====================

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 79ebfb11 676b7ec6
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@
#define DWMAC_CORE_4_10		0x41
#define DWMAC_CORE_5_00		0x50
#define DWMAC_CORE_5_10		0x51
#define DWMAC_CORE_5_20		0x52
#define DWXGMAC_CORE_2_10	0x21
#define DWXLGMAC_CORE_2_00	0x20

+1 −0
Original line number Diff line number Diff line
@@ -471,6 +471,7 @@ static int intel_mgbe_common_data(struct pci_dev *pdev,
	plat->dma_cfg->fixed_burst = 0;
	plat->dma_cfg->mixed_burst = 0;
	plat->dma_cfg->aal = 0;
	plat->dma_cfg->dche = true;

	plat->axi = devm_kzalloc(&pdev->dev, sizeof(*plat->axi),
				 GFP_KERNEL);
+8 −2
Original line number Diff line number Diff line
@@ -162,12 +162,18 @@ static void dwmac4_dma_init(void __iomem *ioaddr,

	writel(value, ioaddr + DMA_SYS_BUS_MODE);

	if (dma_cfg->multi_msi_en) {
	value = readl(ioaddr + DMA_BUS_MODE);

	if (dma_cfg->multi_msi_en) {
		value &= ~DMA_BUS_MODE_INTM_MASK;
		value |= (DMA_BUS_MODE_INTM_MODE1 << DMA_BUS_MODE_INTM_SHIFT);
		writel(value, ioaddr + DMA_BUS_MODE);
	}

	if (dma_cfg->dche)
		value |= DMA_BUS_MODE_DCHE;

	writel(value, ioaddr + DMA_BUS_MODE);

}

static void _dwmac4_dump_dma_regs(void __iomem *ioaddr, u32 channel,
+1 −0
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@
#define DMA_TBS_CTRL			0x00001050

/* DMA Bus Mode bitmap */
#define DMA_BUS_MODE_DCHE		BIT(19)
#define DMA_BUS_MODE_INTM_MASK		GENMASK(17, 16)
#define DMA_BUS_MODE_INTM_SHIFT		16
#define DMA_BUS_MODE_INTM_MODE1		0x1
+5 −0
Original line number Diff line number Diff line
@@ -6849,6 +6849,11 @@ int stmmac_dvr_probe(struct device *device,
	if (ret)
		goto error_hw_init;

	/* Only DWMAC core version 5.20 onwards supports HW descriptor prefetch.
	 */
	if (priv->synopsys_id < DWMAC_CORE_5_20)
		priv->plat->dma_cfg->dche = false;

	stmmac_check_ether_addr(priv);

	ndev->netdev_ops = &stmmac_netdev_ops;
Loading