diff mbox series

[01/55] media: rkisp1: debug: Add dump file in debugfs for MI buffer registers

Message ID 20220614191127.3420492-2-paul.elder@ideasonboard.com (mailing list archive)
State New, archived
Headers show
Series media: rkisp1: Cleanups and add support for i.MX8MP | expand

Commit Message

Paul Elder June 14, 2022, 7:10 p.m. UTC
Add a register dump file in debugfs for some of the buffer-related
registers in MI, for the base address, the size, and the offset. Also
dump the appropriate shadow registers.

Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
---
 .../platform/rockchip/rkisp1/rkisp1-debug.c   | 21 +++++++++++++++++++
 1 file changed, 21 insertions(+)

Comments

Laurent Pinchart June 15, 2022, 10:41 p.m. UTC | #1
Hi Paul,

Thank you for the patch.

On Wed, Jun 15, 2022 at 04:10:33AM +0900, Paul Elder wrote:
> Add a register dump file in debugfs for some of the buffer-related
> registers in MI, for the base address, the size, and the offset. Also
> dump the appropriate shadow registers.
> 
> Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
> ---
>  .../platform/rockchip/rkisp1/rkisp1-debug.c   | 21 +++++++++++++++++++
>  1 file changed, 21 insertions(+)
> 
> diff --git a/drivers/media/platform/rockchip/rkisp1/rkisp1-debug.c b/drivers/media/platform/rockchip/rkisp1/rkisp1-debug.c
> index e76dc2b164b6..1a59c00fabdd 100644
> --- a/drivers/media/platform/rockchip/rkisp1/rkisp1-debug.c
> +++ b/drivers/media/platform/rockchip/rkisp1/rkisp1-debug.c
> @@ -121,6 +121,24 @@ static int rkisp1_debug_dump_rsz_regs_show(struct seq_file *m, void *p)
>  }
>  DEFINE_SHOW_ATTRIBUTE(rkisp1_debug_dump_rsz_regs);
>  
> +static int rkisp1_debug_dump_mi_mp_y_offs_cnt_show(struct seq_file *m, void *p)
> +{
> +	static const struct rkisp1_debug_register registers[] = {
> +		RKISP1_DEBUG_REG(MI_MP_Y_BASE_AD_INIT),
> +		RKISP1_DEBUG_REG(MI_MP_Y_BASE_AD_INIT2),
> +		RKISP1_DEBUG_REG(MI_MP_Y_BASE_AD_SHD),
> +		RKISP1_DEBUG_REG(MI_MP_Y_SIZE_INIT),
> +		RKISP1_DEBUG_REG(MI_MP_Y_SIZE_INIT),
> +		RKISP1_DEBUG_REG(MI_MP_Y_SIZE_SHD),
> +		RKISP1_DEBUG_REG(MI_MP_Y_OFFS_CNT_SHD),
> +		{ /* Sentinel */ },
> +	};
> +	struct rkisp1_device *rkisp1 = m->private;
> +
> +	return rkisp1_debug_dump_regs(rkisp1, m, 0, registers);
> +}
> +DEFINE_SHOW_ATTRIBUTE(rkisp1_debug_dump_mi_mp_y_offs_cnt);
> +
>  #define RKISP1_DEBUG_DATA_COUNT_BINS	32
>  #define RKISP1_DEBUG_DATA_COUNT_STEP	(4096 / RKISP1_DEBUG_DATA_COUNT_BINS)
>  
> @@ -214,6 +232,9 @@ void rkisp1_debug_init(struct rkisp1_device *rkisp1)
>  	debugfs_create_file("srsz", 0444, regs_dir,
>  			    &rkisp1->resizer_devs[RKISP1_SELFPATH],
>  			    &rkisp1_debug_dump_rsz_regs_fops);
> +
> +	debugfs_create_file("mi_mp_y_bufs", 0444, regs_dir, rkisp1,
> +			    &rkisp1_debug_dump_mi_mp_y_offs_cnt_fops);

That's a very specialized file. I wonder if we should call it just
"mi_mp" if it needs to be extended later with other memory interface
registers for the main path. Or maybe even just "mi", to cover the self
path too ? The latter may be a tad too generic. What do you think ?

>  }
>  
>  void rkisp1_debug_cleanup(struct rkisp1_device *rkisp1)
Laurent Pinchart June 25, 2022, 5:59 p.m. UTC | #2
Hi Paul,

