From d7fed91daa0f91714f1d6474997cdecff22203d8 Mon Sep 17 00:00:00 2001 From: Cai YiWei Date: Tue, 4 Apr 2023 16:03:12 +0800 Subject: [PATCH] media: rockchip: isp: fix open video during device register Change-Id: I9569dd51b5237307ff48e3daf25bf0c97a5fbbb6 Signed-off-by: Cai YiWei --- drivers/media/platform/rockchip/isp/capture.c | 3 +++ drivers/media/platform/rockchip/isp/dev.c | 1 + drivers/media/platform/rockchip/isp/dev.h | 1 + drivers/media/platform/rockchip/isp/isp_mipi_luma.c | 3 +++ drivers/media/platform/rockchip/isp/isp_params.c | 3 +++ drivers/media/platform/rockchip/isp/isp_stats.c | 3 +++ 6 files changed, 14 insertions(+) diff --git a/drivers/media/platform/rockchip/isp/capture.c b/drivers/media/platform/rockchip/isp/capture.c index cbb45aa8da42..fcad97feadb4 100644 --- a/drivers/media/platform/rockchip/isp/capture.c +++ b/drivers/media/platform/rockchip/isp/capture.c @@ -821,6 +821,9 @@ int rkisp_fh_open(struct file *filp) struct rkisp_stream *stream = video_drvdata(filp); int ret; + if (!stream->ispdev->is_probe_end) + return -EINVAL; + ret = v4l2_fh_open(filp); if (!ret) { ret = v4l2_pipeline_pm_get(&stream->vnode.vdev.entity); diff --git a/drivers/media/platform/rockchip/isp/dev.c b/drivers/media/platform/rockchip/isp/dev.c index 9aecc186faaa..cb5b6f2e0617 100644 --- a/drivers/media/platform/rockchip/isp/dev.c +++ b/drivers/media/platform/rockchip/isp/dev.c @@ -919,6 +919,7 @@ static int rkisp_plat_probe(struct platform_device *pdev) mutex_lock(&rkisp_dev_mutex); list_add_tail(&isp_dev->list, &rkisp_device_list); mutex_unlock(&rkisp_dev_mutex); + isp_dev->is_probe_end = true; return 0; err_unreg_media_dev: diff --git a/drivers/media/platform/rockchip/isp/dev.h b/drivers/media/platform/rockchip/isp/dev.h index 29af28c86b6c..0b73b4f3ba20 100644 --- a/drivers/media/platform/rockchip/isp/dev.h +++ b/drivers/media/platform/rockchip/isp/dev.h @@ -248,6 +248,7 @@ struct rkisp_device { bool is_rdbk_auto; bool is_pre_on; bool is_first_double; + bool is_probe_end; struct rkisp_vicap_input vicap_in; diff --git a/drivers/media/platform/rockchip/isp/isp_mipi_luma.c b/drivers/media/platform/rockchip/isp/isp_mipi_luma.c index ebca58e7102f..83283980b583 100644 --- a/drivers/media/platform/rockchip/isp/isp_mipi_luma.c +++ b/drivers/media/platform/rockchip/isp/isp_mipi_luma.c @@ -82,6 +82,9 @@ static int rkisp_luma_fh_open(struct file *filp) struct rkisp_luma_vdev *params = video_drvdata(filp); int ret; + if (!params->dev->is_probe_end) + return -EINVAL; + ret = v4l2_fh_open(filp); if (!ret) { ret = v4l2_pipeline_pm_get(¶ms->vnode.vdev.entity); diff --git a/drivers/media/platform/rockchip/isp/isp_params.c b/drivers/media/platform/rockchip/isp/isp_params.c index 8c632c2e72e9..020ff5a4dd58 100644 --- a/drivers/media/platform/rockchip/isp/isp_params.c +++ b/drivers/media/platform/rockchip/isp/isp_params.c @@ -260,6 +260,9 @@ static int rkisp_params_fh_open(struct file *filp) struct rkisp_isp_params_vdev *params = video_drvdata(filp); int ret; + if (!params->dev->is_probe_end) + return -EINVAL; + ret = v4l2_fh_open(filp); if (!ret) { ret = v4l2_pipeline_pm_get(¶ms->vnode.vdev.entity); diff --git a/drivers/media/platform/rockchip/isp/isp_stats.c b/drivers/media/platform/rockchip/isp/isp_stats.c index 7d21e2cb4c01..372e4d5bfb2d 100644 --- a/drivers/media/platform/rockchip/isp/isp_stats.c +++ b/drivers/media/platform/rockchip/isp/isp_stats.c @@ -88,6 +88,9 @@ static int rkisp_stats_fh_open(struct file *filp) struct rkisp_isp_stats_vdev *stats = video_drvdata(filp); int ret; + if (!stats->dev->is_probe_end) + return -EINVAL; + ret = v4l2_fh_open(filp); if (!ret) { ret = v4l2_pipeline_pm_get(&stats->vnode.vdev.entity);