disp: msm: sde: fix dsc/vdc register dump

DSC and VDC-M sub-block registers are not on contiguous
address range. This change allows dumping the registers
for each individual sub-block.

Change-Id: I06dfc64562211370a0e29f6fc1134351c47722f6
Signed-off-by: Abhijit Kulkarni <kabhijit@codeaurora.org>
这个提交包含在:
Abhijit Kulkarni
2020-02-24 19:13:10 -08:00
父节点 65d27833bd
当前提交 e3a078c712
修改 3 个文件,包含 81 行新增19 行删除

查看文件

@@ -240,8 +240,50 @@ struct sde_hw_dsc *sde_hw_dsc_init(enum sde_dsc idx,
c->caps = cfg;
if (test_bit(SDE_DSC_HW_REV_1_1, &c->caps->features)) {
_setup_dsc_ops(&c->ops, c->caps->features);
sde_dbg_reg_register_dump_range(SDE_DBG_NAME, cfg->name,
c->hw.blk_off,
c->hw.blk_off + c->hw.length,
c->hw.xin_id);
if ((c->idx == DSC_0) &&
test_bit(SDE_DSC_OUTPUT_CTRL, &cfg->features)) {
dsc_ctl_offset = DSC_CTL(c->idx);
sde_dbg_reg_register_dump_range(SDE_DBG_NAME,
"dsc_ctl",
c->hw.blk_off + dsc_ctl_offset,
c->hw.blk_off + dsc_ctl_offset +
DSC_CTL_BLOCK_SIZE,
c->hw.xin_id);
}
} else if (test_bit(SDE_DSC_HW_REV_1_2, &c->caps->features)) {
char blk_name[32];
sde_dsc1_2_setup_ops(&c->ops, c->caps->features);
sde_dbg_reg_register_dump_range(SDE_DBG_NAME, cfg->name,
c->hw.blk_off,
c->hw.blk_off + c->hw.length,
c->hw.xin_id);
snprintf(blk_name, sizeof(blk_name), "dsc_enc_%u",
c->idx - DSC_0);
sde_dbg_reg_register_dump_range(SDE_DBG_NAME,
blk_name,
c->hw.blk_off + c->caps->sblk->enc.base,
c->hw.blk_off + c->caps->sblk->enc.base +
c->caps->sblk->enc.len,
c->hw.xin_id);
snprintf(blk_name, sizeof(blk_name), "dsc_ctl_%u",
c->idx - DSC_0);
sde_dbg_reg_register_dump_range(SDE_DBG_NAME,
blk_name,
c->hw.blk_off + c->caps->sblk->ctl.base,
c->hw.blk_off + c->caps->sblk->ctl.base +
c->caps->sblk->ctl.len,
c->hw.xin_id);
} else {
SDE_ERROR("failed to setup ops\n");
goto blk_init_error;
@@ -253,17 +295,7 @@ struct sde_hw_dsc *sde_hw_dsc_init(enum sde_dsc idx,
goto blk_init_error;
}
sde_dbg_reg_register_dump_range(SDE_DBG_NAME, cfg->name, c->hw.blk_off,
c->hw.blk_off + c->hw.length, c->hw.xin_id);
if ((c->idx == DSC_0) &&
test_bit(SDE_DSC_OUTPUT_CTRL, &cfg->features)) {
dsc_ctl_offset = DSC_CTL(c->idx);
sde_dbg_reg_register_dump_range(SDE_DBG_NAME, "dsc_ctl",
c->hw.blk_off + dsc_ctl_offset,
c->hw.blk_off + dsc_ctl_offset + DSC_CTL_BLOCK_SIZE,
c->hw.xin_id);
}
return c;