media: rockchip: isp: fix bilinear scale no output if unite mode

Change-Id: Ic8ea66fdde4b139d961803e16fab2481dd72355a
Signed-off-by: Cai YiWei <cyw@rock-chips.com>
This commit is contained in:
Cai YiWei
2025-02-06 17:58:16 +08:00
committed by Tao Huang
parent 596e50f65e
commit e6270f2d22

View File

@@ -401,12 +401,32 @@ static void set_bilinear_scale(struct rkisp_stream *stream, struct v4l2_rect *in
u32 left_in_used_size_c = right_fst_point_c / ISP32_SCALE_BIL_FACTOR * 2;
u32 phase_left_y = right_fst_point_y & 0xfff;
u32 phase_left_c = right_fst_point_c & 0xfff;
u32 right_scl_need_size_y = in_y->width - left_in_used_size_y;
u32 right_scl_need_size_c = in_y->width - left_in_used_size_c;
u32 right_scl_in_size_y = in_w - right_scl_need_size_y;
u32 right_scl_in_size_c = in_w - right_scl_need_size_c;
u32 scl_in_hy_offs = right_scl_in_size_y - RKMOUDLE_UNITE_EXTEND_PIXEL;
u32 scl_in_hc_offs = right_scl_in_size_c - RKMOUDLE_UNITE_EXTEND_PIXEL;
u32 right_need_in_size_y = in_y->width - left_in_used_size_y;
u32 right_need_in_size_c = in_y->width - left_in_used_size_c;
u32 right_need_in_size, right_scl_in_size;
u32 right_crop, scl_in_hy_offs, scl_in_hc_offs;
if (right_need_in_size_y > right_need_in_size_c)
right_need_in_size = right_need_in_size_y;
else
right_need_in_size = right_need_in_size_c;
if (right_need_in_size % 2 == 1)
right_scl_in_size = right_need_in_size + 1;
else
right_scl_in_size = right_need_in_size;
scl_in_hy_offs = right_scl_in_size - right_need_in_size_y;
scl_in_hc_offs = right_scl_in_size - right_need_in_size_c;
right_crop = in_w - right_scl_in_size;
if (right_crop != RKMOUDLE_UNITE_EXTEND_PIXEL) {
reg = stream->config->dual_crop.h_offset;
rkisp_idx_write(dev, reg, right_crop, ISP_UNITE_RIGHT, false);
reg = stream->config->dual_crop.h_size;
rkisp_idx_write(dev, reg, right_scl_in_size, ISP_UNITE_RIGHT, false);
reg = stream->config->dual_crop.ctrl;
val = rkisp_idx_read_reg_cache(dev, reg, ISP_UNITE_RIGHT);
rkisp_idx_write(dev, reg, val, ISP_UNITE_RIGHT, false);
}
/* left isp */
reg = stream->config->rsz.scale_hy_offs;