[media] uvcvideo: Ignore GET_RES error for XU controls
GET_RES request support is mandatory for extension units, but some cameras still choke on it (one example is the Logitech QuickCam PTZ that returns a single byte for the PTZ relative control instead of four). Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
committed by
Mauro Carvalho Chehab
parent
3afedb9585
commit
c4d99f89e2
@@ -878,8 +878,21 @@ static int uvc_ctrl_populate_cache(struct uvc_video_chain *chain,
|
|||||||
chain->dev->intfnum, ctrl->info.selector,
|
chain->dev->intfnum, ctrl->info.selector,
|
||||||
uvc_ctrl_data(ctrl, UVC_CTRL_DATA_RES),
|
uvc_ctrl_data(ctrl, UVC_CTRL_DATA_RES),
|
||||||
ctrl->info.size);
|
ctrl->info.size);
|
||||||
if (ret < 0)
|
if (ret < 0) {
|
||||||
|
if (UVC_ENTITY_TYPE(ctrl->entity) !=
|
||||||
|
UVC_VC_EXTENSION_UNIT)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
/* GET_RES is mandatory for XU controls, but some
|
||||||
|
* cameras still choke on it. Ignore errors and set the
|
||||||
|
* resolution value to zero.
|
||||||
|
*/
|
||||||
|
uvc_warn_once(chain->dev, UVC_WARN_XU_GET_RES,
|
||||||
|
"UVC non compliance - GET_RES failed on "
|
||||||
|
"an XU control. Enabling workaround.\n");
|
||||||
|
memset(uvc_ctrl_data(ctrl, UVC_CTRL_DATA_RES), 0,
|
||||||
|
ctrl->info.size);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ctrl->cached = 1;
|
ctrl->cached = 1;
|
||||||
|
|||||||
@@ -477,6 +477,7 @@ struct uvc_driver {
|
|||||||
|
|
||||||
#define UVC_WARN_MINMAX 0
|
#define UVC_WARN_MINMAX 0
|
||||||
#define UVC_WARN_PROBE_DEF 1
|
#define UVC_WARN_PROBE_DEF 1
|
||||||
|
#define UVC_WARN_XU_GET_RES 2
|
||||||
|
|
||||||
extern unsigned int uvc_clock_param;
|
extern unsigned int uvc_clock_param;
|
||||||
extern unsigned int uvc_no_drop_param;
|
extern unsigned int uvc_no_drop_param;
|
||||||
|
|||||||
Reference in New Issue
Block a user