From 0691bb0b691ba54f30e982bac0eaac430f215eca Mon Sep 17 00:00:00 2001 From: Herman Chen Date: Thu, 26 Aug 2021 09:48:22 +0800 Subject: [PATCH] video: rockchip: mpp: rkvdec2: Add task timing NOTE: On link mode the timing is start from driver push task to hardware linked queue. So the timing is not actual the hardware timing on multi decoder case. echo 0x100 > /sys/module/rk_vcodec/parameters/mpp_dev_debug This command for hardware performance test is still valid. But the hardware timing output is accurate only on single decoder case. Signed-off-by: Herman Chen Change-Id: I4db4a35955cb1e42e3f250583e83d88c2fde5872 --- drivers/video/rockchip/mpp/mpp_rkvdec2.c | 1 + drivers/video/rockchip/mpp/mpp_rkvdec2_link.c | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/video/rockchip/mpp/mpp_rkvdec2.c b/drivers/video/rockchip/mpp/mpp_rkvdec2.c index a3857847e698..882b2dad8e32 100644 --- a/drivers/video/rockchip/mpp/mpp_rkvdec2.c +++ b/drivers/video/rockchip/mpp/mpp_rkvdec2.c @@ -304,6 +304,7 @@ static int rkvdec2_run(struct mpp_dev *mpp, struct mpp_task *mpp_task) } /* init current task */ mpp->cur_task = mpp_task; + mpp_time_record(mpp_task); /* Flush the register before the start the device */ wmb(); mpp_write(mpp, RKVDEC_REG_START_EN_BASE, task->reg[reg_en] | RKVDEC_START_EN); diff --git a/drivers/video/rockchip/mpp/mpp_rkvdec2_link.c b/drivers/video/rockchip/mpp/mpp_rkvdec2_link.c index 2fab9449a601..a12deb17997c 100644 --- a/drivers/video/rockchip/mpp/mpp_rkvdec2_link.c +++ b/drivers/video/rockchip/mpp/mpp_rkvdec2_link.c @@ -447,6 +447,7 @@ static int rkvdec_link_send_task_to_hw(struct rkvdec_link_dev *dev, set_bit(TASK_STATE_START, &task_ddr->state); schedule_delayed_work(&task_ddr->timeout_work, msecs_to_jiffies(200)); + mpp_time_record(task_ddr); } } else { if (task_total) @@ -566,6 +567,7 @@ static int rkvdec_link_isr_recv_task(struct mpp_dev *mpp, continue; } + mpp_time_diff(mpp_task); task = to_rkvdec2_task(mpp_task); regs = table_base + idx * link_dec->link_reg_count; irq_status = regs[info->tb_reg_int]; @@ -1173,7 +1175,6 @@ static int mpp_task_queue(struct mpp_dev *mpp, struct mpp_task *task) } rkvdec2_link_power_on(mpp); - mpp_time_record(task); mpp_debug(DEBUG_TASK_INFO, "pid %d, start hw %s\n", task->session->pid, dev_name(mpp->dev));