[bisected][regression] USB Ethernet Gadget Support - Freescale 8308

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux