On 2/28/2024 8:17 AM, Robert Arndt wrote:
Hi Folks, I was wondering if anyone has gotten UVC working on the RB5?
I'm having trouble with the UDC probe and not sure if it's a problem
with kernel configuration, configFS script (haven't made into a service
yet), or some UDC problem.
I'm getting a ENODEV error 19 when I try to bind my UVC configuration to
the UDC according to dmesg, and stdin output says "Device or resource
busy". I put printk statements into driver/usb/udc/core.c's
usb_gadget_probe_driver() which is producing the error line:
>>
mutex_lock(&udc_lock);
if (driver->udc_name) {
list_for_each_entry(udc, &udc_list, list) {
ret = strcmp(driver->udc_name,
dev_name(&udc->dev));
printk("****DEBUG: Driver->udc_name: %s\n",
driver->udc_name);
printk("****DEBUG: udc->dev name: %s\n",
&udc->dev);
if (!ret)
break;
}
if (ret)
ret = -ENODEV;
else if (udc->driver)
ret = -EBUSY;
else
goto found;
<<
...and while udc_name came up with the string a600000.usb, &udc->dev was
an empty string. So it seems like the device is not in the master UDC
list? I don't know why...maybe my ConfigFS script is wrong?
I've attached my kernel config, ConfigFS script, and dmesg output as a
single file. Would appreciate if someone could tell me if I'm looking
in the right direction or completely off.
Hi Robert,
Can you check if dwc3 driver probe was successful or if it was
deferred for the a600000.usb controller. And seems like you are printing
&udc->dev instead of dev_name(&udc->dev).
Also the symlink being created must be the following:
ln -s functions/uvc.usb0 configs/c.1/f1
You are directly linking it to c.1 in your script like the following
which is wrong:
ln -s functions/uvc.usb0 configs/c.1
Can you check if fixing the symlink is helping with successful
enumeration.
Regards,
Krishna,