On Thu, Jun 16, 2022 at 01:41:56AM +0300, Laurent Pinchart wrote:
> On Wed, Jun 15, 2022 at 04:10:33AM +0900, Paul Elder wrote:
> > Add a register dump file in debugfs for some of the buffer-related
> > registers in MI, for the base address, the size, and the offset. Also
> > dump the appropriate shadow registers.
> > 
> > Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
> > ---
> >  .../platform/rockchip/rkisp1/rkisp1-debug.c   | 21 +++++++++++++++++++
> >  1 file changed, 21 insertions(+)
> > 
> > diff --git a/drivers/media/platform/rockchip/rkisp1/rkisp1-debug.c b/drivers/media/platform/rockchip/rkisp1/rkisp1-debug.c
> > index e76dc2b164b6..1a59c00fabdd 100644
> > --- a/drivers/media/platform/rockchip/rkisp1/rkisp1-debug.c
> > +++ b/drivers/media/platform/rockchip/rkisp1/rkisp1-debug.c
> > @@ -121,6 +121,24 @@ static int rkisp1_debug_dump_rsz_regs_show(struct seq_file *m, void *p)
> >  }
> >  DEFINE_SHOW_ATTRIBUTE(rkisp1_debug_dump_rsz_regs);
> >  
> > +static int rkisp1_debug_dump_mi_mp_y_offs_cnt_show(struct seq_file *m, void *p)
> > +{
> > +	static const struct rkisp1_debug_register registers[] = {
> > +		RKISP1_DEBUG_REG(MI_MP_Y_BASE_AD_INIT),
> > +		RKISP1_DEBUG_REG(MI_MP_Y_BASE_AD_INIT2),
> > +		RKISP1_DEBUG_REG(MI_MP_Y_BASE_AD_SHD),
> > +		RKISP1_DEBUG_REG(MI_MP_Y_SIZE_INIT),
> > +		RKISP1_DEBUG_REG(MI_MP_Y_SIZE_INIT),
> > +		RKISP1_DEBUG_REG(MI_MP_Y_SIZE_SHD),
> > +		RKISP1_DEBUG_REG(MI_MP_Y_OFFS_CNT_SHD),
> > +		{ /* Sentinel */ },
> > +	};
> > +	struct rkisp1_device *rkisp1 = m->private;
> > +
> > +	return rkisp1_debug_dump_regs(rkisp1, m, 0, registers);
> > +}
> > +DEFINE_SHOW_ATTRIBUTE(rkisp1_debug_dump_mi_mp_y_offs_cnt);
> > +
> >  #define RKISP1_DEBUG_DATA_COUNT_BINS	32
> >  #define RKISP1_DEBUG_DATA_COUNT_STEP	(4096 / RKISP1_DEBUG_DATA_COUNT_BINS)
> >  
> > @@ -214,6 +232,9 @@ void rkisp1_debug_init(struct rkisp1_device *rkisp1)
> >  	debugfs_create_file("srsz", 0444, regs_dir,
> >  			    &rkisp1->resizer_devs[RKISP1_SELFPATH],
> >  			    &rkisp1_debug_dump_rsz_regs_fops);
> > +
> > +	debugfs_create_file("mi_mp_y_bufs", 0444, regs_dir, rkisp1,
> > +			    &rkisp1_debug_dump_mi_mp_y_offs_cnt_fops);
> 
> That's a very specialized file. I wonder if we should call it just
> "mi_mp" if it needs to be extended later with other memory interface
> registers for the main path. Or maybe even just "mi", to cover the self
> path too ? The latter may be a tad too generic. What do you think ?

Ping

> >  }
> >  
> >  void rkisp1_debug_cleanup(struct rkisp1_device *rkisp1)
Paul Elder July 4, 2022, 3:46 a.m. UTC | #3
Hi Laurent,

Sorry for the delay.

