From e09cebac4ba849f9bed1156dfa962f2fa3363837 Mon Sep 17 00:00:00 2001 From: Cai YiWei Date: Wed, 6 Jul 2022 10:16:32 +0800 Subject: [PATCH] media: rockchip: isp: disable link vir isp when hw working Change-Id: I1006c9320c30397b8ed106cb75039b10f55fd286 Signed-off-by: Cai YiWei --- drivers/media/platform/rockchip/isp/hw.h | 1 + drivers/media/platform/rockchip/isp/rkisp.c | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/drivers/media/platform/rockchip/isp/hw.h b/drivers/media/platform/rockchip/isp/hw.h index 8f222d6f97f6..28ee8c441a29 100644 --- a/drivers/media/platform/rockchip/isp/hw.h +++ b/drivers/media/platform/rockchip/isp/hw.h @@ -99,6 +99,7 @@ struct rkisp_hw_dev { bool is_shutdown; bool is_unite; bool is_multi_overflow; + bool is_runing; }; int rkisp_register_irq(struct rkisp_hw_dev *dev); diff --git a/drivers/media/platform/rockchip/isp/rkisp.c b/drivers/media/platform/rockchip/isp/rkisp.c index c66cdfe43453..31c6c69c9694 100644 --- a/drivers/media/platform/rockchip/isp/rkisp.c +++ b/drivers/media/platform/rockchip/isp/rkisp.c @@ -1975,6 +1975,7 @@ static int rkisp_isp_stop(struct rkisp_device *dev) rkisp_next_write(dev, CSI2RX_CSI2_RESETN, 0, true); } + hw->is_runing = false; dev->hw_dev->is_idle = true; dev->hw_dev->is_mi_update = false; end: @@ -2724,6 +2725,7 @@ static int rkisp_isp_sd_s_stream(struct v4l2_subdev *sd, int on) return 0; } + hw_dev->is_runing = true; tasklet_enable(&isp_dev->rdbk_tasklet); rkisp_start_3a_run(isp_dev); memset(&isp_dev->isp_sdev.dbg, 0, sizeof(isp_dev->isp_sdev.dbg)); @@ -2958,6 +2960,15 @@ static int rkisp_subdev_link_setup(struct media_entity *entity, if (!dev) return -ENODEV; + if (dev->hw_dev->is_runing && + (!dev->isp_inp || + !(dev->isp_inp & ~rawrd) || + !strcmp(remote->entity->name, CSI_DEV_NAME) || + strstr(remote->entity->name, "rkcif"))) { + v4l2_err(sd, "no support link for isp hw working\n"); + return -EINVAL; + } + if (!strcmp(remote->entity->name, DMA_VDEV_NAME)) { stream = &dev->dmarx_dev.stream[RKISP_STREAM_DMARX]; if (flags & MEDIA_LNK_FL_ENABLED) {