changeset 1759:91e29b9a5d05

Add option for redboot to initialize only one net device
author msalter
date Sun, 19 Sep 2004 17:49:58 +0000
parents 696f7f5b9236
children 0bea3b14aa53
files packages/hal/arm/xscale/grg/current/ChangeLog packages/hal/arm/xscale/grg/current/misc/redboot_RAM.ecm packages/hal/arm/xscale/grg/current/misc/redboot_RAMLE.ecm packages/hal/arm/xscale/grg/current/misc/redboot_ROM.ecm packages/hal/arm/xscale/grg/current/misc/redboot_ROMLE.ecm packages/hal/arm/xscale/ixdp425/current/ChangeLog packages/hal/arm/xscale/ixdp425/current/misc/redboot_RAM.ecm packages/hal/arm/xscale/ixdp425/current/misc/redboot_RAMLE.ecm packages/hal/arm/xscale/ixdp425/current/misc/redboot_ROM.ecm packages/hal/arm/xscale/ixdp425/current/misc/redboot_ROMLE.ecm packages/hal/arm/xscale/ixdp425/current/misc/redboot_ROMRAM.ecm packages/hal/arm/xscale/ixdp425/current/misc/redboot_ROMRAMLE.ecm packages/redboot/current/ChangeLog packages/redboot/current/cdl/redboot.cdl packages/redboot/current/src/net/net_io.c
diffstat 15 files changed, 85 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/packages/hal/arm/xscale/grg/current/ChangeLog
+++ b/packages/hal/arm/xscale/grg/current/ChangeLog
@@ -1,3 +1,10 @@
+2004-09-19  Mark Salter  <msalter@redhat.com>
+
+	* misc/redboot_ROM.ecm: Add CYGSEM_REDBOOT_NETWORK_INIT_ONE_DEVICE.
+	* misc/redboot_RAM.ecm: Ditto.
+	* misc/redboot_ROMLE.ecm: Ditto.
+	* misc/redboot_RAMLE.ecm: Ditto.
+
 2004-09-02  Mark Salter  <msalter@redhat.com>
 
 	* include/hal_platform_extras.h: Removed.
--- a/packages/hal/arm/xscale/grg/current/misc/redboot_RAM.ecm
+++ b/packages/hal/arm/xscale/grg/current/misc/redboot_RAM.ecm
@@ -119,6 +119,10 @@ cdl_option CYGHWR_REDBOOT_LINUX_EXEC_X_S
     user_value 1
 }
  
+cdl_option CYGSEM_REDBOOT_NETWORK_INIT_ONE_DEVICE {
+    user_value 1
+};
+
 cdl_option CYGHWR_HAL_ARM_BIGENDIAN {
     user_value 1
 };
--- a/packages/hal/arm/xscale/grg/current/misc/redboot_RAMLE.ecm
+++ b/packages/hal/arm/xscale/grg/current/misc/redboot_RAMLE.ecm
@@ -119,6 +119,10 @@ cdl_option CYGHWR_REDBOOT_LINUX_EXEC_X_S
     user_value 1
 }
  
+cdl_option CYGSEM_REDBOOT_NETWORK_INIT_ONE_DEVICE {
+    user_value 1
+};
+
 cdl_option CYGHWR_HAL_ARM_BIGENDIAN {
     user_value 0
 };
--- a/packages/hal/arm/xscale/grg/current/misc/redboot_ROM.ecm
+++ b/packages/hal/arm/xscale/grg/current/misc/redboot_ROM.ecm
@@ -127,6 +127,10 @@ cdl_option CYGHWR_REDBOOT_LINUX_EXEC_X_S
     user_value 1
 }
  
+cdl_option CYGSEM_REDBOOT_NETWORK_INIT_ONE_DEVICE {
+    user_value 1
+};
+
 cdl_option CYGHWR_HAL_ARM_BIGENDIAN {
     user_value 1
 };
--- a/packages/hal/arm/xscale/grg/current/misc/redboot_ROMLE.ecm
+++ b/packages/hal/arm/xscale/grg/current/misc/redboot_ROMLE.ecm
@@ -131,6 +131,10 @@ cdl_option CYGHWR_HAL_ARM_BIGENDIAN {
     user_value 0
 };
 
+cdl_option CYGSEM_REDBOOT_NETWORK_INIT_ONE_DEVICE {
+    user_value 1
+};
+
 cdl_option CYGOPT_REDBOOT_FLASH_BYTEORDER {
     user_value MSBFIRST
 }
--- a/packages/hal/arm/xscale/ixdp425/current/ChangeLog
+++ b/packages/hal/arm/xscale/ixdp425/current/ChangeLog
@@ -1,3 +1,12 @@
+2004-09-19  Mark Salter  <msalter@redhat.com>
+
+	* misc/redboot_ROM.ecm: Add CYGSEM_REDBOOT_NETWORK_INIT_ONE_DEVICE.
+	* misc/redboot_RAM.ecm: Ditto.
+	* misc/redboot_ROMRAM.ecm: Ditto.
+	* misc/redboot_ROMLE.ecm: Ditto.
+	* misc/redboot_RAMLE.ecm: Ditto.
+	* misc/redboot_ROMRAMLE.ecm: Ditto.
+
 2004-09-07  Mark Salter  <msalter@redhat.com>
 
 	* misc/redboot_ROM.ecm (CYGBLD_REDBOOT_MIN_IMAGE_SIZE): Set to 0x80000.
--- a/packages/hal/arm/xscale/ixdp425/current/misc/redboot_RAM.ecm
+++ b/packages/hal/arm/xscale/ixdp425/current/misc/redboot_RAM.ecm
@@ -119,6 +119,10 @@ cdl_option CYGHWR_REDBOOT_LINUX_EXEC_X_S
     user_value 1
 }
  
+cdl_option CYGSEM_REDBOOT_NETWORK_INIT_ONE_DEVICE {
+    user_value 1
+};
+
 cdl_option CYGHWR_HAL_ARM_BIGENDIAN {
     user_value 1
 };
--- a/packages/hal/arm/xscale/ixdp425/current/misc/redboot_RAMLE.ecm
+++ b/packages/hal/arm/xscale/ixdp425/current/misc/redboot_RAMLE.ecm
@@ -119,6 +119,10 @@ cdl_option CYGHWR_REDBOOT_LINUX_EXEC_X_S
     user_value 1
 }
  
+cdl_option CYGSEM_REDBOOT_NETWORK_INIT_ONE_DEVICE {
+    user_value 1
+};
+
 cdl_option CYGHWR_HAL_ARM_BIGENDIAN {
     user_value 0
 };
--- a/packages/hal/arm/xscale/ixdp425/current/misc/redboot_ROM.ecm
+++ b/packages/hal/arm/xscale/ixdp425/current/misc/redboot_ROM.ecm
@@ -127,6 +127,10 @@ cdl_option CYGHWR_REDBOOT_LINUX_EXEC_X_S
     user_value 1
 }
  
+cdl_option CYGSEM_REDBOOT_NETWORK_INIT_ONE_DEVICE {
+    user_value 1
+};
+
 cdl_option CYGHWR_HAL_ARM_BIGENDIAN {
     user_value 1
 };
--- a/packages/hal/arm/xscale/ixdp425/current/misc/redboot_ROMLE.ecm
+++ b/packages/hal/arm/xscale/ixdp425/current/misc/redboot_ROMLE.ecm
@@ -127,6 +127,10 @@ cdl_option CYGHWR_REDBOOT_LINUX_EXEC_X_S
     user_value 1
 }
  
+cdl_option CYGSEM_REDBOOT_NETWORK_INIT_ONE_DEVICE {
+    user_value 1
+};
+
 cdl_option CYGHWR_HAL_ARM_BIGENDIAN {
     user_value 0
 };
