diff mbox series

[3/7] net: stmmac: dma channel control register need to be init first

Message ID 1556126241-2774-4-git-send-email-weifeng.voon@intel.com
State Changes Requested
Delegated to: David Miller
Headers show
Series net: stmmac: enable EHL SGMII | expand

Commit Message

Voon, Weifeng April 24, 2019, 5:17 p.m. UTC
stmmac_init_chan() needs to be called before stmmac_init_rx_chan() and
stmmac_init_tx_chan(). This is because if PBLx8 is to be used,
"DMA_CH(#i)_Control.PBLx8" needs to be set before programming
"DMA_CH(#i)_TX_Control.TxPBL" and "DMA_CH(#i)_RX_Control.RxPBL".

Reviewed-by: Zhang, Baoli <baoli.zhang@intel.com>
Signed-off-by: Weifeng Voon <weifeng.voon@intel.com>
Signed-off-by: Ong Boon Leong <boon.leong.ong@intel.com>
---
 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

Comments

Voon, Weifeng April 25, 2019, 7:06 a.m. UTC | #1
> stmmac_init_chan() needs to be called before stmmac_init_rx_chan() and
> stmmac_init_tx_chan(). This is because if PBLx8 is to be used,
> "DMA_CH(#i)_Control.PBLx8" needs to be set before programming
> "DMA_CH(#i)_TX_Control.TxPBL" and "DMA_CH(#i)_RX_Control.RxPBL".
> 
> Reviewed-by: Zhang, Baoli <baoli.zhang@intel.com>
> Signed-off-by: Weifeng Voon <weifeng.voon@intel.com>
> Signed-off-by: Ong Boon Leong <boon.leong.ong@intel.com>
> ---
>  drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> index a26e36d..ec031e3 100644
> --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> @@ -2208,6 +2208,10 @@ static int stmmac_init_dma_engine(struct
> stmmac_priv *priv)
>  	if (priv->plat->axi)
>  		stmmac_axi(priv, priv->ioaddr, priv->plat->axi);
> 
> +	/* DMA CSR Channel configuration */
> +	for (chan = 0; chan < dma_csr_ch; chan++)
> +		stmmac_init_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
> chan);
> +
>  	/* DMA RX Channel Configuration */
>  	for (chan = 0; chan < rx_channels_count; chan++) {
>  		rx_q = &priv->rx_queue[chan];
> @@ -2233,10 +2237,6 @@ static int stmmac_init_dma_engine(struct
> stmmac_priv *priv)
>  				       tx_q->tx_tail_addr, chan);
>  	}
> 
> -	/* DMA CSR Channel configuration */
> -	for (chan = 0; chan < dma_csr_ch; chan++)
> -		stmmac_init_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
> chan);
> -
>  	return ret;
>  }
> 
> --
> 1.9.1

++ stmmac maintainers and c45 experts
Jose Abreu April 29, 2019, 10:25 a.m. UTC | #2
From: Voon, Weifeng <weifeng.voon@intel.com>
Date: Thu, Apr 25, 2019 at 08:06:08

> > stmmac_init_chan() needs to be called before stmmac_init_rx_chan() and
> > stmmac_init_tx_chan(). This is because if PBLx8 is to be used,
> > "DMA_CH(#i)_Control.PBLx8" needs to be set before programming
> > "DMA_CH(#i)_TX_Control.TxPBL" and "DMA_CH(#i)_RX_Control.RxPBL".
> > 
> > Reviewed-by: Zhang, Baoli <baoli.zhang@intel.com>
> > Signed-off-by: Weifeng Voon <weifeng.voon@intel.com>
> > Signed-off-by: Ong Boon Leong <boon.leong.ong@intel.com>

This is a fix so it should belong to -net tree and it should have the 
"Fixes: " tag.

Thanks,
Jose Miguel Abreu
Voon, Weifeng April 30, 2019, 2:49 a.m. UTC | #3
> From: Voon, Weifeng <weifeng.voon@intel.com>
> Date: Thu, Apr 25, 2019 at 08:06:08
> 
> > > stmmac_init_chan() needs to be called before stmmac_init_rx_chan()
> > > and stmmac_init_tx_chan(). This is because if PBLx8 is to be used,
> > > "DMA_CH(#i)_Control.PBLx8" needs to be set before programming
> > > "DMA_CH(#i)_TX_Control.TxPBL" and "DMA_CH(#i)_RX_Control.RxPBL".
> > >
> > > Reviewed-by: Zhang, Baoli <baoli.zhang@intel.com>
> > > Signed-off-by: Weifeng Voon <weifeng.voon@intel.com>
> > > Signed-off-by: Ong Boon Leong <boon.leong.ong@intel.com>
> 
> This is a fix so it should belong to -net tree and it should have the
> "Fixes: " tag.
> 
> Thanks,
> Jose Miguel Abreu

Noted. I will add the "Fixes" tag and re-submit to -net tree. 

Regards,
Weifeng
diff mbox series

Patch

diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index a26e36d..ec031e3 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -2208,6 +2208,10 @@  static int stmmac_init_dma_engine(struct stmmac_priv *priv)
 	if (priv->plat->axi)
 		stmmac_axi(priv, priv->ioaddr, priv->plat->axi);
 
+	/* DMA CSR Channel configuration */
+	for (chan = 0; chan < dma_csr_ch; chan++)
+		stmmac_init_chan(priv, priv->ioaddr, priv->plat->dma_cfg, chan);
+
 	/* DMA RX Channel Configuration */
 	for (chan = 0; chan < rx_channels_count; chan++) {
 		rx_q = &priv->rx_queue[chan];
@@ -2233,10 +2237,6 @@  static int stmmac_init_dma_engine(struct stmmac_priv *priv)
 				       tx_q->tx_tail_addr, chan);
 	}
 
-	/* DMA CSR Channel configuration */
-	for (chan = 0; chan < dma_csr_ch; chan++)
-		stmmac_init_chan(priv, priv->ioaddr, priv->plat->dma_cfg, chan);
-
 	return ret;
 }