From ac1b4ffcdcf823358d34196d1ffbbd1023fd85e4 Mon Sep 17 00:00:00 2001 From: "zhenteng.tian" Date: Mon, 11 Dec 2023 09:53:34 +0800 Subject: [PATCH] di: ensure no extra ndkb in STATE_REG_STEP1. [1/1] PD#SWPL-147624 Problem: di_test_thread keeps awake consuming much CPU resource. Solution: ensure no extra ndkb in STATE_REG_STEP1. Verify: SC2 Change-Id: Ic87805610826bc9de20a8af80e89d3431bacac12 Signed-off-by: zhenteng.tian --- drivers/media/di_multi/di_task.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/media/di_multi/di_task.c b/drivers/media/di_multi/di_task.c index 1f9147daa..c1b5992d9 100644 --- a/drivers/media/di_multi/di_task.c +++ b/drivers/media/di_multi/di_task.c @@ -216,6 +216,7 @@ void task_polling_cmd_keep(unsigned int ch, unsigned int top_sts) //ary 2020-12-09 ulong flags = 0; struct di_ch_s *pch; struct di_mng_s *pbm;// = get_bufmng(); + struct div2_mm_s *mm; // if (pbm->cma_flg_run) // return; @@ -233,10 +234,11 @@ void task_polling_cmd_keep(unsigned int ch, unsigned int top_sts) *so FCC switch channel, the other two channel not work but also has di buffer. *We need free the buffer when EDI_TOP_STATE_REG_STEP1 (reg but no vf) */ + mm = dim_mm_get(ch); if (top_sts != EDI_TOP_STATE_IDLE && top_sts != EDI_TOP_STATE_READY && - top_sts != EDI_TOP_STATE_BYPASS && - top_sts != EDI_TOP_STATE_REG_STEP1) + top_sts != EDI_TOP_STATE_BYPASS && + (top_sts != EDI_TOP_STATE_REG_STEP1 || !mm->fcc_value)) return; //ary 2020-12-09 spin_lock_irqsave(&plist_lock, flags);