mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 10:31:46 +09:00
video: rockchip: rga3: "reg" debug log add iommu readback register printing
Update driver version to 1.3.10 Signed-off-by: Yu Qiaowei <cerf.yu@rock-chips.com> Change-Id: I79b641e8b41d43c451988f278596f229e9e0fd2c
This commit is contained in:
@@ -8,6 +8,7 @@
|
||||
#define RGA2_CSC_REG_BASE 0x060
|
||||
#define RGA2_OTHER_REG_BASE 0x090
|
||||
#define RGA2_CMD_REG_BASE 0x100
|
||||
#define RGA2_IOMMU_REG_BASE 0xf00
|
||||
|
||||
/* sys reg */
|
||||
#define RGA2_SYS_CTRL 0x000
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
|
||||
#define RGA3_SYS_REG_BASE 0x000
|
||||
#define RGA3_CMD_REG_BASE 0x100
|
||||
#define RGA3_IOMMU_REG_BASE 0xf00
|
||||
|
||||
/* sys reg */
|
||||
#define RGA3_SYS_CTRL 0x000
|
||||
|
||||
@@ -88,7 +88,7 @@
|
||||
|
||||
#define DRIVER_MAJOR_VERISON 1
|
||||
#define DRIVER_MINOR_VERSION 3
|
||||
#define DRIVER_REVISION_VERSION 9
|
||||
#define DRIVER_REVISION_VERSION 10
|
||||
#define DRIVER_PATCH_VERSION
|
||||
|
||||
#define DRIVER_VERSION (STR(DRIVER_MAJOR_VERISON) "." STR(DRIVER_MINOR_VERSION) \
|
||||
|
||||
@@ -3035,6 +3035,27 @@ static void rga2_dump_read_back_cmd_reg(struct rga_job *job, struct rga_schedule
|
||||
cmd_reg[2 + i * 4], cmd_reg[3 + i * 4]);
|
||||
}
|
||||
|
||||
static void rga2_dump_read_back_iommu_reg(struct rga_job *job, struct rga_scheduler_t *scheduler)
|
||||
{
|
||||
int i;
|
||||
unsigned long flags;
|
||||
uint32_t cmd_reg[12] = {0};
|
||||
|
||||
spin_lock_irqsave(&scheduler->irq_lock, flags);
|
||||
|
||||
for (i = 0; i < 12; i++)
|
||||
cmd_reg[i] = rga_read(RGA2_IOMMU_REG_BASE + i * 4, scheduler);
|
||||
|
||||
spin_unlock_irqrestore(&scheduler->irq_lock, flags);
|
||||
|
||||
rga_job_log(job, "IOMMU_READ_BACK_REG\n");
|
||||
for (i = 0; i < 3; i++)
|
||||
rga_job_log(job, "0x%04x : %.8x %.8x %.8x %.8x\n",
|
||||
RGA2_IOMMU_REG_BASE + i * 0x10,
|
||||
cmd_reg[0 + i * 4], cmd_reg[1 + i * 4],
|
||||
cmd_reg[2 + i * 4], cmd_reg[3 + i * 4]);
|
||||
}
|
||||
|
||||
static void rga2_dump_read_back_reg(struct rga_job *job, struct rga_scheduler_t *scheduler)
|
||||
{
|
||||
rga2_dump_read_back_sys_reg(job, scheduler);
|
||||
@@ -3042,6 +3063,7 @@ static void rga2_dump_read_back_reg(struct rga_job *job, struct rga_scheduler_t
|
||||
if (scheduler->data->version > 0)
|
||||
rga2_dump_read_back_other_reg(job, scheduler);
|
||||
rga2_dump_read_back_cmd_reg(job, scheduler);
|
||||
rga2_dump_read_back_iommu_reg(job, scheduler);
|
||||
}
|
||||
|
||||
static void rga2_set_pre_intr_reg(struct rga_job *job, struct rga_scheduler_t *scheduler)
|
||||
@@ -3132,6 +3154,7 @@ static int rga2_set_reg(struct rga_job *job, struct rga_scheduler_t *scheduler)
|
||||
RGA2_CMD_REG_BASE + i * 0x10,
|
||||
cmd[0 + i * 4], cmd[1 + i * 4],
|
||||
cmd[2 + i * 4], cmd[3 + i * 4]);
|
||||
rga2_dump_read_back_iommu_reg(scheduler->running_job, scheduler);
|
||||
}
|
||||
|
||||
spin_lock_irqsave(&scheduler->irq_lock, flags);
|
||||
|
||||
@@ -2089,6 +2089,27 @@ static void rga3_dump_read_back_reg(struct rga_job *job, struct rga_scheduler_t
|
||||
cmd_reg[2 + i * 4], cmd_reg[3 + i * 4]);
|
||||
}
|
||||
|
||||
static void rga3_dump_read_back_iommu_reg(struct rga_job *job, struct rga_scheduler_t *scheduler)
|
||||
{
|
||||
int i;
|
||||
unsigned long flags;
|
||||
uint32_t cmd_reg[12] = {0};
|
||||
|
||||
spin_lock_irqsave(&scheduler->irq_lock, flags);
|
||||
|
||||
for (i = 0; i < 12; i++)
|
||||
cmd_reg[i] = rga_read(RGA3_IOMMU_REG_BASE + i * 4, scheduler);
|
||||
|
||||
spin_unlock_irqrestore(&scheduler->irq_lock, flags);
|
||||
|
||||
rga_job_log(job, "IOMMU_READ_BACK_REG\n");
|
||||
for (i = 0; i < 3; i++)
|
||||
rga_job_log(job, "0x%04x : %.8x %.8x %.8x %.8x\n",
|
||||
RGA3_IOMMU_REG_BASE + i * 0x10,
|
||||
cmd_reg[0 + i * 4], cmd_reg[1 + i * 4],
|
||||
cmd_reg[2 + i * 4], cmd_reg[3 + i * 4]);
|
||||
}
|
||||
|
||||
static int rga3_set_reg(struct rga_job *job, struct rga_scheduler_t *scheduler)
|
||||
{
|
||||
int i;
|
||||
@@ -2117,6 +2138,8 @@ static int rga3_set_reg(struct rga_job *job, struct rga_scheduler_t *scheduler)
|
||||
RGA3_CMD_REG_BASE + i * 0x10,
|
||||
cmd[0 + i * 4], cmd[1 + i * 4],
|
||||
cmd[2 + i * 4], cmd[3 + i * 4]);
|
||||
|
||||
rga3_dump_read_back_iommu_reg(job, scheduler);
|
||||
}
|
||||
|
||||
/* All CMD finish int */
|
||||
@@ -2151,6 +2174,7 @@ static int rga3_set_reg(struct rga_job *job, struct rga_scheduler_t *scheduler)
|
||||
if (DEBUGGER_EN(REG)) {
|
||||
rga3_dump_read_back_sys_reg(job, scheduler);
|
||||
rga3_dump_read_back_reg(job, scheduler);
|
||||
rga3_dump_read_back_iommu_reg(job, scheduler);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
Reference in New Issue
Block a user