[PATCH v2 3/3] usb: musb: dsps, debugfs files

Felipe Balbi balbi at ti.com
Mon Oct 14 18:50:39 EDT 2013


Hi,

On Mon, Oct 14, 2013 at 03:50:39PM +0200, Markus Pargmann wrote:
> debugfs files to show the contents of important dsps registers.
> 
> Signed-off-by: Markus Pargmann <mpa at pengutronix.de>
> ---
>  drivers/usb/musb/musb_dsps.c | 87 ++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 87 insertions(+)
> 
> diff --git a/drivers/usb/musb/musb_dsps.c b/drivers/usb/musb/musb_dsps.c
> index 189e52c..43b22ab 100644
> --- a/drivers/usb/musb/musb_dsps.c
> +++ b/drivers/usb/musb/musb_dsps.c
> @@ -46,6 +46,8 @@
>  #include <linux/of_irq.h>
>  #include <linux/usb/of.h>
>  
> +#include <linux/debugfs.h>
> +
>  #include "musb_core.h"
>  
>  static const struct of_device_id musb_dsps_of_match[];
> @@ -121,6 +123,61 @@ struct dsps_glue {
>  	unsigned long last_timer;    /* last timer data for each instance */
>  };
>  
> +#if IS_ENABLED(CONFIG_DEBUG_FS)
> +
> +struct musb_register_map {
> +	char			*name;
> +	unsigned		offset;
> +};
> +
> +static const struct musb_register_map musb_regmap[] = {
> +	{ "revision",		0x00 },
> +	{ "control",		0x14 },
> +	{ "status",		0x18 },
> +	{ "eoi",		0x24 },
> +	{ "intr0_stat",		0x30 },
> +	{ "intr1_stat",		0x34 },
> +	{ "intr0_set",		0x38 },
> +	{ "intr1_set",		0x3c },
> +	{ "txmode",		0x70 },
> +	{ "rxmode",		0x74 },
> +	{ "autoreq",		0xd0 },
> +	{ "srpfixtime",		0xd4 },
> +	{ "tdown",		0xd8 },
> +	{ "phy_utmi",		0xe0 },
> +	{ "mode",		0xe8 },
> +	{  }	/* Terminating Entry */
> +};
> +
> +static int musb_regdump_show(struct seq_file *s, void *unused)
> +{
> +	struct musb		*musb = s->private;
> +	unsigned		i;
> +
> +	seq_puts(s, "MUSB (M)HDRC dsps Register Dump\n");
> +
> +	for (i = 0; i < ARRAY_SIZE(musb_regmap); i++) {
> +		u32 val = musb_readl(musb->ctrl_base, musb_regmap[i].offset);
> +		seq_printf(s, "%-12s: %08x\n", musb_regmap[i].name, val);
> +	}
> +
> +	return 0;
> +}
> +
> +static int musb_regdump_open(struct inode *inode, struct file *file)
> +{
> +	return single_open(file, musb_regdump_show, inode->i_private);
> +}
> +
> +static const struct file_operations musb_regdump_fops = {
> +	.open			= musb_regdump_open,
> +	.read			= seq_read,
> +	.llseek			= seq_lseek,
> +	.release		= single_release,
> +};
> +
> +#endif /* IS_ENABLED(CONFIG_DEBUG_FS) */
> +
>  /**
>   * dsps_musb_enable - enable interrupts
>   */
> @@ -348,6 +405,31 @@ out:
>  	return ret;
>  }
>  
> +#if IS_ENABLED(CONFIG_DEBUG_FS)
> +static int dsps_musb_dbg_init(struct musb *musb)
> +{
> +	struct dentry *root;
> +	struct dentry *file;
> +	char buf[128];
> +
> +	sprintf(buf, "%s.dsps", dev_name(musb->controller));
> +	root = debugfs_create_dir(buf, NULL);
> +	if (!root)
> +		return -ENOMEM;
> +
> +	file = debugfs_create_file("regdump", S_IRUGO, root, musb,
> +			&musb_regdump_fops);

there is a generic regdump utility for debugfs, please use that instead.
At least drivers/usb/dwc3/debugfs is using it.

-- 
balbi
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20131014/2004655a/attachment-0001.sig>


More information about the linux-arm-kernel mailing list