media: rockchip: isp: add rkisp_buf_dbg

buf queue to set u64 data and buf done to check it.

Change-Id: If8e2e1d2b2f782a84dbbfb08b70c497ad23fec4b
Signed-off-by: Cai YiWei <cyw@rock-chips.com>
This commit is contained in:
Cai YiWei
2024-01-24 09:59:06 +08:00
committed by Tao Huang
parent 14646892b7
commit 55370d45a7
8 changed files with 58 additions and 12 deletions

View File

@@ -1597,13 +1597,19 @@ static void rkisp_buf_done_task(unsigned long arg)
spin_unlock_irqrestore(&stream->vbq_lock, lock_flags);
while (!list_empty(&local_list)) {
u64 *data;
buf = list_first_entry(&local_list,
struct rkisp_buffer, queue);
list_del(&buf->queue);
data = buf->vaddr[0];
v4l2_dbg(2, rkisp_debug, &stream->ispdev->v4l2_dev,
"stream:%d seq:%d buf:0x%x done\n",
"stream:%d seq:%d buf done:0x%x\n",
stream->id, buf->vb.sequence, buf->buff_addr[0]);
if (rkisp_buf_dbg && data && *data == RKISP_DATA_CHECK)
v4l2_dbg(0, rkisp_debug, &stream->ispdev->v4l2_dev,
"seq:%d data no update:%llx %llx\n",
buf->vb.sequence, *data, *(data + 1));
vb2_buffer_done(&buf->vb.vb2_buf,
stream->streaming ? VB2_BUF_STATE_DONE : VB2_BUF_STATE_ERROR);
}

View File

