Bläddra i källkod

Fix problem in ppc4xx eth-driver without ethaddr (only without
CONFIG_NET_MULTI set)
Patch by Stefan Roese, 10 Oct 2005

Stefan Roese 19 år sedan
förälder
incheckning
4f92ac3648
2 ändrade filer med 14 tillägg och 4 borttagningar
  1. 4 0
      CHANGELOG
  2. 10 4
      cpu/ppc4xx/4xx_enet.c

+ 4 - 0
CHANGELOG

@@ -2,6 +2,10 @@
 Changes for U-Boot 1.1.4:
 Changes for U-Boot 1.1.4:
 ======================================================================
 ======================================================================
 
 
+* Fix problem in ppc4xx eth-driver without ethaddr (only without
+  CONFIG_NET_MULTI set)
+  Patch by Stefan Roese, 10 Oct 2005
+
 * Fix gzip bmp support (test if malloc fails, warning when truncated).
 * Fix gzip bmp support (test if malloc fails, warning when truncated).
   Increase CFG_VIDEO_LOGO_MAX_SIZE on HH405 board.
   Increase CFG_VIDEO_LOGO_MAX_SIZE on HH405 board.
   Patch by Stefan Roese, 07 Oct 2005
   Patch by Stefan Roese, 07 Oct 2005

+ 10 - 4
cpu/ppc4xx/4xx_enet.c

@@ -139,7 +139,7 @@
 static uint32_t mal_ier;
 static uint32_t mal_ier;
 
 
 #if !defined(CONFIG_NET_MULTI)
 #if !defined(CONFIG_NET_MULTI)
-struct eth_device *emac0_dev;
+struct eth_device *emac0_dev = NULL;
 #endif
 #endif
 
 
 
 
@@ -306,8 +306,10 @@ static int ppc_4xx_eth_init (struct eth_device *dev, bd_t * bis)
 
 
 	/* before doing anything, figure out if we have a MAC address */
 	/* before doing anything, figure out if we have a MAC address */
 	/* if not, bail */
 	/* if not, bail */
-	if (memcmp (dev->enetaddr, "\0\0\0\0\0\0", 6) == 0)
+	if (memcmp (dev->enetaddr, "\0\0\0\0\0\0", 6) == 0) {
+		printf("ERROR: ethaddr not set!\n");
 		return -1;
 		return -1;
+	}
 
 
 #if defined(CONFIG_440GX)
 #if defined(CONFIG_440GX)
 	/* Need to get the OPB frequency so we can access the PHY */
 	/* Need to get the OPB frequency so we can access the PHY */
@@ -1486,12 +1488,16 @@ void eth_halt (void) {
 int eth_init (bd_t *bis)
 int eth_init (bd_t *bis)
 {
 {
 	ppc_4xx_eth_initialize(bis);
 	ppc_4xx_eth_initialize(bis);
-	return(ppc_4xx_eth_init(emac0_dev, bis));
+	if (emac0_dev) {
+		return ppc_4xx_eth_init(emac0_dev, bis);
+	} else {
+		printf("ERROR: ethaddr not set!\n");
+		return -1;
+	}
 }
 }
 
 
 int eth_send(volatile void *packet, int length)
 int eth_send(volatile void *packet, int length)
 {
 {
-
 	return (ppc_4xx_eth_send(emac0_dev, packet, length));
 	return (ppc_4xx_eth_send(emac0_dev, packet, length));
 }
 }