media: rockchip: vicap support restart capture one frame with aov sinngle frame mode

Signed-off-by: Zefa Chen <zefa.chen@rock-chips.com>
Change-Id: I1ce89f84d568b14fc59bd0ace774310c3d4b3a98
This commit is contained in:
Zefa Chen 2024-03-05 18:11:07 +08:00 committed by Tao Huang
commit 38624894a9
2 changed files with 36 additions and 0 deletions

View file

@ -7957,6 +7957,7 @@ static long rkcif_ioctl_default(struct file *file, void *fh,
int i = 0;
int stream_num = 0;
bool is_can_be_online = false;
int on = 0;
switch (cmd) {
case RKCIF_CMD_GET_CSI_MEMORY_MODE:
@ -8094,6 +8095,38 @@ static long rkcif_ioctl_default(struct file *file, void *fh,
}
}
break;
case RKCIF_CMD_START_CAPTURE_ONE_FRAME_AOV:
if (!dev->sditf[0])
return -EINVAL;
if (dev->hdr.hdr_mode == HDR_X2)
stream_num = 2;
else if (dev->hdr.hdr_mode == HDR_X3)
stream_num = 3;
else
stream_num = 1;
for (i = 0; i < stream_num; i++) {
dev->stream[i].cur_skip_frame = dev->stream[i].skip_frame;
dev->stream[i].is_single_cap = true;
}
if (dev->sditf[0]->mode.rdbk_mode == RKISP_VICAP_ONLINE) {
for (i = 0; i < stream_num - 1; i++) {
dev->stream[i].to_en_dma = RKCIF_DMAEN_BY_ISP;
rkcif_enable_dma_capture(&dev->stream[i], true);
}
} else {
for (i = 0; i < stream_num; i++) {
if (dev->sditf[0]->mode.rdbk_mode == RKISP_VICAP_RDBK_AUTO)
dev->stream[i].to_en_dma = RKCIF_DMAEN_BY_ISP;
else
dev->stream[i].to_en_dma = RKCIF_DMAEN_BY_VICAP;
rkcif_enable_dma_capture(&dev->stream[i], true);
}
}
on = 1;
rkcif_dphy_quick_stream(dev, on);
v4l2_subdev_call(dev->terminal_sensor.sd, core, ioctl,
RKMODULE_SET_QUICK_STREAM, &on);
break;
default:
return -EINVAL;
}

View file

@ -54,6 +54,9 @@
#define RKCIF_CMD_SET_PPI_DATA_DEBUG \
_IOW('V', BASE_VIDIOC_PRIVATE + 13, unsigned int)
#define RKCIF_CMD_START_CAPTURE_ONE_FRAME_AOV \
_IOW('V', BASE_VIDIOC_PRIVATE + 14, int)
/* cif memory mode
* 0: raw12/raw10/raw8 8bit memory compact
* 1: raw12/raw10 16bit memory one pixel