video: rockchip: rga3: modify 'msg' debug log

Signed-off-by: Yu Qiaowei <cerf.yu@rock-chips.com>
Change-Id: I457297760e3ee725f31b957e5ff8df4bfad75a7e
This commit is contained in:
Yu Qiaowei
2024-08-26 11:33:17 +08:00
committed by Tao Huang
parent 6bfd57a670
commit 7dbb2695f0
6 changed files with 152 additions and 103 deletions

View File

@@ -66,6 +66,8 @@ int rga_get_pixel_stride_from_format(uint32_t format);
const char *rga_get_format_name(uint32_t format);
const char *rga_get_render_mode_str(uint8_t mode);
const char *rga_get_store_mode_str(uint32_t mode);
const char *rga_get_interp_str(uint8_t interp);
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);

View File

@@ -2621,10 +2621,11 @@ static void rga2_soft_reset(struct rga_scheduler_t *scheduler)
}
if (i == RGA_RESET_TIMEOUT)
rga_err("RAG2 core[%d] soft reset timeout.\n", scheduler->core);
rga_err("%s[%#x] soft reset timeout.\n",
rga_get_core_name(scheduler->core), scheduler->core);
else
rga_log("RGA2 core[%d] soft reset complete.\n", scheduler->core);
rga_log("%s[%#x] soft reset complete.\n",
rga_get_core_name(scheduler->core), scheduler->core);
}
static int rga2_check_param(struct rga_job *job,

View File

@@ -1741,11 +1741,13 @@ static void rga3_soft_reset(struct rga_scheduler_t *scheduler)
}
if (i == RGA_RESET_TIMEOUT)
rga_err("RGA3 core[%d] soft reset timeout. SYS_CTRL[0x%x], RO_SRST[0x%x]\n",
scheduler->core, rga_read(RGA3_SYS_CTRL, scheduler),
rga_err("%s[%#x] soft reset timeout. SYS_CTRL[0x%x], RO_SRST[0x%x]\n",
rga_get_core_name(scheduler->core), scheduler->core,
rga_read(RGA3_SYS_CTRL, scheduler),
rga_read(RGA3_RO_SRST, scheduler));
else
rga_log("RGA3 core[%d] soft reset complete.\n", scheduler->core);
rga_log("%s[%#x] soft reset complete.\n",
rga_get_core_name(scheduler->core), scheduler->core);
}
static int rga3_scale_check(struct rga_job *job, const struct rga3_req *req)

View File

