]> git.sur5r.net Git - u-boot/blobdiff - drivers/net/tsec.c
sunxi-common.h: Remove dead #ifdef CONFIG_CMD_NET code block
[u-boot] / drivers / net / tsec.c
index e354fad21850be997d07b4f8459f7602647dfb56..e9138f03381da8928a41882128d8680f2a7aaa2f 100644 (file)
@@ -166,7 +166,7 @@ static void init_registers(struct tsec __iomem *regs)
        out_be32(&regs->rctrl, 0x00000000);
 
        /* Init RMON mib registers */
-       memset((void *)&(regs->rmon), 0, sizeof(rmon_mib_t));
+       memset((void *)&regs->rmon, 0, sizeof(regs->rmon));
 
        out_be32(&regs->rmon.cam1, 0xffffffff);
        out_be32(&regs->rmon.cam2, 0xffffffff);
@@ -473,11 +473,9 @@ static void tsec_halt(struct eth_device *dev)
  */
 static int tsec_init(struct eth_device *dev, bd_t * bd)
 {
-       uint tempval;
-       char tmpbuf[MAC_ADDR_LEN];
-       int i;
        struct tsec_private *priv = (struct tsec_private *)dev->priv;
        struct tsec __iomem *regs = priv->regs;
+       u32 tempval;
        int ret;
 
        /* Make sure the controller is stopped */
@@ -490,16 +488,16 @@ static int tsec_init(struct eth_device *dev, bd_t * bd)
        out_be32(&regs->ecntrl, ECNTRL_INIT_SETTINGS);
 
        /* Copy the station address into the address registers.
-        * Backwards, because little endian MACS are dumb */
-       for (i = 0; i < MAC_ADDR_LEN; i++)
-               tmpbuf[MAC_ADDR_LEN - 1 - i] = dev->enetaddr[i];
-
-       tempval = (tmpbuf[0] << 24) | (tmpbuf[1] << 16) | (tmpbuf[2] << 8) |
-                 tmpbuf[3];
+        * For a station address of 0x12345678ABCD in transmission
+        * order (BE), MACnADDR1 is set to 0xCDAB7856 and
+        * MACnADDR2 is set to 0x34120000.
+        */
+       tempval = (dev->enetaddr[5] << 24) | (dev->enetaddr[4] << 16) |
+                 (dev->enetaddr[3] << 8)  |  dev->enetaddr[2];
 
        out_be32(&regs->macstnaddr1, tempval);
 
-       tempval = *((uint *) (tmpbuf + 4));
+       tempval = (dev->enetaddr[1] << 24) | (dev->enetaddr[0] << 16);
 
        out_be32(&regs->macstnaddr2, tempval);