Platform: ROCKCHIP
OS: Android 6.0
Kernel: 3.10.92
现象:
之前有处理过 如何区分两颗相同的USB UVC Camera,是通过usb bus number来区分, 最近又出现了只能识别一颗摄像头的问题,后来发现是和bus number有关。
分析:
分析发现,两颗Camera的Facing属性都变成一样了。再查看kernel log,发现USB的root hub多了一个。
而正常的情况只有3个hub:
而区分usb camera属性正好用到了bus number中的hub 3, 异常时对应的Hub变成了hub 4。
原因:
CPU使用了rk3288-w版本, 此版本对usb有做功能上的扩展,多了对OHCI的支持,详细见:RK3288和RK3288-W版本说明
解决方法:
static long uvc_v4l2_do_ioctl(struct file *file, unsigned int cmd, void *arg)
{
......
memset(cap, 0, sizeof *cap);
strlcpy(cap->driver, "uvcvideo", sizeof cap->driver);
/Kris {/
#if 0
strlcpy(cap->card, vdev->name, sizeof cap->card);
#else
if( stream->dev->udev->bus->busnum == 1) {
strcpy(cap->card, "back");
} else {
strcpy(cap->card, "front");
}
#endif
/Kris }/
......
}
原作者:KrisFei
|