@@ -1638,7 +1638,12 @@ static void rkisp_buf_queue(struct vb2_buffer *vb)
memset(ispbuf->buff_addr, 0, sizeof(ispbuf->buff_addr));
for (i = 0; i < isp_fmt->mplanes; i++) {
vb2_plane_vaddr(vb, i);
ispbuf->vaddr[i] = vb2_plane_vaddr(vb, i);
if (rkisp_buf_dbg && ispbuf->vaddr[i]) {
u64 *data = ispbuf->vaddr[i];
*data = RKISP_DATA_CHECK;
}
if (stream->ispdev->hw_dev->is_dma_sg_ops) {
sgt = vb2_dma_sg_plane_desc(vb, i);
ispbuf->buff_addr[i] = sg_dma_address(sgt->sgl);

View File

@@ -1574,7 +1574,12 @@ static void rkisp_buf_queue(struct vb2_buffer *vb)
memset(ispbuf->buff_addr, 0, sizeof(ispbuf->buff_addr));
for (i = 0; i < isp_fmt->mplanes; i++) {
vb2_plane_vaddr(vb, i);
ispbuf->vaddr[i] = vb2_plane_vaddr(vb, i);
if (rkisp_buf_dbg && ispbuf->vaddr[i]) {
u64 *data = ispbuf->vaddr[i];
*data = RKISP_DATA_CHECK;
}
if (stream->ispdev->hw_dev->is_dma_sg_ops) {
sgt = vb2_dma_sg_plane_desc(vb, i);
ispbuf->buff_addr[i] = sg_dma_address(sgt->sgl);

View File

@@ -1165,7 +1165,12 @@ static void rkisp_buf_queue(struct vb2_buffer *vb)
memset(ispbuf->buff_addr, 0, sizeof(ispbuf->buff_addr));
for (i = 0; i < isp_fmt->mplanes; i++) {
vb2_plane_vaddr(vb, i);
ispbuf->vaddr[i] = vb2_plane_vaddr(vb, i);
if (rkisp_buf_dbg && ispbuf->vaddr[i]) {
u64 *data = ispbuf->vaddr[i];
*data = RKISP_DATA_CHECK;
}
if (stream->ispdev->hw_dev->is_dma_sg_ops) {
sgt = vb2_dma_sg_plane_desc(vb, i);
ispbuf->buff_addr[i] = sg_dma_address(sgt->sgl);

View File

@@ -1667,7 +1667,11 @@ static void rkisp_buf_queue(struct vb2_buffer *vb)
memset(ispbuf->buff_addr, 0, sizeof(ispbuf->buff_addr));
for (i = 0; i < isp_fmt->mplanes; i++) {
ispbuf->vaddr[i] = vb2_plane_vaddr(vb, i);
if (rkisp_buf_dbg && ispbuf->vaddr[i]) {
u64 *data = ispbuf->vaddr[i];
*data = RKISP_DATA_CHECK;
}
if (stream->ispdev->hw_dev->is_dma_sg_ops) {
sgt = vb2_dma_sg_plane_desc(vb, i);
ispbuf->buff_addr[i] = sg_dma_address(sgt->sgl);

View File

@@ -57,7 +57,7 @@
#define RKISP_PLANE_CR 2
#define RKISP_EMDDATA_FIFO_MAX 4
#define RKISP_DMATX_CHECK 0xA5A5A5A5
#define RKISP_DATA_CHECK 0xA5A5A5A5
#define RKISP_MOTION_DECT_TS_SIZE 16
@@ -137,6 +137,7 @@ struct rkisp_dummy_buffer {
extern int rkisp_debug;
extern bool rkisp_monitor;
extern bool rkisp_irq_dbg;
extern bool rkisp_buf_dbg;
extern u64 rkisp_debug_reg;
extern struct platform_driver rkisp_plat_drv;

View File

@@ -67,6 +67,10 @@ bool rkisp_irq_dbg;
module_param_named(irq_dbg, rkisp_irq_dbg, bool, 0644);
MODULE_PARM_DESC(irq_dbg, "rkisp interrupt runtime");
bool rkisp_buf_dbg;
module_param_named(buf_dbg, rkisp_buf_dbg, bool, 0644);
MODULE_PARM_DESC(buf_dbg, "rkisp check output buf");
static bool rkisp_rdbk_auto;
module_param_named(rdbk_auto, rkisp_rdbk_auto, bool, 0644);
MODULE_PARM_DESC(irq_dbg, "rkisp and vicap auto readback mode");

View File

@@ -20,10 +20,8 @@ struct rkisp_rockit_buffer {
void *mpi_buf;
struct list_head queue;
int buf_id;
union {
u32 buff_addr;
void *vaddr;
};
u32 buff_addr;
void *vaddr;
};
static struct rkisp_stream *rkisp_rockit_get_stream(struct rockit_cfg *input_rockit_cfg)
@@ -158,6 +156,14 @@ int rkisp_rockit_buf_queue(struct rockit_cfg *input_rockit_cfg)
} else {
isprk_buf->buff_addr = *((u32 *)g_ops->cookie(mem));
}
if (rkisp_buf_dbg) {
u64 *data;
isprk_buf->vaddr = g_ops->vaddr(mem);
data = isprk_buf->vaddr;
if (data)
*data = RKISP_DATA_CHECK;
}
get_dma_buf(input_rockit_cfg->buf);
isprk_buf->mpi_mem = mem;
@@ -232,10 +238,19 @@ int rkisp_rockit_buf_done(struct rkisp_stream *stream, int cmd)
rockit_cfg->frame.u32TimeRef = stream->curr_buf->vb.sequence;
v4l2_dbg(2, rkisp_debug, &dev->v4l2_dev,
"%s stream:%d seq:%d buf:0x%x done\n",
__func__, stream->id,
"stream:%d seq:%d rockit buf done:0x%x\n",
stream->id,
stream->curr_buf->vb.sequence,
stream->curr_buf->buff_addr[0]);
if (rkisp_buf_dbg) {
u64 *data = isprk_buf->vaddr;
if (data && *data == RKISP_DATA_CHECK)
v4l2_info(&dev->v4l2_dev,
"rockit seq:%d data no update:%llx %llx\n",
stream->curr_buf->vb.sequence,
*data, *(data + 1));
}
} else {
if (stream->ispdev->cap_dev.wrap_line &&
stream->id == RKISP_STREAM_MP) {
@@ -495,6 +510,7 @@ int rkisp_rockit_buf_free(struct rkisp_stream *stream)
g_ops->unmap_dmabuf(isprk_buf->mpi_mem);
g_ops->detach_dmabuf(isprk_buf->mpi_mem);
dma_buf_put(isprk_buf->dmabuf);
isprk_buf->vaddr = NULL;
}
kfree(stream_cfg->rkisp_buff[i]);
stream_cfg->rkisp_buff[i] = NULL;