mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-06 19:08:57 +09:00
video: rockchip: rga3: optimize 'time' debug log
1. Add flush cache cost time 2. Fix wrong time-consuming statistics of set_reg Signed-off-by: Yu Qiaowei <cerf.yu@rock-chips.com> Change-Id: I35254e49cd18e49d3ac691fc06ff67d2e36d3149
This commit is contained in:
@@ -37,6 +37,7 @@ const char *rga_get_rotate_mode_str(uint8_t mode);
|
||||
const char *rga_get_blend_mode_str(enum rga_alpha_blend_mode mode);
|
||||
const char *rga_get_memory_type_str(uint8_t type);
|
||||
const char *rga_get_mmu_type_str(enum rga_mmu mmu_type);
|
||||
const char *rga_get_dma_data_direction_str(enum dma_data_direction dir);
|
||||
const char *rga_get_core_name(enum RGA_SCHEDULER_CORE core);
|
||||
|
||||
void rga_convert_addr(struct rga_img_info_t *img, bool before_vir_get_channel);
|
||||
|
||||
@@ -3053,7 +3053,7 @@ static int rga2_set_reg(struct rga_job *job, struct rga_scheduler_t *scheduler)
|
||||
|
||||
if (DEBUGGER_EN(TIME))
|
||||
pr_info("request[%d], set register cost time %lld us\n",
|
||||
job->request_id, ktime_us_delta(now, job->timestamp));
|
||||
job->request_id, ktime_us_delta(ktime_get(), now));
|
||||
|
||||
job->hw_running_time = now;
|
||||
job->hw_recoder_time = now;
|
||||
|
||||
@@ -633,6 +633,22 @@ const char *rga_get_mmu_type_str(enum rga_mmu mmu_type)
|
||||
}
|
||||
}
|
||||
|
||||
const char *rga_get_dma_data_direction_str(enum dma_data_direction dir)
|
||||
{
|
||||
switch (dir) {
|
||||
case DMA_BIDIRECTIONAL:
|
||||
return "bidirectional";
|
||||
case DMA_TO_DEVICE:
|
||||
return "to_device";
|
||||
case DMA_FROM_DEVICE:
|
||||
return "from_device";
|
||||
case DMA_NONE:
|
||||
return "none";
|
||||
default:
|
||||
return "unknown";
|
||||
}
|
||||
}
|
||||
|
||||
const char *rga_get_core_name(enum RGA_SCHEDULER_CORE core)
|
||||
{
|
||||
switch (core) {
|
||||
|
||||
@@ -1325,6 +1325,7 @@ static int rga_mm_sync_dma_sg_for_device(struct rga_internal_buffer *buffer,
|
||||
{
|
||||
struct sg_table *sgt;
|
||||
struct rga_scheduler_t *scheduler;
|
||||
ktime_t timestamp = ktime_get();
|
||||
|
||||
scheduler = buffer->dma_buffer->scheduler;
|
||||
if (scheduler == NULL) {
|
||||
@@ -1347,6 +1348,11 @@ static int rga_mm_sync_dma_sg_for_device(struct rga_internal_buffer *buffer,
|
||||
dma_sync_sg_for_device(scheduler->dev, sgt->sgl, sgt->orig_nents, dir);
|
||||
}
|
||||
|
||||
if (DEBUGGER_EN(TIME))
|
||||
pr_info("handle[%d], %s, flush CPU cache for device cost %lld us\n",
|
||||
buffer->handle, rga_get_dma_data_direction_str(dir),
|
||||
ktime_us_delta(ktime_get(), timestamp));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1356,6 +1362,7 @@ static int rga_mm_sync_dma_sg_for_cpu(struct rga_internal_buffer *buffer,
|
||||
{
|
||||
struct sg_table *sgt;
|
||||
struct rga_scheduler_t *scheduler;
|
||||
ktime_t timestamp = ktime_get();
|
||||
|
||||
scheduler = buffer->dma_buffer->scheduler;
|
||||
if (scheduler == NULL) {
|
||||
@@ -1378,6 +1385,11 @@ static int rga_mm_sync_dma_sg_for_cpu(struct rga_internal_buffer *buffer,
|
||||
dma_sync_sg_for_cpu(scheduler->dev, sgt->sgl, sgt->orig_nents, dir);
|
||||
}
|
||||
|
||||
if (DEBUGGER_EN(TIME))
|
||||
pr_info("handle[%d], %s, flush CPU cache for CPU cost %lld us\n",
|
||||
buffer->handle, rga_get_dma_data_direction_str(dir),
|
||||
ktime_us_delta(ktime_get(), timestamp));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -2287,6 +2299,7 @@ int rga_mm_import_buffer(struct rga_external_buffer *external_buffer,
|
||||
int ret = 0, new_id;
|
||||
struct rga_mm *mm;
|
||||
struct rga_internal_buffer *internal_buffer;
|
||||
ktime_t timestamp = ktime_get();
|
||||
|
||||
mm = rga_drvdata->mm;
|
||||
if (mm == NULL) {
|
||||
@@ -2348,7 +2361,12 @@ int rga_mm_import_buffer(struct rga_external_buffer *external_buffer,
|
||||
rga_mm_dump_buffer(internal_buffer);
|
||||
}
|
||||
|
||||
if (DEBUGGER_EN(TIME))
|
||||
pr_info("handle[%d], import buffer cost %lld us\n",
|
||||
internal_buffer->handle, ktime_us_delta(ktime_get(), timestamp));
|
||||
|
||||
mutex_unlock(&mm->lock);
|
||||
|
||||
return internal_buffer->handle;
|
||||
|
||||
FREE_INTERNAL_BUFFER:
|
||||
@@ -2362,6 +2380,7 @@ int rga_mm_release_buffer(uint32_t handle)
|
||||
{
|
||||
struct rga_mm *mm;
|
||||
struct rga_internal_buffer *internal_buffer;
|
||||
ktime_t timestamp = ktime_get();
|
||||
|
||||
mm = rga_drvdata->mm;
|
||||
if (mm == NULL) {
|
||||
@@ -2387,7 +2406,12 @@ int rga_mm_release_buffer(uint32_t handle)
|
||||
|
||||
kref_put(&internal_buffer->refcount, rga_mm_kref_release_buffer);
|
||||
|
||||
if (DEBUGGER_EN(TIME))
|
||||
pr_info("handle[%d], release buffer cost %lld us\n",
|
||||
handle, ktime_us_delta(ktime_get(), timestamp));
|
||||
|
||||
mutex_unlock(&mm->lock);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user