media: rockchip: vicap fixes logic error of skip frame
Signed-off-by: Zefa Chen <zefa.chen@rock-chips.com> Change-Id: Ic1428169c8a60786decf3d8926bd86f2df7670e1
This commit is contained in:
parent
e917db0dd7
commit
9f585815cc
2 changed files with 17 additions and 21 deletions
|
|
@ -1659,8 +1659,9 @@ static void rkcif_s_rx_buffer(struct rkcif_stream *stream, struct rkisp_rx_buf *
|
|||
sd = get_rkisp_sd(dev->sditf[0]);
|
||||
if (!sd)
|
||||
return;
|
||||
if (dev->rdbk_debug &&
|
||||
dbufs->sequence < 15) {
|
||||
if ((dev->rdbk_debug &&
|
||||
dbufs->sequence < 15) ||
|
||||
rkcif_debug == 3) {
|
||||
rx_buf = to_cif_rx_buf(dbufs);
|
||||
v4l2_info(&dev->v4l2_dev,
|
||||
"s_buf seq %d type %d, dma addr %x, %lld\n",
|
||||
|
|
@ -2532,7 +2533,6 @@ static int rkcif_assign_new_buffer_update(struct rkcif_stream *stream,
|
|||
int ret = 0;
|
||||
u32 buff_addr_y, buff_addr_cbcr;
|
||||
unsigned long flags;
|
||||
int on = 0;
|
||||
|
||||
if (mbus_cfg->type == V4L2_MBUS_CSI2_DPHY ||
|
||||
mbus_cfg->type == V4L2_MBUS_CSI2_CPHY ||
|
||||
|
|
@ -2631,18 +2631,6 @@ static int rkcif_assign_new_buffer_update(struct rkcif_stream *stream,
|
|||
}
|
||||
}
|
||||
stream->frame_phase_cache = stream->frame_phase;
|
||||
if (stream->is_single_cap && !stream->cur_skip_frame) {
|
||||
stream->to_stop_dma = RKCIF_DMAEN_BY_VICAP;
|
||||
rkcif_stop_dma_capture(stream);
|
||||
rkcif_dphy_quick_stream(stream->cifdev, on);
|
||||
stream->is_single_cap = false;
|
||||
if ((dev->hdr.hdr_mode == NO_HDR && atomic_read(&dev->streamoff_cnt) == 1) ||
|
||||
(dev->hdr.hdr_mode == HDR_X2 && atomic_read(&dev->streamoff_cnt) == 2) ||
|
||||
(dev->hdr.hdr_mode == HDR_X3 && atomic_read(&dev->streamoff_cnt) == 3)) {
|
||||
dev->sensor_work.on = on;
|
||||
schedule_work(&dev->sensor_work.work);
|
||||
}
|
||||
}
|
||||
|
||||
if (buffer) {
|
||||
buff_addr_y = buffer->buff_addr[RKCIF_PLANE_Y];
|
||||
|
|
@ -10180,7 +10168,10 @@ static void rkcif_toisp_check_stop_status(struct sditf_priv *priv,
|
|||
complete(&stream->stop_complete);
|
||||
}
|
||||
}
|
||||
if (stream->is_single_cap && (!stream->cur_skip_frame)) {
|
||||
if (stream->is_single_cap && (!stream->cur_skip_frame) &&
|
||||
(stream->cifdev->hdr.hdr_mode == NO_HDR ||
|
||||
(stream->cifdev->hdr.hdr_mode == HDR_X2 && stream->id == 1) ||
|
||||
(stream->cifdev->hdr.hdr_mode == HDR_X3 && stream->id == 2))) {
|
||||
rkcif_dphy_quick_stream(stream->cifdev, on);
|
||||
stream->cifdev->sensor_work.on = 0;
|
||||
schedule_work(&stream->cifdev->sensor_work.work);
|
||||
|
|
@ -10188,8 +10179,8 @@ static void rkcif_toisp_check_stop_status(struct sditf_priv *priv,
|
|||
}
|
||||
if (stream->cur_skip_frame &&
|
||||
(stream->cifdev->hdr.hdr_mode == NO_HDR ||
|
||||
(stream->cifdev->hdr.hdr_mode == HDR_X2 && stream->id == 1) ||
|
||||
(stream->cifdev->hdr.hdr_mode == HDR_X3 && stream->id == 2)))
|
||||
(stream->cifdev->hdr.hdr_mode == HDR_X2 && stream->id == 1) ||
|
||||
(stream->cifdev->hdr.hdr_mode == HDR_X3 && stream->id == 2)))
|
||||
stream->cur_skip_frame--;
|
||||
if (stream->cifdev->chip_id >= CHIP_RV1106_CIF)
|
||||
rkcif_modify_frame_skip_config(stream);
|
||||
|
|
@ -11142,8 +11133,13 @@ void rkcif_irq_pingpong_v1(struct rkcif_device *cif_dev)
|
|||
stream->dma_en);
|
||||
rkcif_update_stream_rockit(cif_dev, stream, mipi_id);
|
||||
}
|
||||
if (stream->is_single_cap) {
|
||||
stream->to_stop_dma = RKCIF_DMAEN_BY_ISP;
|
||||
if (stream->is_single_cap && !stream->cur_skip_frame) {
|
||||
if (stream->dma_en & RKCIF_DMAEN_BY_ISP)
|
||||
stream->to_stop_dma = RKCIF_DMAEN_BY_ISP;
|
||||
else if (stream->dma_en & RKCIF_DMAEN_BY_VICAP)
|
||||
stream->to_stop_dma = RKCIF_DMAEN_BY_VICAP;
|
||||
else if (stream->dma_en & RKCIF_DMAEN_BY_ROCKIT)
|
||||
stream->to_stop_dma = RKCIF_DMAEN_BY_ROCKIT;
|
||||
rkcif_stop_dma_capture(stream);
|
||||
stream->is_single_cap = false;
|
||||
if ((cif_dev->hdr.hdr_mode == NO_HDR && atomic_read(&cif_dev->streamoff_cnt) == 1) ||
|
||||
|
|
|
|||
|
|
@ -184,7 +184,7 @@
|
|||
_IOW('V', BASE_VIDIOC_PRIVATE + 40, struct rkmodule_capture_info)
|
||||
|
||||
#define RKMODULE_GET_SKIP_FRAME \
|
||||
_IOW('V', BASE_VIDIOC_PRIVATE + 41, __u32)
|
||||
_IOR('V', BASE_VIDIOC_PRIVATE + 41, __u32)
|
||||
|
||||
struct rkmodule_i2cdev_info {
|
||||
__u8 slave_addr;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue