
Dear Gary Jennejohn,
In message 20080914164530.0a59c6ca@peedub.jennejohn.org you wrote:
Since this patch touches net/eth.c it is being sent separately.
When CONFIG_IO_MUX, CONFIG_NETCONSOLE and CFG_CONSOLE_IS_IN_ENV are all defined together it is possible that nc (netconsole) is defined as an output device. In this case it is necessary to set GD_FLG_DEVINIT after the network devices have been initialized, otherwise u-boot might try to send output to a device before it is ready, which leads to various errors.
I don't understand this patch for two reasons:
1) What has CONFIG_IO_MUX to do with that? We can have a netconsole defined with or without that new feature, so why would it make any difference?
Signed-off-by: Gary Jennejohn garyj@denx.de
net/eth.c | 24 ++++++++++++++++++++++++ 1 files changed, 24 insertions(+), 0 deletions(-)
diff --git a/net/eth.c b/net/eth.c index 432dd60..94b6e3a 100644 --- a/net/eth.c +++ b/net/eth.c @@ -26,6 +26,11 @@ #include <net.h> #include <miiphy.h>
+#if defined(CONFIG_IO_MUX) && defined(CONFIG_NETCONSOLE) && \
- defined(CFG_CONSOLE_IS_IN_ENV)
+DECLARE_GLOBAL_DATA_PTR; +#endif
#if defined(CONFIG_CMD_NET) && defined(CONFIG_NET_MULTI)
/* @@ -256,6 +261,15 @@ int eth_initialize(bd_t *bis) putc ('\n'); }
+#if defined(CONFIG_IO_MUX) && defined(CONFIG_NETCONSOLE) && \
- defined(CFG_CONSOLE_IS_IN_ENV)
- /*
* Must do this very late because a network device may be set as a
* console at boot time.
*/
- gd->flags |= GD_FLG_DEVINIT; /* device initialization completed */
+#endif
- return eth_number;
}
@@ -532,6 +546,16 @@ int eth_initialize(bd_t *bis) #if defined(CONFIG_DRIVER_TI_EMAC) davinci_eth_miiphy_initialize(bis); #endif
+#if defined(CONFIG_IO_MUX) && defined(CONFIG_NETCONSOLE) && \
- defined(CFG_CONSOLE_IS_IN_ENV)
- /*
* Must do this very late because a network device may be set as a
* console at boot time.
*/
- gd->flags |= GD_FLG_DEVINIT; /* device initialization completed */
+#endif
2) You only add new points where the GD_FLG_DEVINIT bit gets set in gd->flags. That means there are two possibilities when your newly added code is run: either, this bit is already set by other parts of the codem than the operation was redundant and couldbe omitted; or, the flasg was not set yet, then you set it now, which means you set it EARLIE than it would have been set before.
But your comment suggests that that would be done LATER now.
So what exactly is the purpose of this patch?
Best regards,
Wolfgang Denk