media: rockchip: isp: skip frame when change hdr/normal mode

Signed-off-by: Hu Kejun <william.hu@rock-chips.com>
Change-Id: I103653f36bbfcc310e9648715baf870db967c9c3
This commit is contained in:
Hu Kejun
2020-10-15 11:35:01 +08:00
committed by Tao Huang
parent 54e1a2cf73
commit af010aa87d
3 changed files with 8 additions and 0 deletions

View File

@@ -63,6 +63,11 @@ static int frame_end(struct rkisp_bridge_device *dev, bool en)
spin_lock_irqsave(&hw->buf_lock, lock_flags);
list_add_tail(&hw->cur_buf->list, &hw->list);
spin_unlock_irqrestore(&hw->buf_lock, lock_flags);
} else if (dev->ispdev->skip_frame > 0) {
dev->ispdev->skip_frame--;
spin_lock_irqsave(&hw->buf_lock, lock_flags);
list_add_tail(&hw->cur_buf->list, &hw->list);
spin_unlock_irqrestore(&hw->buf_lock, lock_flags);
} else {
ns = 0;
rkisp_dmarx_get_frame(dev->ispdev,
@@ -458,6 +463,7 @@ static int bridge_start(struct rkisp_bridge_device *dev)
if (!(dev->work_mode & ISP_ISPP_QUICK))
update_mi(dev);
}
dev->ispdev->skip_frame = 0;
dev->en = true;
return 0;
}

View File

@@ -501,6 +501,7 @@ void rkisp_trigger_read_back(struct rkisp_csi_device *csi, u8 dma2frm, u32 mode)
tmp = rkisp_read(dev, ISP_HDRMGE_BASE, false) & 0xf;
if (val != tmp) {
rkisp_write(dev, ISP_HDRMGE_BASE, val, false);
dev->skip_frame = 2;
is_upd = true;
}

View File

@@ -209,5 +209,6 @@ struct rkisp_device {
phys_addr_t resmem_pa;
size_t resmem_size;
int dev_id;
unsigned int skip_frame;
};
#endif