This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

am3354 使用两个uvc标准的usb摄像头报错

Other Parts Discussed in Thread: AM3354

基于am3354芯片的开发板上进行测试

摄像头驱动识别为SMI;

内核版本:Linux-3.2.0;

PSP版本号:04.06.00.10;

SDK版本号:05.07.00.00;

    测试时用的qt4.8.5版程序,程序在单独打开使用两个摄像头中任意一个时都能正常显示,但是修改程序同时打开两个摄像头时,

驱动报错:uvcvideo: Failed to submit URB 0 (-28).

在Google搜索时好多网友讨论是因为usb带宽问题,在修改摄像头分辨率和帧数能够输出最小无果后,看到下面国外论坛位网友提供的patch:

diff --git a/drivers/media/video/uvc/uvc_driver.c b/drivers/media/video/uvc/uvc_driver.c
index b6eae48..f633700 100644
--- a/drivers/media/video/uvc/uvc_driver.c
+++ b/drivers/media/video/uvc/uvc_driver.c
 <at>  <at>  -2130,6 +2130,15  <at>  <at>  static struct usb_device_id uvc_ids[] = {
 	  .bInterfaceProtocol	= 0,
 	  .driver_info 		= UVC_QUIRK_PROBE_MINMAX
 				| UVC_QUIRK_BUILTIN_ISIGHT },
+	/* Foxlink ("HP Webcam" on HP Mini 5103) */
+	{ .match_flags		= USB_DEVICE_ID_MATCH_DEVICE
+				| USB_DEVICE_ID_MATCH_INT_INFO,
+	  .idVendor		= 0x05c8,
+	  .idProduct		= 0x0403,
+	  .bInterfaceClass	= USB_CLASS_VIDEO,
+	  .bInterfaceSubClass	= 1,
+	  .bInterfaceProtocol	= 0,
+	  .driver_info		= UVC_QUIRK_FIX_BANDWIDTH },
 	/* Genesys Logic USB 2.0 PC Camera */
 	{ .match_flags		= USB_DEVICE_ID_MATCH_DEVICE
 				| USB_DEVICE_ID_MATCH_INT_INFO,
修改后发现也不起作用,报错仍然相同;于是又换了一款210开发板测试,没有打patch之前也是同样原因,打完patch后,210开发板成功
打开两个摄像头并且正常显示。
这应该算是kernel的bug,因此问一下TI官方有没有解决办法?
  • 请问,在你使用的这个版本中有USB CPPI DMA的支持吗?有的话使能了吗?

    210开发板是指什么?你提这个案例的意思,是想说用这个patch能把这个问题解决,但是需要TI官方的肯定是吗?

  • 首先非常感谢 @Steven Liu 的回复,我用的内核里有配置CONFIG_USB_TI_CPPI41_DMA_HW的

    第二个问题确实是你理解的意思,昨天又试了下通过otg和host两个控制器分别连接两个摄像头,是能正常工作的

    感觉跟usb带宽确实有关系,不知道TI官方的demo板是不是也有这样的问题?如果是的话,有没有解决方法

  • 目前,我这边没有实际案例这么用过,所以没有人汇报过这个问题。建议发到E2E论坛的Sitara专区,会有产品线的人来进行解答:http://e2e.ti.com/support/arm/sitara_arm/f/791

x 出现错误。请重试或与管理员联系。