From 4ae0e6cdb3cde4bb58b18dfc5a2c5f1cc6ed5843 Mon Sep 17 00:00:00 2001 From: Yandong Lin Date: Wed, 17 May 2023 14:56:35 +0800 Subject: [PATCH] video: rockchip: mpp: fix share reset_group do not take effect Some device share one pd, but reset control are different. It should share a reset_group to ensure that one device can not do reset while anothor is running. Signed-off-by: Yandong Lin Change-Id: I53527a053d0835085522396e2d9ee649d78325a5 --- drivers/video/rockchip/mpp/mpp_common.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/video/rockchip/mpp/mpp_common.c b/drivers/video/rockchip/mpp/mpp_common.c index 25865943f4f3..39df5053860b 100644 --- a/drivers/video/rockchip/mpp/mpp_common.c +++ b/drivers/video/rockchip/mpp/mpp_common.c @@ -715,10 +715,6 @@ mpp_reset_control_get(struct mpp_dev *mpp, enum MPP_RESET_TYPE type, const char group->resets[type] = rst; group->queue = mpp->queue; } - /* if reset not in the same queue, it means different device - * may reset in the same time, then rw_sem_on should set true. - */ - group->rw_sem_on |= (group->queue != mpp->queue) ? true : false; dev_info(mpp->dev, "reset_group->rw_sem_on=%d\n", group->rw_sem_on); up_write(&group->rw_sem); @@ -1005,6 +1001,10 @@ static int mpp_attach_service(struct mpp_dev *mpp, struct device *dev) return -ENODEV; } else { mpp->reset_group = mpp->srv->reset_groups[reset_group_node]; + if (!mpp->reset_group->queue) + mpp->reset_group->queue = queue; + if (mpp->reset_group->queue != mpp->queue) + mpp->reset_group->rw_sem_on = true; } }