bcm63xx_enet: do not write to random DMA channel on BCM6345
authorJonas Gorski <jonas.gorski@gmail.com>
Sun, 1 Oct 2017 11:02:16 +0000 (13:02 +0200)
committerDavid S. Miller <davem@davemloft.net>
Mon, 2 Oct 2017 06:05:10 +0000 (23:05 -0700)
The DMA controller regs actually point to DMA channel 0, so the write to
ENETDMA_CFG_REG will actually modify a random DMA channel.

Since DMA controller registers do not exist on BCM6345, guard the write
with the usual check for dma_has_sram.

Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/broadcom/bcm63xx_enet.c

index a45ec97b5b1e8808a72903edb05a2726ce0b76d4..a1e1e12e187a506c86c8b529e7df473b7483e5c8 100644 (file)
@@ -1062,7 +1062,8 @@ static int bcm_enet_open(struct net_device *dev)
        val = enet_readl(priv, ENET_CTL_REG);
        val |= ENET_CTL_ENABLE_MASK;
        enet_writel(priv, val, ENET_CTL_REG);
-       enet_dma_writel(priv, ENETDMA_CFG_EN_MASK, ENETDMA_CFG_REG);
+       if (priv->dma_has_sram)
+               enet_dma_writel(priv, ENETDMA_CFG_EN_MASK, ENETDMA_CFG_REG);
        enet_dmac_writel(priv, priv->dma_chan_en_mask,
                         ENETDMAC_CHANCFG, priv->rx_chan);