Merge branch 'master' of git://git.denx.de/u-boot-usb
[oweals/u-boot.git] / drivers / net / uli526x.c
index 9477851a75e0d3253055654ac26af36bca117504..a4624e1734df9977fe210eb57e13dcf7a6698ad8 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007 Freescale Semiconductor, Inc.
+ * Copyright 2007, 2010 Freescale Semiconductor, Inc.
  *
  * Author: Roy Zang <tie-fei.zang@freescale.com>, Sep, 2007
  *
@@ -225,7 +225,12 @@ int uli526x_initialize(bd_t *bis)
                iobase &= ~0xf;
 
                dev = (struct eth_device *)malloc(sizeof *dev);
-               sprintf(dev->name, "uli526x#%d\n", card_number);
+               if (!dev) {
+                       printf("uli526x: Can not allocate memory\n");
+                       break;
+               }
+               memset(dev, 0, sizeof(*dev));
+               sprintf(dev->name, "uli526x#%d", card_number);
                db = (struct uli526x_board_info *)
                        malloc(sizeof(struct uli526x_board_info));
 
@@ -311,7 +316,8 @@ static int uli526x_init_one(struct eth_device *dev, bd_t *bis)
                        i));
 
        /* Set Node address */
-       if (((u16 *) db->srom)[0] == 0xffff || ((u16 *) db->srom)[0] == 0)
+       if (((db->srom[0] == 0xff) && (db->srom[1] == 0xff)) ||
+           ((db->srom[0] == 0x00) && (db->srom[1] == 0x00)))
        /* SROM absent, so write MAC address to ID Table */
                set_mac_addr(dev);
        else {          /*Exist SROM*/