On Sat, Jun 25, 2022 at 08:59:48PM +0300, Laurent Pinchart wrote:
> Hi Paul,
> 
> On Thu, Jun 16, 2022 at 01:41:56AM +0300, Laurent Pinchart wrote:
> > On Wed, Jun 15, 2022 at 04:10:33AM +0900, Paul Elder wrote:
> > > Add a register dump file in debugfs for some of the buffer-related
> > > registers in MI, for the base address, the size, and the offset. Also
> > > dump the appropriate shadow registers.
> > > 
> > > Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
> > > ---
> > >  .../platform/rockchip/rkisp1/rkisp1-debug.c   | 21 +++++++++++++++++++
> > >  1 file changed, 21 insertions(+)
> > > 
> > > diff --git a/drivers/media/platform/rockchip/rkisp1/rkisp1-debug.c b/drivers/media/platform/rockchip/rkisp1/rkisp1-debug.c
> > > index e76dc2b164b6..1a59c00fabdd 100644
> > > --- a/drivers/media/platform/rockchip/rkisp1/rkisp1-debug.c
> > > +++ b/drivers/media/platform/rockchip/rkisp1/rkisp1-debug.c
> > > @@ -121,6 +121,24 @@ static int rkisp1_debug_dump_rsz_regs_show(struct seq_file *m, void *p)
> > >  }
> > >  DEFINE_SHOW_ATTRIBUTE(rkisp1_debug_dump_rsz_regs);
> > >  
> > > +static int rkisp1_debug_dump_mi_mp_y_offs_cnt_show(struct seq_file *m, void *p)
> > > +{
> > > +	static const struct rkisp1_debug_register registers[] = {
> > > +		RKISP1_DEBUG_REG(MI_MP_Y_BASE_AD_INIT),
> > > +		RKISP1_DEBUG_REG(MI_MP_Y_BASE_AD_INIT2),
> > > +		RKISP1_DEBUG_REG(MI_MP_Y_BASE_AD_SHD),
> > > +		RKISP1_DEBUG_REG(MI_MP_Y_SIZE_INIT),
> > > +		RKISP1_DEBUG_REG(MI_MP_Y_SIZE_INIT),
> > > +		RKISP1_DEBUG_REG(MI_MP_Y_SIZE_SHD),
> > > +		RKISP1_DEBUG_REG(MI_MP_Y_OFFS_CNT_SHD),
> > > +		{ /* Sentinel */ },
> > > +	};
> > > +	struct rkisp1_device *rkisp1 = m->private;
> > > +
> > > +	return rkisp1_debug_dump_regs(rkisp1, m, 0, registers);
> > > +}
> > > +DEFINE_SHOW_ATTRIBUTE(rkisp1_debug_dump_mi_mp_y_offs_cnt);
> > > +
> > >  #define RKISP1_DEBUG_DATA_COUNT_BINS	32
> > >  #define RKISP1_DEBUG_DATA_COUNT_STEP	(4096 / RKISP1_DEBUG_DATA_COUNT_BINS)
> > >  
> > > @@ -214,6 +232,9 @@ void rkisp1_debug_init(struct rkisp1_device *rkisp1)
> > >  	debugfs_create_file("srsz", 0444, regs_dir,
> > >  			    &rkisp1->resizer_devs[RKISP1_SELFPATH],
> > >  			    &rkisp1_debug_dump_rsz_regs_fops);
> > > +
> > > +	debugfs_create_file("mi_mp_y_bufs", 0444, regs_dir, rkisp1,
> > > +			    &rkisp1_debug_dump_mi_mp_y_offs_cnt_fops);
> > 
> > That's a very specialized file. I wonder if we should call it just
> > "mi_mp" if it needs to be extended later with other memory interface
> > registers for the main path. Or maybe even just "mi", to cover the self
> > path too ? The latter may be a tad too generic. What do you think ?

I think mi_mp would be good. imo mi might be a tad too generic and get
crowded with the self path registers (probably).


Paul

> 
> Ping
>
> 
> > >  }
> > >  
> > >  void rkisp1_debug_cleanup(struct rkisp1_device *rkisp1)
diff mbox series

Patch

diff --git a/drivers/media/platform/rockchip/rkisp1/rkisp1-debug.c b/drivers/media/platform/rockchip/rkisp1/rkisp1-debug.c
index e76dc2b164b6..1a59c00fabdd 100644
--- a/drivers/media/platform/rockchip/rkisp1/rkisp1-debug.c
+++ b/drivers/media/platform/rockchip/rkisp1/rkisp1-debug.c
@@ -121,6 +121,24 @@  static int rkisp1_debug_dump_rsz_regs_show(struct seq_file *m, void *p)
 }
 DEFINE_SHOW_ATTRIBUTE(rkisp1_debug_dump_rsz_regs);
 
+static int rkisp1_debug_dump_mi_mp_y_offs_cnt_show(struct seq_file *m, void *p)
+{
+	static const struct rkisp1_debug_register registers[] = {
+		RKISP1_DEBUG_REG(MI_MP_Y_BASE_AD_INIT),
+		RKISP1_DEBUG_REG(MI_MP_Y_BASE_AD_INIT2),
+		RKISP1_DEBUG_REG(MI_MP_Y_BASE_AD_SHD),
+		RKISP1_DEBUG_REG(MI_MP_Y_SIZE_INIT),
+		RKISP1_DEBUG_REG(MI_MP_Y_SIZE_INIT),
+		RKISP1_DEBUG_REG(MI_MP_Y_SIZE_SHD),
+		RKISP1_DEBUG_REG(MI_MP_Y_OFFS_CNT_SHD),
+		{ /* Sentinel */ },
+	};
+	struct rkisp1_device *rkisp1 = m->private;
+
+	return rkisp1_debug_dump_regs(rkisp1, m, 0, registers);
+}
+DEFINE_SHOW_ATTRIBUTE(rkisp1_debug_dump_mi_mp_y_offs_cnt);
+
 #define RKISP1_DEBUG_DATA_COUNT_BINS	32
 #define RKISP1_DEBUG_DATA_COUNT_STEP	(4096 / RKISP1_DEBUG_DATA_COUNT_BINS)
 
@@ -214,6 +232,9 @@  void rkisp1_debug_init(struct rkisp1_device *rkisp1)
 	debugfs_create_file("srsz", 0444, regs_dir,
 			    &rkisp1->resizer_devs[RKISP1_SELFPATH],
 			    &rkisp1_debug_dump_rsz_regs_fops);
+
+	debugfs_create_file("mi_mp_y_bufs", 0444, regs_dir, rkisp1,
+			    &rkisp1_debug_dump_mi_mp_y_offs_cnt_fops);
 }
 
 void rkisp1_debug_cleanup(struct rkisp1_device *rkisp1)