@@ -534,6 +534,42 @@ const char *rga_get_render_mode_str(uint8_t mode)
}
}
const char *rga_get_store_mode_str(uint32_t mode)
{
switch (mode) {
case RGA_RASTER_MODE:
return "raster";
case RGA_FBC_MODE:
return "afbc16x16";
case RGA_TILE_MODE:
return "tile8x8";
case RGA_TILE4x4_MODE:
return "tile4x4";
case RGA_RKFBC_MODE:
return "rkfbc64x4";
case RGA_AFBC32x8_MODE:
return "afbc32x8";
default:
return "unknown";
}
}
const char *rga_get_interp_str(uint8_t interp)
{
switch (interp) {
case RGA_INTERP_DEFAULT:
return "default";
case RGA_INTERP_LINEAR:
return "bi-linear";
case RGA_INTERP_BICUBIC:
return "bi-cubic";
case RGA_INTERP_AVERAGE:
return "average_filter";
default:
return "unknown";
}
}
const char *rga_get_rotate_mode_str(uint8_t mode)
{
switch (mode) {
@@ -824,51 +860,68 @@ void rga_dump_external_buffer(struct rga_external_buffer *buffer)
rga_dump_memory_parm(&buffer->memory_parm);
}
static void rga_dump_image_info(struct rga_request *request, const char *name,
struct rga_img_info_t *img, uint8_t handle_flag, int need_mmu)
{
if (handle_flag) {
if (img->uv_addr && img->v_addr)
rga_req_log(request, "%s: handle[y,uv,v] = [%ld(%#lx), %ld(%#lx), %ld(%#lx)], mode = %s\n",
name,
(unsigned long)img->yrgb_addr, (unsigned long)img->yrgb_addr,
(unsigned long)img->uv_addr, (unsigned long)img->uv_addr,
(unsigned long)img->v_addr, (unsigned long)img->v_addr,
rga_get_store_mode_str(img->rd_mode));
else if (img->uv_addr)
rga_req_log(request, "%s: handle[y,uv] = [%ld(%#lx), %ld(%#lx)], mode = %s\n",
name,
(unsigned long)img->yrgb_addr, (unsigned long)img->yrgb_addr,
(unsigned long)img->uv_addr, (unsigned long)img->uv_addr,
rga_get_store_mode_str(img->rd_mode));
else
rga_req_log(request, "%s: handle = %ld(%#lx), mode = %s\n",
name,
(unsigned long)img->yrgb_addr, (unsigned long)img->yrgb_addr,
rga_get_store_mode_str(img->rd_mode));
} else {
if (img->yrgb_addr)
rga_req_log(request, "%s: fd = %ld(%#lx), mode = %s\n",
name,
(unsigned long)img->yrgb_addr, (unsigned long)img->yrgb_addr,
rga_get_store_mode_str(img->rd_mode));
else if (img->uv_addr)
rga_req_log(request, "%s: %s = %#lx, mode = %s\n",
name,
need_mmu ? "virt_addr" : "phys_addr", (unsigned long)img->uv_addr,
rga_get_store_mode_str(img->rd_mode));
}
rga_req_log(request, "%s: rect[x,y,w,h] = [%d, %d, %d, %d], stride[w,h] = [%d, %d], format = %s(%#x)\n",
name,
img->x_offset, img->y_offset, img->act_w, img->act_h, img->vir_w, img->vir_h,
rga_get_format_name(img->format), img->format);
}
void rga_dump_req(struct rga_request *request, struct rga_req *req)
{
rga_req_log(request, "render_mode = %d, bitblit_mode=%d, rotate_mode = %d\n",
rga_req_log(request, "render_mode = %d, bitblit_mode = %d, rotate_mode = %d\n",
req->render_mode, req->bsfilter_flag,
req->rotate_mode);
rga_req_log(request, "src: y = %lx uv = %lx v = %lx aw = %d ah = %d vw = %d vh = %d\n",
(unsigned long)req->src.yrgb_addr,
(unsigned long)req->src.uv_addr,
(unsigned long)req->src.v_addr,
req->src.act_w, req->src.act_h,
req->src.vir_w, req->src.vir_h);
rga_req_log(request, "src: xoff = %d, yoff = %d, format = 0x%x, rd_mode = %d\n",
req->src.x_offset, req->src.y_offset,
req->src.format, req->src.rd_mode);
rga_dump_image_info(request, "src", &req->src, req->handle_flag,
(req->mmu_info.mmu_flag >> 8) & 1);
if (req->pat.yrgb_addr != 0 || req->pat.uv_addr != 0 || req->pat.v_addr != 0)
rga_dump_image_info(request, "pat", &req->pat, req->handle_flag,
(req->mmu_info.mmu_flag >> 9) & 1);
rga_dump_image_info(request, "dst", &req->dst, req->handle_flag,
(req->mmu_info.mmu_flag >> 10) & 1);
if (req->pat.yrgb_addr != 0 || req->pat.uv_addr != 0
|| req->pat.v_addr != 0) {
rga_req_log(request, "pat: y=%lx uv=%lx v=%lx aw=%d ah=%d vw=%d vh=%d\n",
(unsigned long)req->pat.yrgb_addr,
(unsigned long)req->pat.uv_addr,
(unsigned long)req->pat.v_addr,
req->pat.act_w, req->pat.act_h,
req->pat.vir_w, req->pat.vir_h);
rga_req_log(request, "pat: xoff = %d yoff = %d, format = 0x%x, rd_mode = %d\n",
req->pat.x_offset, req->pat.y_offset,
req->pat.format, req->pat.rd_mode);
}
rga_req_log(request, "dst: y=%lx uv=%lx v=%lx aw=%d ah=%d vw=%d vh=%d\n",
(unsigned long)req->dst.yrgb_addr,
(unsigned long)req->dst.uv_addr,
(unsigned long)req->dst.v_addr,
req->dst.act_w, req->dst.act_h,
req->dst.vir_w, req->dst.vir_h);
rga_req_log(request, "dst: xoff = %d, yoff = %d, format = 0x%x, rd_mode = %d\n",
req->dst.x_offset, req->dst.y_offset,
req->dst.format, req->dst.rd_mode);
rga_req_log(request, "mmu: mmu_flag=%x en=%x\n",
rga_req_log(request, "mmu: mmu_flag = %#x en = %#x\n",
req->mmu_info.mmu_flag, req->mmu_info.mmu_en);
rga_req_log(request, "alpha: rop_mode = %x\n", req->alpha_rop_mode);
rga_req_log(request, "yuv2rgb mode is %x\n", req->yuv2rgb_mode);
rga_req_log(request, "imterplotion: horiz = 0x%x, verti = 0x%x\n",
req->interp.horiz, req->interp.verti);
rga_req_log(request, "set core = %d, priority = %d, in_fence_fd = %d\n",
req->core, req->priority, req->in_fence_fd);
rga_req_log(request, "alpha: rop_mode = %#x\n", req->alpha_rop_mode);
rga_req_log(request, "csc = %#x\n", req->yuv2rgb_mode);
rga_req_log(request, "imterplotion: horiz = %s(%#x), verti = %s(%#x)\n",
rga_get_interp_str(req->interp.horiz), req->interp.horiz,
rga_get_interp_str(req->interp.verti), req->interp.verti);
rga_req_log(request, "core_mask = %#x, priority = %d, in_fence = %d(%#x)\n",
req->core, req->priority, req->in_fence_fd, req->in_fence_fd);
}

View File

@@ -151,33 +151,6 @@ static struct rga_job *rga_job_alloc(struct rga_req *rga_command_base)
return job;
}
static void rga_job_dump_info(struct rga_job *job)
{
rga_job_log(job, "job: reqeust_id = %d, priority = %d, core = %d\n",
job->request_id, job->priority, job->core);
}
void rga_job_scheduler_dump_info(struct rga_scheduler_t *scheduler)
{
struct rga_job *job_pos;
lockdep_assert_held(&scheduler->irq_lock);
rga_log("===============================================================\n");
rga_log("%s core = %d job_count = %d status = %d\n",
dev_driver_string(scheduler->dev),
scheduler->core, scheduler->job_count, scheduler->status);
if (scheduler->running_job)
rga_job_dump_info(scheduler->running_job);
list_for_each_entry(job_pos, &scheduler->todo_list, head) {
rga_job_dump_info(job_pos);
}
rga_log("===============================================================\n");
}
static int rga_job_run(struct rga_job *job, struct rga_scheduler_t *scheduler)
{
int ret = 0;
@@ -198,10 +171,6 @@ static int rga_job_run(struct rga_job *job, struct rga_scheduler_t *scheduler)
set_bit(RGA_JOB_STATE_RUNNING, &job->state);
/* for debug */
if (DEBUGGER_EN(MSG))
rga_job_dump_info(job);
return ret;
}
@@ -901,6 +870,9 @@ int rga_request_commit(struct rga_request *request)
int i = 0;
struct rga_job *job;
if (DEBUGGER_EN(MSG))
rga_req_log(request, "commit process: %s\n", request->session->pname);
for (i = 0; i < request->task_count; i++) {
struct rga_req *req = &(request->task_list[i]);

View File

@@ -287,7 +287,7 @@ int rga_job_assign(struct rga_job *job)
if (rga_base->core > RGA_NONE_CORE) {
if (rga_base->core > RGA_CORE_MASK) {
rga_job_err(job, "invalid setting core by user\n");
goto finish;
return -1;
} else if (rga_base->core & RGA_CORE_MASK)
specified_cores = rga_base->core;
}
@@ -304,7 +304,8 @@ int rga_job_assign(struct rga_job *job)
continue;
if (DEBUGGER_EN(MSG))
rga_job_log(job, "start policy on core = %d", scheduler->core);
rga_job_log(job, "start policy on %s(%#x)",
rga_get_core_name(scheduler->core), scheduler->core);
if (scheduler->data->mmu == RGA_MMU &&
job->flags & RGA_JOB_UNSUPPORT_RGA_MMU) {
@@ -316,7 +317,8 @@ int rga_job_assign(struct rga_job *job)
if (feature > 0) {
if (!(feature & data->feature)) {
if (DEBUGGER_EN(MSG))
rga_job_log(job, "core = %d, break on feature\n",
rga_job_log(job, "%s(%#x), break on feature\n",
rga_get_core_name(scheduler->core),
scheduler->core);
continue;
}
@@ -327,50 +329,67 @@ int rga_job_assign(struct rga_job *job)
if (src1->yrgb_addr > 0) {
if (!(src0->rd_mode & data->win[0].rd_mode)) {
if (DEBUGGER_EN(MSG))
rga_job_log(job, "core[%#x], src0 break on rd_mode[%#x]\n",
scheduler->core, src0->rd_mode);
rga_job_log(job, "%s(%#x), src0 break on %s(%#x)\n",
rga_get_core_name(scheduler->core),
scheduler->core,
rga_get_store_mode_str(src0->rd_mode),
src0->rd_mode);
continue;
}
if (!(src1->rd_mode & data->win[1].rd_mode)) {
if (DEBUGGER_EN(MSG))
rga_job_log(job, "core[%#x], src1 break on rd_mode[%#x]\n",
scheduler->core, src1->rd_mode);
rga_job_log(job, "%s(%#x), src1 break on %s(%#x)\n",
rga_get_core_name(scheduler->core),
scheduler->core,
rga_get_store_mode_str(src1->rd_mode),
src1->rd_mode);
continue;
}
if (!(dst->rd_mode & data->win[2].rd_mode)) {
if (DEBUGGER_EN(MSG))
rga_job_log(job, "core[%#x], dst break on rd_mode[%#x]\n",
scheduler->core, dst->rd_mode);
rga_job_log(job, "%s(%#x), dst break on %s(%#x)\n",
rga_get_core_name(scheduler->core),
scheduler->core,
rga_get_store_mode_str(dst->rd_mode),
dst->rd_mode);
continue;
}
} else {
if (!(src0->rd_mode & data->win[0].rd_mode)) {
if (DEBUGGER_EN(MSG))
rga_job_log(job, "core[%#x], src break on rd_mode[%#x]\n",
scheduler->core, src0->rd_mode);
rga_job_log(job, "%s(%#x), src break on %s(%#x)\n",
rga_get_core_name(scheduler->core),
scheduler->core,
rga_get_store_mode_str(src0->rd_mode),
src0->rd_mode);
continue;
}
if (!(dst->rd_mode & data->win[2].rd_mode)) {
if (DEBUGGER_EN(MSG))
rga_job_log(job, "core[%#x], dst break on rd_mode[%#x]\n",
scheduler->core, dst->rd_mode);
rga_job_log(job, "%s(%#x), dst break on %s(%#x)\n",
rga_get_core_name(scheduler->core),
scheduler->core,
rga_get_store_mode_str(dst->rd_mode),
dst->rd_mode);
continue;
}
}
if (!rga_check_scale(job, data, rga_base)) {
if (DEBUGGER_EN(MSG))
rga_job_log(job, "core = %d, break on rga_check_scale",
rga_job_log(job, "%s(%#x), break on rga_check_scale",
rga_get_core_name(scheduler->core),
scheduler->core);
continue;
}
if (!rga_check_channel(job, data, src0, "src0", true, 0)) {
if (DEBUGGER_EN(MSG))
rga_job_log(job, "core = %d, break on src0",
rga_job_log(job, "%s(%#x), break on src0",
rga_get_core_name(scheduler->core),
scheduler->core);
continue;
}
@@ -378,7 +397,8 @@ int rga_job_assign(struct rga_job *job)
if (src1->yrgb_addr > 0) {
if (!rga_check_channel(job, data, src1, "src1", true, 1)) {
if (DEBUGGER_EN(MSG))
rga_job_log(job, "core = %d, break on src1",
rga_job_log(job, "%s(%#x), break on src1",
rga_get_core_name(scheduler->core),
scheduler->core);
continue;
}
@@ -387,14 +407,16 @@ int rga_job_assign(struct rga_job *job)
if (!rga_check_channel(job, data, dst, "dst", false, 2)) {
if (DEBUGGER_EN(MSG))
rga_job_log(job, "core = %d, break on dst",
rga_job_log(job, "%s(%#x), break on dst",
rga_get_core_name(scheduler->core),
scheduler->core);
continue;
}
if (!rga_check_csc(data, rga_base)) {
if (DEBUGGER_EN(MSG))
rga_job_log(job, "core = %d, break on rga_check_csc",
rga_job_log(job, "%s(%#x), break on rga_check_csc",
rga_get_core_name(scheduler->core),
scheduler->core);
continue;
}
@@ -402,13 +424,9 @@ int rga_job_assign(struct rga_job *job)
optional_cores |= scheduler->core;
}
if (DEBUGGER_EN(MSG))
rga_job_log(job, "optional_cores = %d\n", optional_cores);
if (optional_cores == 0) {
core = -1;
rga_job_err(job, "invalid function policy\n");
goto finish;
rga_job_err(job, "no core match\n");
return -1;
}
for (i = 0; i < rga_drvdata->num_of_scheduler; i++) {
@@ -437,9 +455,10 @@ int rga_job_assign(struct rga_job *job)
}
/* TODO: need consider full load */
finish:
if (DEBUGGER_EN(MSG))
rga_job_log(job, "assign core: %d\n", core);
rga_job_log(job, "matched cores = %#x, assign core: %s(%#x)\n",
optional_cores,
rga_get_core_name(core), core);
return core;
}