Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e2a240c7 authored by Sonic Zhang's avatar Sonic Zhang Committed by David S. Miller
Browse files

driver:net:stmmac: Disable DMA store and forward mode if platform data...


driver:net:stmmac: Disable DMA store and forward mode if platform data force_thresh_dma_mode is set.

Some synopsys ip implementation doesn't support DMA store and forward mode,
such as BF60x. So, set force_thresh_dma_mode to use DMA thresholds only.
Update document and devicetree as well.

Signed-off-by: default avatarSonic Zhang <sonic.zhang@analog.com>
Acked-by: default avatarGiuseppe Cavallaro <peppe.cavallaro@st.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 816c5b5b
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -22,6 +22,11 @@ Required properties:
- snps,pbl		Programmable Burst Length
- snps,fixed-burst	Program the DMA to use the fixed burst mode
- snps,mixed-burst	Program the DMA to use the mixed burst mode
- snps,force_thresh_dma_mode	Force DMA to use the threshold mode for
				both tx and rx
- snps,force_sf_dma_mode	Force DMA to use the Store and Forward
				mode for both tx and rx. This flag is
				ignored if force_thresh_dma_mode is set.

Optional properties:
- mac-address: 6 bytes, mac address
+3 −0
Original line number Diff line number Diff line
@@ -123,6 +123,7 @@ struct plat_stmmacenet_data {
	int bugged_jumbo;
	int pmt;
	int force_sf_dma_mode;
	int force_thresh_dma_mode;
	int riwt_off;
	void (*fix_mac_speed)(void *priv, unsigned int speed);
	void (*bus_setup)(void __iomem *ioaddr);
@@ -159,6 +160,8 @@ Where:
 o pmt: core has the embedded power module (optional).
 o force_sf_dma_mode: force DMA to use the Store and Forward mode
		     instead of the Threshold.
 o force_thresh_dma_mode: force DMA to use the Shreshold mode other than
		     the Store and Forward mode.
 o riwt_off: force to disable the RX watchdog feature and switch to NAPI mode.
 o fix_mac_speed: this callback is used for modifying some syscfg registers
		 (on ST SoCs) according to the link speed negotiated by the
+3 −1
Original line number Diff line number Diff line
@@ -1224,7 +1224,9 @@ static void free_dma_desc_resources(struct stmmac_priv *priv)
 */
static void stmmac_dma_operation_mode(struct stmmac_priv *priv)
{
	if (priv->plat->force_sf_dma_mode || priv->plat->tx_coe) {
	if (priv->plat->force_thresh_dma_mode)
		priv->hw->dma->dma_mode(priv->ioaddr, tc, tc);
	else if (priv->plat->force_sf_dma_mode || priv->plat->tx_coe) {
		/*
		 * In case of GMAC, SF mode can be enabled
		 * to perform the TX COE in HW. This depends on:
+5 −0
Original line number Diff line number Diff line
@@ -79,6 +79,11 @@ static int stmmac_probe_config_dt(struct platform_device *pdev,
	of_property_read_u32(np, "snps,pbl", &dma_cfg->pbl);
	dma_cfg->fixed_burst = of_property_read_bool(np, "snps,fixed-burst");
	dma_cfg->mixed_burst = of_property_read_bool(np, "snps,mixed-burst");
	plat->force_thresh_dma_mode = of_property_read_bool(np, "snps,force_thresh_dma_mode");
	if (plat->force_thresh_dma_mode) {
		plat->force_sf_dma_mode = 0;
		pr_warn("force_sf_dma_mode is ignored if force_thresh_dma_mode is set.");
	}

	return 0;
}
+1 −0
Original line number Diff line number Diff line
@@ -108,6 +108,7 @@ struct plat_stmmacenet_data {
	int bugged_jumbo;
	int pmt;
	int force_sf_dma_mode;
	int force_thresh_dma_mode;
	int riwt_off;
	void (*fix_mac_speed)(void *priv, unsigned int speed);
	void (*bus_setup)(void __iomem *ioaddr);