[U-Boot] [PATCH]: net: Wrong Initialization in davinci-emac driver

Vishwas Srivastava vishu.kernel at gmail.com
Mon Jan 25 18:00:06 CET 2016


Author: Vishwas Srivastava <vishu.kernel at gmail.com>
Date:   Mon Jan 25 21:28:17 2016 +0530

    Wrong Initialization in davinci emac driver

    emac module of the davinci platform supports only 8 tx and
    8 rx channels (total 16). emac driver for davinci platform,
    however, while doing initialization of the dma descriptor
    head pointers,wrongly initializes the 16 head pointers
    (instead of  8) for tx dma and 16 head pointers for rx dma,
    which is wrong.The result is, that this register initilization
    spills over the other registers which was not intended and is
    undesirable.This patch fixes this problem.

    Signed-off-by: Vishwas Srivastava <vishu.kernel at gmail.com>
    CC: Sergey Kubushyn <ksi at koi8.net>;Joe Hershberger <
joe.hershberger at ni.com>
    Signed-off-by: Vishwas Srivastava <vishu.kernel at gmail.com>

diff --git a/drivers/net/davinci_emac.c b/drivers/net/davinci_emac.c
index 92c3dca..3f54a3f 100644
--- a/drivers/net/davinci_emac.c
+++ b/drivers/net/davinci_emac.c
@@ -459,11 +459,11 @@ static int davinci_eth_open(struct eth_device *dev,
bd_t *bis)

        /* Set DMA 8 TX / 8 RX Head pointers to 0 */
        addr = &adap_emac->TX0HDP;
-       for(cnt = 0; cnt < 16; cnt++)
+       for(cnt = 0; cnt < 8; cnt++)
                writel(0, addr++);

        addr = &adap_emac->RX0HDP;
-       for(cnt = 0; cnt < 16; cnt++)
+       for(cnt = 0; cnt < 8; cnt++)
                writel(0, addr++);

        /* Clear Statistics (do this before setting MacControl register) */


More information about the U-Boot mailing list