Re: [PATCH 1/7] drm: Add a helper function for printing a debugfs_regset32.
From: Paul Kocialkowski
Date: Fri Mar 22 2019 - 06:30:59 EST
Hi,
Le mercredi 20 fÃvrier 2019 Ã 13:03 -0800, Eric Anholt a Ãcrit :
> The debugfs_regset32 is nice to use for reducing boilerplate in
> dumping a bunch of regs in debugfs, but we also want to be able to
> print to dmesg them at runtime for driver debugging. drm_printer lets
> us format debugfs and the printk the same way.
Looks good to me!
Reviewed-by: Paul Kocialkowski <paul.kocialkowski@xxxxxxxxxxx>
Cheers,
Paul
> Signed-off-by: Eric Anholt <eric@xxxxxxxxxx>
> ---
> drivers/gpu/drm/drm_print.c | 16 ++++++++++++++++
> include/drm/drm_print.h | 2 ++
> 2 files changed, 18 insertions(+)
>
> diff --git a/drivers/gpu/drm/drm_print.c b/drivers/gpu/drm/drm_print.c
> index 0e7fc3e7dfb4..5ecc0f04cd0c 100644
> --- a/drivers/gpu/drm/drm_print.c
> +++ b/drivers/gpu/drm/drm_print.c
> @@ -253,3 +253,19 @@ void drm_err(const char *format, ...)
> va_end(args);
> }
> EXPORT_SYMBOL(drm_err);
> +
> +void drm_print_regset32(struct drm_printer *p, struct debugfs_regset32 *regset)
> +{
> + int namelen = 0;
> + int i;
> +
> + for (i = 0; i < regset->nregs; i++)
> + namelen = max(namelen, (int)strlen(regset->regs[i].name));
> +
> + for (i = 0; i < regset->nregs; i++) {
> + drm_printf(p, "%*s = 0x%08x\n",
> + namelen, regset->regs[i].name,
> + readl(regset->base + regset->regs[i].offset));
> + }
> +}
> +EXPORT_SYMBOL(drm_print_regset32);
> diff --git a/include/drm/drm_print.h b/include/drm/drm_print.h
> index afbc3beef089..3a4247319e63 100644
> --- a/include/drm/drm_print.h
> +++ b/include/drm/drm_print.h
> @@ -30,6 +30,7 @@
> #include <linux/printk.h>
> #include <linux/seq_file.h>
> #include <linux/device.h>
> +#include <linux/debugfs.h>
>
> /**
> * DOC: print
> @@ -84,6 +85,7 @@ void __drm_printfn_debug(struct drm_printer *p, struct va_format *vaf);
> __printf(2, 3)
> void drm_printf(struct drm_printer *p, const char *f, ...);
> void drm_puts(struct drm_printer *p, const char *str);
> +void drm_print_regset32(struct drm_printer *p, struct debugfs_regset32 *regset);
>
> __printf(2, 0)
> /**
--
Paul Kocialkowski, Bootlin
Embedded Linux and kernel engineering
https://bootlin.com