From 767709ab167ac994c0cf0533fc6eb99b172bf7b8 Mon Sep 17 00:00:00 2001 From: Ding Wei Date: Tue, 20 Sep 2022 15:54:29 +0800 Subject: [PATCH] video: rockchip: mpp: iep2: Add work mode setting check work mode when irq Change-Id: I46c772e5c8608d8c7aa7e3bec0331da1af4832d3 Signed-off-by: Ding Wei --- drivers/video/rockchip/mpp/mpp_iep2.c | 6 ++++++ drivers/video/rockchip/mpp/rockchip_iep2_regs.h | 2 ++ 2 files changed, 8 insertions(+) diff --git a/drivers/video/rockchip/mpp/mpp_iep2.c b/drivers/video/rockchip/mpp/mpp_iep2.c index 74a72540a854..db79cc6ae575 100644 --- a/drivers/video/rockchip/mpp/mpp_iep2.c +++ b/drivers/video/rockchip/mpp/mpp_iep2.c @@ -368,6 +368,8 @@ static void iep2_config(struct mpp_dev *mpp, struct iep_task *task) | IEP2_REG_DEBUG_DATA_EN; mpp_write_relaxed(mpp, IEP2_REG_IEP_CONFIG0, reg); + mpp_write_relaxed(mpp, IEP2_REG_WORK_MODE, IEP2_REG_IEP2_MODE); + reg = IEP2_REG_SRC_PIC_WIDTH(width - 1) | IEP2_REG_SRC_PIC_HEIGHT(height - 1); mpp_write_relaxed(mpp, IEP2_REG_SRC_IMG_SIZE, reg); @@ -615,6 +617,10 @@ static int iep2_run(struct mpp_dev *mpp, static int iep2_irq(struct mpp_dev *mpp) { + u32 work_mode = mpp_read(mpp, IEP2_REG_WORK_MODE); + + if (!(work_mode & IEP2_REG_IEP2_MODE)) + return IRQ_NONE; mpp->irq_status = mpp_read(mpp, IEP2_REG_INT_STS); mpp_write(mpp, IEP2_REG_INT_CLR, 0xffffffff); diff --git a/drivers/video/rockchip/mpp/rockchip_iep2_regs.h b/drivers/video/rockchip/mpp/rockchip_iep2_regs.h index 77d09a8f871f..4c7b878df38f 100644 --- a/drivers/video/rockchip/mpp/rockchip_iep2_regs.h +++ b/drivers/video/rockchip/mpp/rockchip_iep2_regs.h @@ -21,6 +21,8 @@ #define IEP2_REG_DST_FMT(x) (((x) & 3) << 8) #define IEP2_REG_SRC_YUV_SWAP(x) (((x) & 3) << 4) #define IEP2_REG_SRC_FMT(x) ((x) & 3) +#define IEP2_REG_WORK_MODE 0x0008 +#define IEP2_REG_IEP2_MODE BIT(0) #define IEP2_REG_GATING_CTRL 0x0010 #define IEP2_REG_REG_CLK_ON BIT(11) #define IEP2_REG_DMA_CLK_ON BIT(10)