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

From: Voon, Weifeng
Date: Thu Apr 25 2019 - 03:06:18 EST


> 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@xxxxxxxxx>
> Signed-off-by: Weifeng Voon <weifeng.voon@xxxxxxxxx>
> Signed-off-by: Ong Boon Leong <boon.leong.ong@xxxxxxxxx>
> ---
> 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