+Joe (Network maintainer) Hi,
On 14 June 2015 at 08:08, Karsten Merker <[email protected]> wrote: > Hello, > > I am trying to build current u-boot master for the (sunxi-based) > MSI_Primo81 target with support for an ASIX AX88772B USB ethernet > adapter. Setting > > CONFIG_SYS_EXTRA_OPTIONS="USB_HOST_ETHER,USB_ETHER_ASIX" > > via make menuconfig results in the following build error: > > [...] > CC common/main.o > CC common/board_f.o > CC common/cmd_version.o > LD common/built-in.o > CC drivers/video/cfb_console.o > LD drivers/video/built-in.o > LD drivers/built-in.o > CC drivers/usb/eth/usb_ether.o > In file included from drivers/usb/eth/usb_ether.c:12:0: > include/usb_ether.h:24:20: error: field 'eth_dev' has incomplete type > struct eth_device eth_dev; /* used with eth_register */ > ^ > drivers/usb/eth/usb_ether.c: In function 'is_eth_dev_on_usb_host': > drivers/usb/eth/usb_ether.c:68:27: warning: initialization from incompatible > pointer type > struct eth_device *dev = eth_get_dev(); > ^ > drivers/usb/eth/usb_ether.c: In function 'probe_valid_drivers': > drivers/usb/eth/usb_ether.c:106:4: warning: implicit declaration of function > 'eth_register' [-Wimplicit-function-declaration] > eth_register(eth); > ^ > drivers/usb/eth/usb_ether.c:107:4: warning: implicit declaration of function > 'eth_write_hwaddr' [-Wimplicit-function-declaration] > if (eth_write_hwaddr(eth, "usbeth", > ^ > drivers/usb/eth/usb_ether.c: In function 'usb_host_eth_scan': > drivers/usb/eth/usb_ether.c:131:3: warning: implicit declaration of function > 'eth_unregister' [-Wimplicit-function-declaration] > eth_unregister(&usb_eth[i].eth_dev); > ^ > scripts/Makefile.build:276: recipe for target 'drivers/usb/eth/usb_ether.o' > failed > make[1]: *** [drivers/usb/eth/usb_ether.o] Error 1 > Makefile:1158: recipe for target 'drivers/usb/eth' failed > make: *** [drivers/usb/eth] Error 2 > > This appears to be a device-model related issue. With the default > configuration, which includes CONFIG_DM_ETH=y, the above error > occurs, but with CONFIG_DM_ETH unset, the build succeeds. The > problem seems to be with the definition of struct eth_device in > include/net.h, which is bracketed by an #ifndef CONFIG_DM_ETH / > #endif (lines 147-214). I know about nothing about how > device-model works in u-boot, so I am stuck here. Simon, could > you perhaps take a look at the issue? Yes, USB Ethernet does not support driver model for Ethernet / CONFIG_DM_ETH yet. It would be great to add this if you'd like to give it a crack. Some hints: - declare a USB_DEVICE() in asix.c with the appropriate vendor/device IDs using usb_device_id (see usb_storage.c for how the storage driver does it). You'll want to take the IDs from asix_dongles[] and use the USB_DEVICE_ID_MATCH_VENDOR and USB_DEVICE_ID_MATCH_PRODUCT flags - add a U_BOOT_DRIVER() in asix.c which defines the start/send/recv/stop methods (see sunxi_emac.c for an example) - don't compile in usb_ether.c if CONFIG_DM_ETH is set (the USB subsystem should automatically scan and find your driver as it does with storage) - skip calling usb_host_eth_scan() from cmd_usb.c if CONFIG_DM_ETH is set - hack up asix.c to remove asix_eth_probe() and asix_eth_get_info() when CONFIG_DM_ETH is set I'm happy to review and test. [snip] Regards, Simon _______________________________________________ U-Boot mailing list [email protected] http://lists.denx.de/mailman/listinfo/u-boot

