Hello there Greetings.
Kernel:3.10.9
Board: i.MX6 Solo based custom board.
Step 1: load the mass storage driver
insmod g_mass_storage.ko file=/dev/mtdblock5
calling msg_init+0x0/0x1c [g_mass_storage] @ 381
initcall msg_init+0x0/0x1c [g_mass_storage] returned -19 after 1549 usecs
insmod: can't insert 'g_mass_storage.ko': No such device
Step 2: dmesg
calling msg_init+0x0/0x1c [g_mass_storage] @ 388
couldn't find an available UDC
initcall msg_init+0x0/0x1c [g_mass_storage] returned -19 after 1606 usecs
calling msg_init+0x0/0x1c [g_mass_storage] @ 389
couldn't find an available UDC
initcall msg_init+0x0/0x1c [g_mass_storage] returned -19 after 1570 usecs
I am stuck with this error. Appreciate any pointers ...
Regards,
Krishnan.
Solved! Go to Solution.
Dear Eric,
Thanks for the suggestions. It was a problem with UDC controller driver. I have enabled chip idea hdr controller driver in kernel
Now the g_mass_storage works fine
root@imx6qsabrelite:/# insmod g_mass_storage.ko file=/dev/mtdblock5
calling msg_init+0x0/0x1c [g_mass_storage] @ 421
g_mass_storage gadget: Mass Storage Function, version: 2009/09/11
g_mass_storage gadget: Number of LUNs=1
lun0: LUN: file: /dev/mtdblock5
g_mass_storage gadget: Mass Storage Gadget, version: 2009/09/11
g_mass_storage gadget: userspace failed to provide iSerialNumber
g_mass_storage gadget: g_mass_storage ready
initcall msg_init+0x0/0x1c [g_mass_storage] returned 0 after 30566 usecs
root@imx6qsabrelite:/# g_mass_storage gadget: high-speed config #1: Linux File-Backed Storage
root@imx6qsabrelite:/# g_mass_storage gadget: high-speed config #1: Linux File-Backed Storage
It looks like I have some problem in VBUS configuration. Th USB_OTG_ID pad was left unconnected on the board.
In the dts file i have added below code to enable OTG support.
&usbotg {
vbus-supply = <®_usb_otg_vbus>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_usbotg_1>;
disable-over-current;
status = "okay";
};
One more experiment done was compiling g_mass_storage driver statically. But at this time I am not able change the file paramter.
In kernel configuration i have selected below options.
under USB Peripheral Controller
<*> Freescale Highspeed USB DR Peripheral Controller
I have added some debug prints in drivers/usb/gadget/udc-core.c where the probe is happening. It says probe could not find USB device controller driver.
I am little lost how to proceed. Any pointers/help will be much appreciated.
Thanks in advance
Krishnan
Any pointers?
Hi Krishnan,
This may be an issue with the pad configurations for Solo.
We didn't have support for Dual-Lite/Solo in our 3.10.9 release, but USB OTG was supported on i.MX6Q:
http://boundarydevices.com/imx6-linux-kernel-3-10-9/
We have recently tested on 3.10.17, notably on our Nitrogen6_Lite board:
http://boundarydevices.com/mx6-linux-kernel-3-10-17-beta/
You can compare your configuration against nit6xlite_defconfig and your DTS files against
imx6dl-nit6xlite.dts in in this tree:
We tested using g_ether, not g_mass_storage, but the detection and registration
should be the same.
Hello Eric,
I try to establish 1 HID and 1 mass storage at same time.
I already have enabled "ChipIdea Highspeed Dual Role Controller", HID and mass storage features in kernel(menuconfig). But I get an error message "udc-core: couldn't find an available UDC - added [g_mass_storage] to list of pending drivers".
I try to modified core.c but it's not work. I have trawled through many articles with no luck. Does it have efficient way to modify USB descriptor for 1 HID and 1 Mass Storage at same time?
(imx6ull14x14evk-poky-linux-gnueabi\linux-imx\4.9.11-r0\git\drivers\usb\gadget\udc\core.c)
Thank you.
Situation 1:
Step 1: insmod g_hid.ko <======= HID is work normally
Step 2: insmod g_mass_storage.ko <====== show error message
udc-core: couldn't find an available UDC - added [g_mass_storage] to list of pending drivers
Situation 2:
Step 1: insmod g_mass_storage.ko <====== mass storage is work normally
Step 2: insmod g_hid.ko <======= show error message
udc-core: couldn't find an available UDC - added [g_hid] to list of pending drivers
Hi,
How did you solved this issue of udc not available.
Hi,
You can not load two gadget drivers simultaneously, for this you need to load them as a composite driver, you can do this through configfs or hardcoded on the legacy drivers.
Regards,
-Marco
Dear Eric,
Thanks for the suggestions. It was a problem with UDC controller driver. I have enabled chip idea hdr controller driver in kernel
Now the g_mass_storage works fine
root@imx6qsabrelite:/# insmod g_mass_storage.ko file=/dev/mtdblock5
calling msg_init+0x0/0x1c [g_mass_storage] @ 421
g_mass_storage gadget: Mass Storage Function, version: 2009/09/11
g_mass_storage gadget: Number of LUNs=1
lun0: LUN: file: /dev/mtdblock5
g_mass_storage gadget: Mass Storage Gadget, version: 2009/09/11
g_mass_storage gadget: userspace failed to provide iSerialNumber
g_mass_storage gadget: g_mass_storage ready
initcall msg_init+0x0/0x1c [g_mass_storage] returned 0 after 30566 usecs
root@imx6qsabrelite:/# g_mass_storage gadget: high-speed config #1: Linux File-Backed Storage
root@imx6qsabrelite:/# g_mass_storage gadget: high-speed config #1: Linux File-Backed Storage