fsl_udc_core not initializing properly?

Anatolij Gustschin agust at denx.de
Sat Feb 19 19:52:53 EST 2011


On Fri, 18 Feb 2011 17:03:12 -0500
"Matthew L. Creech" <mlcreech at gmail.com> wrote:
> I'm upgrading from 2.6.36 to 2.6.37 on a MPC8313 ERDB-like board.  On
> the new kernel, it seems like the USB gadget driver (fsl_usb2_udc) is
> never initialized, so USB no longer works.
> Adding some printks to the code shows that udc_init() is being run,
> which calls platform_driver_probe().  However, fsl_udc_probe() is
> never actually called afterward.  As a result, 'udc_controller' is
> left NULL, and the subsequent call to usb_gadget_probe_driver()
> returns -ENODEV.

Look at the USB node in the device tree for your board. Does it
contain the "dr_mode" property? For USB gadget the value of this
property should be "peripheral".
The device tree for MPC8313 ERDB in mainline tree doesn't specify
this property, so the host mode is the default operation mode here.
Therefore the platform device "fsl-usb2-udc" won't be created
while booting and since there is no appropriate platform device,
the probing is not done. This might be the case on your board,
too. Try with dr_mode = "peripheral"; in the usb node in your
device tree.


More information about the Linuxppc-dev mailing list