hc
2023-12-11 6778948f9de86c3cfaf36725a7c87dcff9ba247f
kernel/drivers/media/platform/rockchip/isp/capture.c
....@@ -626,7 +626,7 @@
626626
627627 max_rsz->width = ALIGN(DIV_ROUND_UP(input_win->width, div), 4);
628628 max_rsz->height = DIV_ROUND_UP(input_win->height, div);
629
- } else if (dev->hw_dev->is_unite) {
629
+ } else if (dev->hw_dev->unite) {
630630 /* scale down only for unite mode */
631631 max_rsz->width = min_t(int, input_win->width, cfg->max_rsz_width);
632632 max_rsz->height = min_t(int, input_win->height, cfg->max_rsz_height);
....@@ -1140,7 +1140,8 @@
11401140
11411141 if (dev->isp_ver != ISP_V32 ||
11421142 dev->hw_dev->dev_link_num > 1 ||
1143
- !stream->ops->set_wrap) {
1143
+ !stream->ops->set_wrap ||
1144
+ dev->hw_dev->unite) {
11441145 v4l2_err(&dev->v4l2_dev,
11451146 "wrap only support for single sensor and mainpath\n");
11461147 return -EINVAL;
....@@ -1465,7 +1466,7 @@
14651466 const struct v4l2_rect *in)
14661467 {
14671468 struct rkisp_device *dev = stream->ispdev;
1468
- bool is_unite = dev->hw_dev->is_unite;
1469
+ bool is_unite = !!dev->hw_dev->unite;
14691470 u32 align = is_unite ? 4 : 2;
14701471
14711472 /* Not crop for MP bayer raw data and dmatx path */
....@@ -1616,7 +1617,9 @@
16161617 if (ispdev->isp_ver != ISP_V32)
16171618 return;
16181619
1620
+ mutex_lock(&ispdev->hw_dev->dev_lock);
16191621 rkisp_chk_tb_over(ispdev);
1622
+ mutex_unlock(&ispdev->hw_dev->dev_lock);
16201623 if (ispdev->tb_head.complete != RKISP_TB_OK)
16211624 return;
16221625 ret = v4l2_pipeline_pm_get(&stream->vnode.vdev.entity);
....@@ -1733,17 +1736,21 @@
17331736 st_cfg->max_rsz_height = CIF_ISP_INPUT_H_MAX_V21;
17341737 ret = rkisp_register_stream_v21(dev);
17351738 } else if (dev->isp_ver == ISP_V30) {
1736
- st_cfg->max_rsz_width = dev->hw_dev->is_unite ?
1739
+ st_cfg->max_rsz_width = dev->hw_dev->unite ?
17371740 CIF_ISP_INPUT_W_MAX_V30_UNITE : CIF_ISP_INPUT_W_MAX_V30;
1738
- st_cfg->max_rsz_height = dev->hw_dev->is_unite ?
1741
+ st_cfg->max_rsz_height = dev->hw_dev->unite ?
17391742 CIF_ISP_INPUT_H_MAX_V30_UNITE : CIF_ISP_INPUT_H_MAX_V30;
17401743 ret = rkisp_register_stream_v30(dev);
17411744 } else if (dev->isp_ver == ISP_V32) {
1742
- st_cfg->max_rsz_width = CIF_ISP_INPUT_W_MAX_V32;
1743
- st_cfg->max_rsz_height = CIF_ISP_INPUT_H_MAX_V32;
1745
+ st_cfg->max_rsz_width = dev->hw_dev->unite ?
1746
+ CIF_ISP_INPUT_W_MAX_V32_UNITE : CIF_ISP_INPUT_W_MAX_V32;
1747
+ st_cfg->max_rsz_height = dev->hw_dev->unite ?
1748
+ CIF_ISP_INPUT_H_MAX_V32_UNITE : CIF_ISP_INPUT_H_MAX_V32;
17441749 st_cfg = &rkisp_sp_stream_config;
1745
- st_cfg->max_rsz_width = CIF_ISP_INPUT_W_MAX_V32;
1746
- st_cfg->max_rsz_height = CIF_ISP_INPUT_H_MAX_V32;
1750
+ st_cfg->max_rsz_width = dev->hw_dev->unite ?
1751
+ CIF_ISP_INPUT_W_MAX_V32_UNITE : CIF_ISP_INPUT_W_MAX_V32;
1752
+ st_cfg->max_rsz_height = dev->hw_dev->unite ?
1753
+ CIF_ISP_INPUT_H_MAX_V32_UNITE : CIF_ISP_INPUT_H_MAX_V32;
17471754 ret = rkisp_register_stream_v32(dev);
17481755 } else if (dev->isp_ver == ISP_V32_L) {
17491756 st_cfg->max_rsz_width = CIF_ISP_INPUT_W_MAX_V32_L;