media: rockchip: isp: fix scale resolution limit

Change-Id: I2af84a93f335ae19d42075907f599f73af092619
Signed-off-by: Cai YiWei <cyw@rock-chips.com>
This commit is contained in:
Cai YiWei
2021-11-23 10:07:05 +08:00
committed by Tao Huang
parent 8be08d7f7c
commit c03c62661f
2 changed files with 25 additions and 11 deletions

View File

@@ -890,8 +890,8 @@ static void restrict_rsz_resolution(struct rkisp_device *dev,
struct v4l2_rect *input_win;
input_win = rkisp_get_isp_sd_win(&dev->isp_sdev);
max_rsz->width = max_t(int, input_win->width, config->max_rsz_width);
max_rsz->height = max_t(int, input_win->height, config->max_rsz_height);
max_rsz->width = min_t(int, input_win->width, config->max_rsz_width);
max_rsz->height = min_t(int, input_win->height, config->max_rsz_height);
}
static int rkisp_set_fmt(struct rkisp_stream *stream,
@@ -1631,20 +1631,35 @@ unreg:
int rkisp_register_stream_vdevs(struct rkisp_device *dev)
{
struct rkisp_capture_device *cap_dev = &dev->cap_dev;
struct stream_config *mp_cfg = &rkisp_mp_stream_config;
int ret = 0;
memset(cap_dev, 0, sizeof(*cap_dev));
cap_dev->ispdev = dev;
atomic_set(&cap_dev->refcnt, 0);
if (dev->isp_ver <= ISP_V13)
if (dev->isp_ver <= ISP_V13) {
if (dev->isp_ver == ISP_V12) {
mp_cfg->max_rsz_width = CIF_ISP_INPUT_W_MAX_V12;
mp_cfg->max_rsz_height = CIF_ISP_INPUT_H_MAX_V12;
} else if (dev->isp_ver == ISP_V13) {
mp_cfg->max_rsz_width = CIF_ISP_INPUT_W_MAX_V13;
mp_cfg->max_rsz_height = CIF_ISP_INPUT_H_MAX_V13;
}
ret = rkisp_register_stream_v1x(dev);
else if (dev->isp_ver == ISP_V20)
} else if (dev->isp_ver == ISP_V20) {
ret = rkisp_register_stream_v20(dev);
else if (dev->isp_ver == ISP_V21)
} else if (dev->isp_ver == ISP_V21) {
mp_cfg->max_rsz_width = CIF_ISP_INPUT_W_MAX_V21;
mp_cfg->max_rsz_height = CIF_ISP_INPUT_H_MAX_V21;
ret = rkisp_register_stream_v21(dev);
else if (dev->isp_ver == ISP_V30)
} else if (dev->isp_ver == ISP_V30) {
mp_cfg->max_rsz_width = dev->hw_dev->is_unite ?
CIF_ISP_INPUT_W_MAX_V30_UNITE : CIF_ISP_INPUT_W_MAX_V30;
mp_cfg->max_rsz_height = dev->hw_dev->is_unite ?
CIF_ISP_INPUT_H_MAX_V30_UNITE : CIF_ISP_INPUT_H_MAX_V30;
ret = rkisp_register_stream_v30(dev);
}
return ret;
}

View File

@@ -134,11 +134,10 @@ struct rkisp_stream_dmarx {
struct stream_config {
const struct capture_fmt *fmts;
int fmt_size;
/* constrains */
const int max_rsz_width;
const int max_rsz_height;
const int min_rsz_width;
const int min_rsz_height;
int max_rsz_width;
int max_rsz_height;
int min_rsz_width;
int min_rsz_height;
const int frame_end_id;
/* registers */
struct {