--- a/packages/hal/arm/xscale/ixdp425/current/misc/redboot_ROMRAM.ecm
+++ b/packages/hal/arm/xscale/ixdp425/current/misc/redboot_ROMRAM.ecm
@@ -127,6 +127,10 @@ cdl_option CYGHWR_REDBOOT_LINUX_EXEC_X_S
     user_value 1
 }
  
+cdl_option CYGSEM_REDBOOT_NETWORK_INIT_ONE_DEVICE {
+    user_value 1
+};
+
 cdl_option CYGHWR_HAL_ARM_BIGENDIAN {
     user_value 1
 };
--- a/packages/hal/arm/xscale/ixdp425/current/misc/redboot_ROMRAMLE.ecm
+++ b/packages/hal/arm/xscale/ixdp425/current/misc/redboot_ROMRAMLE.ecm
@@ -127,6 +127,10 @@ cdl_option CYGHWR_REDBOOT_LINUX_EXEC_X_S
     user_value 1
 }
  
+cdl_option CYGSEM_REDBOOT_NETWORK_INIT_ONE_DEVICE {
+    user_value 1
+};
+
 cdl_option CYGHWR_HAL_ARM_BIGENDIAN {
     user_value 0
 };
--- a/packages/redboot/current/ChangeLog
+++ b/packages/redboot/current/ChangeLog
@@ -1,3 +1,9 @@
+2004-09-19  Mark Salter  <msalter@redhat.com>
+
+	* cdl/redboot.cdl: Add CYGSEM_REDBOOT_NETWORK_INIT_ONE_DEVICE
+	* src/net/net_io.c (net_init): Initialize only one network
+	device if CYGSEM_REDBOOT_NETWORK_INIT_ONE_DEVICE defined.
+
 2004-09-19  Andrew Lunn  <andrew.lunn@ascom.ch>
 
 	* src/load.c (do_load): Removed compiler warning when building
--- a/packages/redboot/current/cdl/redboot.cdl
+++ b/packages/redboot/current/cdl/redboot.cdl
@@ -483,6 +483,18 @@ cdl_package CYGPKG_REDBOOT {
                     This is the index of the first network device driver that
                     RedBoot will try to initialize."
             }
+
+	    cdl_option CYGSEM_REDBOOT_NETWORK_INIT_ONE_DEVICE {
+                display         "Initialize only one net device"
+                flavor          bool
+                active_if       { CYGHWR_NET_DRIVERS > 1 }
+                default_value   0
+                description     "
+                    This option tells RedBoot to stop initializing network
+		    devices when it finds the first device which is
+                    successfully initialized. The default behavior causes
+                    all network devices to be initialized."
+            }
         }
     
         cdl_option CYGPKG_REDBOOT_ANY_CONSOLE {
--- a/packages/redboot/current/src/net/net_io.c
+++ b/packages/redboot/current/src/net/net_io.c
@@ -8,7 +8,7 @@
 //####ECOSGPLCOPYRIGHTBEGIN####
 // -------------------------------------------
 // This file is part of eCos, the Embedded Configurable Operating System.
-// Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Red Hat, Inc.
+// Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Red Hat, Inc.
 // Copyright (C) 2002, 2003, 2004 Gary Thomas
 //
 // eCos is free software; you can redistribute it and/or modify it under
@@ -724,8 +724,18 @@ net_init(void)
     default_index = net_devindex(default_devname);
     if (default_index < 0)
 	default_index = 0;
+#ifdef CYGSEM_REDBOOT_NETWORK_INIT_ONE_DEVICE
+    if ((t = net_devtab_entry(default_index)) != NULL && t->init(t)) {
+	t->status = CYG_NETDEVTAB_STATUS_AVAIL;
+	primary_net = __local_enet_sc;
+    } else
+#endif
 #endif
     for (index = 0; (t = net_devtab_entry(index)) != NULL; index++) {
+#ifdef CYGSEM_REDBOOT_NETWORK_INIT_ONE_DEVICE
+	if (index == default_index)
+	    continue;
+#endif
 	if (t->init(t)) {
             t->status = CYG_NETDEVTAB_STATUS_AVAIL;
             if (primary_net == (struct eth_drv_sc *)0) {