media: sunxi-vin: guard volatile control queries
This commit is contained in:
parent
9027454e19
commit
93c776150b
@ -3886,19 +3886,28 @@ static int vin_g_volatile_ctrl(struct v4l2_ctrl *ctrl)
|
||||
struct v4l2_control c;
|
||||
int ret = 0;
|
||||
|
||||
if (!cap->vinc || !inst)
|
||||
return -ENODEV;
|
||||
|
||||
c.id = ctrl->id;
|
||||
if (inst->is_isp_used && inst->is_bayer_raw) {
|
||||
switch (ctrl->id) {
|
||||
case V4L2_CID_EXPOSURE:
|
||||
if (!sensor || !sensor->ctrl_handler)
|
||||
return -ENODEV;
|
||||
v4l2_g_ctrl(sensor->ctrl_handler, &c);
|
||||
ctrl->val = c.value;
|
||||
break;
|
||||
case V4L2_CID_EXPOSURE_ABSOLUTE:
|
||||
if (!sensor || !sensor->ctrl_handler)
|
||||
return -ENODEV;
|
||||
c.id = V4L2_CID_EXPOSURE;
|
||||
v4l2_g_ctrl(sensor->ctrl_handler, &c);
|
||||
ctrl->val = __vin_sensor_line2time(sensor, c.value);
|
||||
break;
|
||||
case V4L2_CID_GAIN:
|
||||
if (!sensor || !sensor->ctrl_handler)
|
||||
return -ENODEV;
|
||||
v4l2_g_ctrl(sensor->ctrl_handler, &c);
|
||||
ctrl->val = c.value;
|
||||
break;
|
||||
@ -3931,11 +3940,15 @@ static int vin_g_volatile_ctrl(struct v4l2_ctrl *ctrl)
|
||||
c.value = inst->is_bayer_raw;
|
||||
break;
|
||||
case V4L2_CID_FLASH_LED_MODE:
|
||||
if (!flash || !flash->ctrl_handler)
|
||||
return -ENODEV;
|
||||
ret = v4l2_g_ctrl(flash->ctrl_handler, &c);
|
||||
break;
|
||||
case V4L2_CID_AUTO_FOCUS_STATUS:
|
||||
if (!sensor || !sensor->ctrl_handler)
|
||||
return -ENODEV;
|
||||
ret = v4l2_g_ctrl(sensor->ctrl_handler, &c);
|
||||
if (c.value != V4L2_AUTO_FOCUS_STATUS_BUSY)
|
||||
if (flash && c.value != V4L2_AUTO_FOCUS_STATUS_BUSY)
|
||||
sunxi_flash_stop(flash);
|
||||
break;
|
||||
case V4L2_CID_VFLIP:
|
||||
@ -3945,6 +3958,8 @@ static int vin_g_volatile_ctrl(struct v4l2_ctrl *ctrl)
|
||||
ctrl->val = cap->vinc->hflip;
|
||||
break;
|
||||
default:
|
||||
if (!sensor || !sensor->ctrl_handler)
|
||||
return -ENODEV;
|
||||
ret = v4l2_g_ctrl(sensor->ctrl_handler, &c);
|
||||
break;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user