Compare commits

..

2 Commits

Author SHA1 Message Date
93c776150b media: sunxi-vin: guard volatile control queries 2026-06-13 00:48:00 +08:00
9027454e19 arm64: dts: add BPI-M8 VIN pin supplies 2026-06-13 00:47:59 +08:00
2 changed files with 25 additions and 1 deletions

View File

@ -1092,6 +1092,15 @@
status = "okay";
};
&vind0 {
vind_mclkpin-supply = <&reg_bldo2>;
vind_mclkpin_vol = <1800000>;
vind_mcsipin-supply = <&reg_bldo2>;
vind_mcsipin_vol = <1800000>;
vind_mipipin-supply = <&reg_bldo2>;
vind_mipipin_vol = <1800000>;
};
&s_twi0 {
clock-frequency = <400000>;
pinctrl-0 = <&twi13_pins_default>;

View File

@ -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;
}