video: rockchip: mpp: rkvenc2: Dump status reg on timeout

Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Change-Id: If69e18d1597fd40206d991eb962110f78fc8d3f2
This commit is contained in:
Herman Chen
2022-04-22 17:55:31 +08:00
committed by Tao Huang
parent 8fd4cab89d
commit 89ff0a2a21
3 changed files with 25 additions and 0 deletions

View File

@@ -1998,6 +1998,15 @@ static int mpp_iommu_handle(struct iommu_domain *iommu,
return 0;
}
void mpp_reg_show(struct mpp_dev *mpp, u32 offset)
{
if (!mpp)
return;
dev_err(mpp->dev, "reg[%03d]: %04x: 0x%08x\n",
offset >> 2, offset, mpp_read_relaxed(mpp, offset));
}
/* The device will do more probing work after this */
int mpp_dev_probe(struct mpp_dev *mpp,
struct platform_device *pdev)

View File

@@ -634,6 +634,7 @@ int mpp_task_dump_mem_region(struct mpp_dev *mpp,
int mpp_task_dump_reg(struct mpp_dev *mpp,
struct mpp_task *task);
int mpp_task_dump_hw_reg(struct mpp_dev *mpp);
void mpp_reg_show(struct mpp_dev *mpp, u32 offset);
void mpp_free_task(struct kref *ref);
void mpp_session_deinit(struct mpp_session *session);

View File

@@ -1626,6 +1626,9 @@ static int rkvenc2_task_default_process(struct mpp_dev *mpp,
return ret;
}
#define RKVENC2_TIMEOUT_DUMP_REG_START (0x5100)
#define RKVENC2_TIMEOUT_DUMP_REG_END (0x5160)
static void rkvenc2_task_timeout_process(struct mpp_session *session,
struct mpp_task *task)
{
@@ -1636,6 +1639,18 @@ static void rkvenc2_task_timeout_process(struct mpp_session *session,
session->pid, session->index, atomic_read(&session->task_count),
task->task_id, kref_read(&task->ref));
if (task->mpp) {
struct mpp_dev *mpp = task->mpp;
u32 start = RKVENC2_TIMEOUT_DUMP_REG_START;
u32 end = RKVENC2_TIMEOUT_DUMP_REG_END;
u32 offset;
dev_err(mpp->dev, "core %d dump timeout status:\n", mpp->core_id);
for (offset = start; offset < end; offset += sizeof(u32))
mpp_reg_show(mpp, offset);
}
rkvenc2_task_pop_pending(task);
}