[U-Boot] [PATCH] ppc4xx: Fix problem with board_eth_init() vs cpu_eth_init() on AMCC boards
Stefan Roese
sr at denx.de
Wed Feb 11 13:52:04 CET 2009
On Wednesday 11 February 2009, Wolfgang Denk wrote:
> > +++ b/board/amcc/katmai/katmai.c
> > @@ -451,5 +451,11 @@ int post_hotkeys_pressed(void)
> >
> > int board_eth_init(bd_t *bis)
> > {
> > - return pci_eth_init(bis);
> > + cpu_eth_init(bis);
> > + pci_eth_init(bis);
> > +
> > + /*
> > + * Return 0 so that cpu_eth_init() won't get executed again
> > + */
> > + return 0;
>
> What happens in case of errors? This looks broken to me, or I
> misinderstand the comment.
This is the code calling board_eth_init() from net/eth.c:
/* Try board-specific initialization first. If it fails or isn't
* present, try the cpu-specific initialization */
if (board_eth_init(bis) < 0)
cpu_eth_init(bis);
So if we return with an error in board_eth_init(), cpu_eth_init() will get
called again. Another way to fix this problem would be this implementation:
board_eth_init()
{
pci_eth_init(bis);
/*
* Return -1 so that cpu_eth_init() will get executed in net/eth.c
*/
return -1;
}
But I like the former implementation better, since the cpu internal ethernet
interfaces are added first to the network devices list.
Best regards,
Stefan
=====================================================================
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: office at denx.de
=====================================================================
More information about the U-Boot
mailing list