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: off...@denx.de
=====================================================================
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to