Re: [linux-uvc-devel] configfs: uvc and other gadget at the same time
Linux UVC driver and tools
Brought to you by:
pinchartl
From: Gregoire G. <gre...@ge...> - 2022-07-01 05:22:49
|
On 6/27/22 17:31, Gregoire Gentil wrote: > Hello, > > I have UVC gadget over configfs working well alone. I have also acm + > mtp working at the same time. But uvc doesn't work in a uvc + acm > configfs configuration (while acm works in that same configuration). > > uvc alone gives: > > [ 13.544000] dwc2 c0040000.dwc2otg: new device is high-speed > [ 13.624000] dwc2 c0040000.dwc2otg: new device is high-speed > [ 13.696000] dwc2 c0040000.dwc2otg: new address 53 > [ 13.720000] configfs-gadget gadget: high-speed config #1: c > [ 13.720000] configfs-gadget gadget: uvc_function_set_alt(0, 0) > [ 13.720000] configfs-gadget gadget: reset UVC Control > [ 13.720000] configfs-gadget gadget: uvc_function_set_alt(1, 0) > [ 13.720000] configfs-gadget gadget: uvc_function_set_alt(1, 0) > > > while uvc + acm gives: > [ 13.784000] dwc2 c0040000.dwc2otg: new device is high-speed > [ 13.864000] dwc2 c0040000.dwc2otg: new device is high-speed > [ 13.932000] dwc2 c0040000.dwc2otg: new address 55 > [ 13.956000] configfs-gadget gadget: high-speed config #1: c > [ 13.956000] configfs-gadget gadget: uvc_function_set_alt(2, 0) > [ 13.956000] configfs-gadget gadget: reset UVC Control > [ 13.956000] configfs-gadget gadget: uvc_function_set_alt(3, 0) > [ 13.956000] dwc2 c0040000.dwc2otg: dwc2_hsotg_ep_sethalt(ep > ffffffc01e1fe318 ep0, 1) > [ 13.956000] dwc2 c0040000.dwc2otg: dwc2_hsotg_ep_sethalt(ep > ffffffc01e1fe318 ep0, 1) > [ 13.956000] dwc2 c0040000.dwc2otg: dwc2_hsotg_ep_sethalt(ep > ffffffc01e1fe318 ep0, 1) > [ 13.956000] dwc2 c0040000.dwc2otg: dwc2_hsotg_ep_sethalt(ep > ffffffc01e1fe318 ep0, 1) > [ 13.956000] configfs-gadget gadget: uvc_function_set_alt(3, 0) > [ 13.960000] dwc2 c0040000.dwc2otg: dwc2_hsotg_ep_sethalt(ep > ffffffc01e1fe318 ep0, 1) > [ 13.960000] dwc2 c0040000.dwc2otg: dwc2_hsotg_ep_sethalt(ep > ffffffc01e1fe318 ep0, 1) > > > And the host PC kernel gives an error when info is retrieved from the > OTG device. > > Because of a lot other (much more complicated) constraints, I'm on an > old 4.4 kernel far away from the latest. > > Is this a known bug? Could it be a hardware limitation of my OTG which > has 1 control endpoint and 16 device mode endpoints? It seems that acm > is handled before uvc, would it make sense to patch to swap how those > two are handled initially? Where should I look into in my kernel to > figure out my issue? > > Any pointer or idea would be appreciated! Thanks, > > Grégoire Hello again, It turns out that VIDIOC_DQEVENT gives 0x0102 for ((struct uvc_event *)&v4l2_event.u.data)->req.wIndex instead of 0x0100 in an uvc standalone case. All the userspace code is then screwed from this change. Does anyone have any idea why DQEVENT gives a different wIndex value (+2) in case another gadget has been handled before uvc? Grégoire |