[U-Boot] U-Boot on PXA320
Ben Warren
biggerbadderben at gmail.com
Thu Dec 24 19:10:33 CET 2009
Hello Dennis,
Sending the e-mail once is enough.
Dennis Semakin wrote:
> Hello everybody.
> I have a question about u-boot net subsystem on Toradex Colibri PXA320.
> Let's see on lib_arm/board.c file
> Here is code where network subsystem initializes (At least I think so)
> ..
> #if defined(CONFIG_CMD_NET)
> #if defined(CONFIG_NET_MULTI)
> puts ("Net: ");
> #endif
> eth_initialize(gd->bd);
> #if defined(CONFIG_RESET_PHY_R)
> debug ("Reset Ethernet PHY\n");
> reset_phy();
> #endif
> #endif
> /* main_loop() can return to retry autoboot, if so just run it again. */
> for (;;) {
> main_loop ();
> }
> ..
> I'm interested of eth_initialize(gd->bd) function.
> If I compile without CONFIG_NET_MULTI option the implementation of this function is
> (in net/eth.c file)
> ..
> #elif defined(CONFIG_CMD_NET) && !defined(CONFIG_NET_MULTI)
>
> #warning Ethernet driver is deprecated. Please update to use CONFIG_NET_MULTI
>
> extern int at91rm9200_miiphy_initialize(bd_t *bis);
> extern int mcf52x2_miiphy_initialize(bd_t *bis);
> extern int ns7520_miiphy_initialize(bd_t *bis);
>
> int eth_initialize(bd_t *bis)
> {
> #if defined(CONFIG_MII) || defined(CONFIG_CMD_MII)
> miiphy_init();
> #endif
>
> #if defined(CONFIG_AT91RM9200)
> at91rm9200_miiphy_initialize(bis);
> #endif
> #if defined(CONFIG_MCF52x2)
> mcf52x2_miiphy_initialize(bis);
> #endif
> #if defined(CONFIG_DRIVER_NS7520_ETHERNET)
> ns7520_miiphy_initialize(bis);
> #endif
> return 0;
> }
> #endif
> Then as result, my network subsystem is hang when I run someone net command(e.g. ping)
> And if I compile with CONFIG_NET_MULTI option the implementation of this function is
> ..
> int eth_initialize(bd_t *bis)
> {
> unsigned char env_enetaddr[6];
> int eth_number = 0;
>
> eth_devices = NULL;
> eth_current = NULL;
> show_boot_progress (64);
> #if defined(CONFIG_MII) || defined(CONFIG_CMD_MII)
> miiphy_init();
> #endif
> /* 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);
>
> #if defined(CONFIG_DB64360) || defined(CONFIG_CPCI750)
> mv6436x_eth_initialize(bis);
> #endif
> #if defined(CONFIG_DB64460) || defined(CONFIG_P3Mx)
> mv6446x_eth_initialize(bis);
> #endif
> if (!eth_devices) {
> puts ("No ethernet found.\n");
> show_boot_progress (-64);
> } else {
> ..
> And then I get message "No ethernet found..."
>
> Questions: where is net subsystem initialization code for Colibri PXA320 board in u-boot?
>
Maybe I'm not looking in the right place, but I can't find this board in
the source tree. The closest I can find is a machine type definition
for MACH_TYPE_COLIBRI, but no boards have CONFIG_MACH_COLIBRI set.
Without the source code, there's only so much help we can give you.
> Where and how the structure eth_device is fill for that board? Or it don't need?
>
I have no idea what Ethernet controller is on this board, but judging
from your debug trace, whatever it is, it uses the old API (non
CONFIG_NET_MULTI), and either the driver or your board is broken or not
configured properly.
A bit of background: there are two network device drivers: the old one,
which only supports one interface per board; and the new one
(CONFIG_NET_MULTI), which supports one or more interfaces. Over time,
we're converting all drivers to use the new API, but this takes effort
and obviously hardware that is out-of-tree won't be updated. As the
#warning tells you, the old API is going away soon.
> Thanks
> Best regard
> Dennis Semakin
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
>
regards,
Ben
More information about the U-Boot
mailing list