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