mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-06 10:58:48 +09:00
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:
@@ -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);
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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]);
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user