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 Original line Diff line number Diff line
@@ -22,6 +22,11 @@ Required properties:
- snps,pbl		Programmable Burst Length
- snps,pbl		Programmable Burst Length
- snps,fixed-burst	Program the DMA to use the fixed burst mode
- 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,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:
Optional properties:
- mac-address: 6 bytes, mac address
- mac-address: 6 bytes, mac address
+3 −0
Original line number Original line Diff line number Diff line
@@ -123,6 +123,7 @@ struct plat_stmmacenet_data {
	int bugged_jumbo;
	int bugged_jumbo;
	int pmt;
	int pmt;
	int force_sf_dma_mode;
	int force_sf_dma_mode;
	int force_thresh_dma_mode;
	int riwt_off;
	int riwt_off;
	void (*fix_mac_speed)(void *priv, unsigned int speed);
	void (*fix_mac_speed)(void *priv, unsigned int speed);
	void (*bus_setup)(void __iomem *ioaddr);
	void (*bus_setup)(void __iomem *ioaddr);
@@ -159,6 +160,8 @@ Where:
 o pmt: core has the embedded power module (optional).
 o pmt: core has the embedded power module (optional).
 o force_sf_dma_mode: force DMA to use the Store and Forward mode
 o force_sf_dma_mode: force DMA to use the Store and Forward mode
		     instead of the Threshold.
		     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 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
 o fix_mac_speed: this callback is used for modifying some syscfg registers
		 (on ST SoCs) according to the link speed negotiated by the
		 (on ST SoCs) according to the link speed negotiated by the
+3 −1
Original line number Original line 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)
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
		 * In case of GMAC, SF mode can be enabled
		 * to perform the TX COE in HW. This depends on:
		 * to perform the TX COE in HW. This depends on:
+5 −0
Original line number Original line 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);
	of_property_read_u32(np, "snps,pbl", &dma_cfg->pbl);
	dma_cfg->fixed_burst = of_property_read_bool(np, "snps,fixed-burst");
	dma_cfg->fixed_burst = of_property_read_bool(np, "snps,fixed-burst");
	dma_cfg->mixed_burst = of_property_read_bool(np, "snps,mixed-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;
	return 0;
}
}
+1 −0
Original line number Original line Diff line number Diff line
@@ -108,6 +108,7 @@ struct plat_stmmacenet_data {
	int bugged_jumbo;
	int bugged_jumbo;
	int pmt;
	int pmt;
	int force_sf_dma_mode;
	int force_sf_dma_mode;
	int force_thresh_dma_mode;
	int riwt_off;
	int riwt_off;
	void (*fix_mac_speed)(void *priv, unsigned int speed);
	void (*fix_mac_speed)(void *priv, unsigned int speed);
	void (*bus_setup)(void __iomem *ioaddr);
	void (*bus_setup)(void __iomem *ioaddr);