From c08df6d37f3bac81855a09e807928e5a4bfa1dcd Mon Sep 17 00:00:00 2001 From: Zefa Chen Date: Wed, 20 Mar 2024 11:26:43 +0800 Subject: [PATCH] media: rockchip: vicap support config reserved buf num Signed-off-by: Zefa Chen Change-Id: I3e2baabba29fbc1494c490ac45f3bbcf5a8bf6d3 --- drivers/media/platform/rockchip/cif/dev.c | 6 ++++++ drivers/media/platform/rockchip/cif/dev.h | 2 ++ drivers/media/platform/rockchip/cif/subdev-itf.c | 2 +- 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/media/platform/rockchip/cif/dev.c b/drivers/media/platform/rockchip/cif/dev.c index 63d79f1aefba..8453cbbcd265 100644 --- a/drivers/media/platform/rockchip/cif/dev.c +++ b/drivers/media/platform/rockchip/cif/dev.c @@ -2473,6 +2473,12 @@ static void rkcif_parse_dts(struct rkcif_device *cif_dev) if (ret != 0) cif_dev->wait_line = 0; dev_info(cif_dev->dev, "rkcif wait line %d\n", cif_dev->wait_line); + ret = of_property_read_u32(node, + OF_CIF_FASTBOOT_RESERVED_BUFS, + &cif_dev->fb_res_bufs); + if (ret != 0) + cif_dev->fb_res_bufs = 3; + dev_info(cif_dev->dev, "rkcif fastboot reserve bufs num %d\n", cif_dev->fb_res_bufs); } static int rkcif_get_reserved_mem(struct rkcif_device *cif_dev) diff --git a/drivers/media/platform/rockchip/cif/dev.h b/drivers/media/platform/rockchip/cif/dev.h index a15e578549b6..2bae8897c97b 100644 --- a/drivers/media/platform/rockchip/cif/dev.h +++ b/drivers/media/platform/rockchip/cif/dev.h @@ -36,6 +36,7 @@ #define OF_CIF_MONITOR_PARA "rockchip,cif-monitor" #define OF_CIF_WAIT_LINE "wait-line" +#define OF_CIF_FASTBOOT_RESERVED_BUFS "fastboot-reserved-bufs" #define CIF_MONITOR_PARA_NUM (5) @@ -946,6 +947,7 @@ struct rkcif_device { u32 intr_mask; struct delayed_work work_deal_err; u32 other_intstat[RKMODULE_MULTI_DEV_NUM]; + u32 fb_res_bufs; }; extern struct platform_driver rkcif_plat_drv; diff --git a/drivers/media/platform/rockchip/cif/subdev-itf.c b/drivers/media/platform/rockchip/cif/subdev-itf.c index 7085129cdb5d..0142f6de9061 100644 --- a/drivers/media/platform/rockchip/cif/subdev-itf.c +++ b/drivers/media/platform/rockchip/cif/subdev-itf.c @@ -885,7 +885,7 @@ static int sditf_s_rx_buffer(struct v4l2_subdev *sd, atomic_inc(&stream->buf_cnt); is_single_dev = rkcif_check_single_dev_stream_on(cif_dev->hw_dev); - if (!list_empty(&stream->rx_buf_head) && + if (stream->total_buf_num > cif_dev->fb_res_bufs && cif_dev->is_thunderboot && ((!cif_dev->is_rtt_suspend && !cif_dev->is_aov_reserved) ||