mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
net: stmmac: move stmmac_axi_blen_to_mask() to stmmac_main.c
Move the call to stmmac_axi_blen_to_mask() out of the individual MAC version drivers into the main code in stmmac_init_dma_engine(), passing the resulting value through a new member, axi_blen_regval, in the struct stmmac_axi structure. There is now no need for stmmac_axi_blen_to_dma_mask() to use u32p_replace_bits(), so use FIELD_PREP() instead. Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk> Link: https://patch.msgid.link/E1vLfLW-0000000FMb1-0zKV@rmk-PC.armlinux.org.uk Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
committed by
Jakub Kicinski
parent
2704af20c8
commit
6ff3310ca2
@@ -41,8 +41,7 @@ static void dwmac1000_dma_axi(void __iomem *ioaddr, struct stmmac_axi *axi)
|
||||
* set). Note that the UNDEF bit is readonly, and is the inverse of
|
||||
* Bus Mode bit 16.
|
||||
*/
|
||||
stmmac_axi_blen_to_mask(&value, axi->axi_blen,
|
||||
ARRAY_SIZE(axi->axi_blen));
|
||||
value = (value & ~DMA_AXI_BLEN_MASK) | axi->axi_blen_regval;
|
||||
|
||||
writel(value, ioaddr + DMA_AXI_BUS_MODE);
|
||||
}
|
||||
|
||||
@@ -40,8 +40,7 @@ static void dwmac4_dma_axi(void __iomem *ioaddr, struct stmmac_axi *axi)
|
||||
* set). Note that the UNDEF bit is readonly, and is the inverse of
|
||||
* Bus Mode bit 16.
|
||||
*/
|
||||
stmmac_axi_blen_to_mask(&value, axi->axi_blen,
|
||||
ARRAY_SIZE(axi->axi_blen));
|
||||
value = (value & ~DMA_AXI_BLEN_MASK) | axi->axi_blen_regval;
|
||||
|
||||
writel(value, ioaddr + DMA_SYS_BUS_MODE);
|
||||
}
|
||||
|
||||
@@ -106,8 +106,7 @@ static void dwxgmac2_dma_axi(void __iomem *ioaddr, struct stmmac_axi *axi)
|
||||
* set). Note that the UNDEF bit is readonly, and is the inverse of
|
||||
* Bus Mode bit 16.
|
||||
*/
|
||||
stmmac_axi_blen_to_mask(&value, axi->axi_blen,
|
||||
ARRAY_SIZE(axi->axi_blen));
|
||||
value = (value & ~DMA_AXI_BLEN_MASK) | axi->axi_blen_regval;
|
||||
|
||||
writel(value, ioaddr + XGMAC_DMA_SYSBUS_MODE);
|
||||
writel(XGMAC_TDPS, ioaddr + XGMAC_TX_EDMA_CTRL);
|
||||
|
||||
@@ -223,7 +223,7 @@ void stmmac_axi_blen_to_mask(u32 *regval, const u32 *blen, size_t len)
|
||||
val |= burst >> 2;
|
||||
}
|
||||
|
||||
u32p_replace_bits(regval, val, DMA_AXI_BLEN_MASK);
|
||||
*regval = FIELD_PREP(DMA_AXI_BLEN_MASK, val);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -3212,8 +3212,12 @@ static int stmmac_init_dma_engine(struct stmmac_priv *priv)
|
||||
/* DMA Configuration */
|
||||
stmmac_dma_init(priv, priv->ioaddr, priv->plat->dma_cfg);
|
||||
|
||||
if (priv->plat->axi)
|
||||
if (priv->plat->axi) {
|
||||
/* Encode the AXI burst length to a register value */
|
||||
stmmac_axi_blen_to_mask(&priv->plat->axi->axi_blen_regval,
|
||||
priv->plat->axi->axi_blen, AXI_BLEN);
|
||||
stmmac_axi(priv, priv->ioaddr, priv->plat->axi);
|
||||
}
|
||||
|
||||
/* DMA CSR Channel configuration */
|
||||
for (chan = 0; chan < dma_csr_ch; chan++) {
|
||||
|
||||
@@ -113,6 +113,7 @@ struct stmmac_axi {
|
||||
u32 axi_wr_osr_lmt;
|
||||
u32 axi_rd_osr_lmt;
|
||||
bool axi_kbbe;
|
||||
u32 axi_blen_regval;
|
||||
u32 axi_blen[AXI_BLEN];
|
||||
bool axi_fb;
|
||||
bool axi_mb;
|
||||
|
||||
Reference in New Issue
Block a user