Hi all, We have a custom board that has been running on the v3.0 kernel for a while. Since that kernel version is deprecated we are working on upgrading to the 3.10 kernel (some products are 3.10-ltsi so trying to be common). Everything is now working except the USB gadget support. This is a Freescale MPC8308 based board. Our device tree entry is: usb@23000 { compatible = "fsl-usb2-dr"; reg = <0x23000 0x1000>; #address-cells = <1>; #size-cells = <0>; interrupt-parent = <&ipic>; interrupts = <38 0x8>; dr_mode = "peripheral"; phy_type = "ulpi"; }; In 3.0, the dmesg shows: ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver Initializing USB Mass Storage driver... usbcore: registered new interface driver usb-storage USB Mass Storage support registered. Freescale High-Speed USB SOC Device Controller driver (Apr 20, 2007) g_ether gadget: using random self ethernet address g_ether gadget: using random host ethernet address usb0: MAC fa:75:de:cd:cc:80 usb0: HOST MAC f6:64:f6:b4:6b:23 g_ether gadget: Ethernet Gadget, version: Memorial Day 2008 g_ether gadget: g_ether ready fsl-usb2-udc: bind to driver g_ether But in 3.10 I was only getting the base ECHI driver line. After some debugging I found fsl_udc_probe wasn't getting called. I made the following change: diff -Naurp linux_kernel.orig/drivers/usb/gadget/fsl_udc_core.c linux_kernel/drivers/usb/gadget/fsl_udc_core.c --- linux_kernel.orig/drivers/usb/gadget/fsl_udc_core.c 2014-06-17 11:23:57.008453643 -0700 +++ linux_kernel/drivers/usb/gadget/fsl_udc_core.c 2014-06-17 11:25:45.881727426 -0700 @@ -2661,7 +2661,7 @@ MODULE_DEVICE_TABLE(platform, fsl_udc_de static struct platform_driver udc_driver = { .remove = __exit_p(fsl_udc_remove), /* Just for FSL i.mx SoC currently */ - .id_table = fsl_udc_devtype, + /* .id_table = fsl_udc_devtype, */ /* these suspend and resume are not usb suspend and resume */ .suspend = fsl_udc_suspend, .resume = fsl_udc_resume, And now on boot I get: ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver usbcore: registered new interface driver usb-storage g_ether gadget: using random self ethernet address usb0: MAC c6:62:4c:03:81:9a usb0: HOST MAC 00:11:22:33:44:55 g_ether gadget: Ethernet Gadget, version: Memorial Day 2008 g_ether gadget: g_ether ready i2c /dev entries driver But plugging the cable in results in nothing. The host computer doesn't see anything via lsusb or dmesg, nor does the 8308 usb "client" computer. It is like the cable isn't connected. In an effort to figure out what broke I bisected the kernel down to: eb65796ef161f1b2f959a6ab4b818976054b235d [PATCH] usb: gadget: fsl_udc_core: convert to udc_start/udc_stop Unfortunately this patch just switches us over to the new interface and isn't really revertible as the old interface doesn't exist. In a futile attempt to make it work, I grabbed the 3.15 fsl_udc_core.c, remarked the calls to usb_ep-set_maxpacket_limit, and booted that. I got: ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver usbcore: registered new interface driver usb-storage g_ether gadget: using random self ethernet address usb0: MAC d6:bc:72:e8:87:a1 usb0: HOST MAC 00:11:22:33:44:55 g_ether gadget: rndis: can't bind, err -19 g_ether fsl-usb2-udc.0: failed to start g_ether: -19 I know crossing over kernel versions like that is dangerous so I am not sure if I am getting to the garbage in/garbage out stage yet. What can I do to get the USB Ethernet Gadget functionality working again? Thoughts or directions would be appreciated. Thanks, Barry -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html