video: rockchip: mpp: Add partition timing function

On encoder slice output mode the timing of each slice can be recorded.

Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Change-Id: Iceac5b8488dbfa85068e1460709f278cc2d3ebe4
This commit is contained in:
Herman Chen
2022-03-08 14:38:20 +08:00
committed by Tao Huang
parent 21b6c3c6b4
commit b158513048
3 changed files with 29 additions and 9 deletions

View File

@@ -2213,22 +2213,37 @@ int mpp_set_grf(struct mpp_grf_info *grf_info)
int mpp_time_record(struct mpp_task *task)
{
if (mpp_debug_unlikely(DEBUG_TIMING) && task)
ktime_get_real_ts64(&task->start);
if (mpp_debug_unlikely(DEBUG_TIMING) && task) {
task->start = ktime_get();
task->part = task->start;
}
return 0;
}
int mpp_time_part_diff(struct mpp_task *task)
{
ktime_t end;
struct mpp_dev *mpp = mpp_get_task_used_device(task, task->session);
end = ktime_get();
mpp_debug(DEBUG_PART_TIMING, "%s: session %d:%d part time: %lld us\n",
dev_name(mpp->dev), task->session->pid, task->session->index,
ktime_us_delta(end, task->part));
task->part = end;
return 0;
}
int mpp_time_diff(struct mpp_task *task)
{
struct timespec64 end;
ktime_t end;
struct mpp_dev *mpp = mpp_get_task_used_device(task, task->session);
ktime_get_real_ts64(&end);
mpp_debug(DEBUG_TIMING, "%s: pid: %d, session: %p, time: %lld us\n",
dev_name(mpp->dev), task->session->pid, task->session,
(end.tv_sec - task->start.tv_sec) * 1000000 +
(end.tv_nsec - task->start.tv_nsec)/1000);
end = ktime_get();
mpp_debug(DEBUG_TIMING, "%s: session %d:%d task time: %lld us\n",
dev_name(mpp->dev), task->session->pid, task->session->index,
ktime_us_delta(end, task->start));
return 0;
}

View File

@@ -442,7 +442,8 @@ struct mpp_task {
struct kref ref;
/* record context running start time */
struct timespec64 start;
ktime_t start;
ktime_t part;
/* hardware info for current task */
struct mpp_hw_info *hw_info;
u32 task_index;
@@ -655,6 +656,7 @@ int mpp_set_grf(struct mpp_grf_info *grf_info);
int mpp_time_record(struct mpp_task *task);
int mpp_time_diff(struct mpp_task *task);
int mpp_time_part_diff(struct mpp_task *task);
int mpp_write_req(struct mpp_dev *mpp, u32 *regs,
u32 start_idx, u32 end_idx, u32 en_idx);

View File

@@ -56,6 +56,9 @@
#define PRINT_FUNCTION 0x80000000
#define PRINT_LINE 0x40000000
/* reuse old debug bit flag */
#define DEBUG_PART_TIMING 0x00000080
extern unsigned int mpp_dev_debug;
#define mpp_debug_unlikely(type) \