ASoC: add support for multiple cards/codecs in debugfs
In order to support multiple codecs on the same system in the debugfs the directory hierarchy need to be changed by adding directory per codec under the asoc direcorty: debugfs/asoc/{dev_name(socdev->dev)}-{codec->name}/codec_reg /dapm_pop_time /dapm/{widgets} With the original implementation only the debugfs files are only created for the first codec, other codecs loaded later would fail to create the debugfs files (since they are already exist). Furthermore in this situation any of the codecs has been removed, would cause the debugfs entries to disappear, regardless if the codec, which created them are still loaded (the one which loaded first). Signed-off-by: Peter Ujfalusi <peter.ujfalusi@nokia.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This commit is contained in:
parent
17c86a3207
commit
88439ac793
|
@ -413,6 +413,7 @@ struct snd_soc_codec {
|
|||
unsigned int num_dai;
|
||||
|
||||
#ifdef CONFIG_DEBUG_FS
|
||||
struct dentry *debugfs_codec_root;
|
||||
struct dentry *debugfs_reg;
|
||||
struct dentry *debugfs_pop_time;
|
||||
struct dentry *debugfs_dapm;
|
||||
|
|
|
@ -1254,21 +1254,35 @@ static const struct file_operations codec_reg_fops = {
|
|||
|
||||
static void soc_init_codec_debugfs(struct snd_soc_codec *codec)
|
||||
{
|
||||
char codec_root[128];
|
||||
|
||||
snprintf(codec_root, sizeof(codec_root),
|
||||
"%s-%s", dev_name(codec->socdev->dev), codec->name);
|
||||
|
||||
codec->debugfs_codec_root = debugfs_create_dir(codec_root,
|
||||
debugfs_root);
|
||||
if (!codec->debugfs_codec_root) {
|
||||
printk(KERN_WARNING
|
||||
"ASoC: Failed to create codec debugfs directory\n");
|
||||
return;
|
||||
}
|
||||
|
||||
codec->debugfs_reg = debugfs_create_file("codec_reg", 0644,
|
||||
debugfs_root, codec,
|
||||
&codec_reg_fops);
|
||||
codec->debugfs_codec_root,
|
||||
codec, &codec_reg_fops);
|
||||
if (!codec->debugfs_reg)
|
||||
printk(KERN_WARNING
|
||||
"ASoC: Failed to create codec register debugfs file\n");
|
||||
|
||||
codec->debugfs_pop_time = debugfs_create_u32("dapm_pop_time", 0744,
|
||||
debugfs_root,
|
||||
codec->debugfs_codec_root,
|
||||
&codec->pop_time);
|
||||
if (!codec->debugfs_pop_time)
|
||||
printk(KERN_WARNING
|
||||
"Failed to create pop time debugfs file\n");
|
||||
|
||||
codec->debugfs_dapm = debugfs_create_dir("dapm", debugfs_root);
|
||||
codec->debugfs_dapm = debugfs_create_dir("dapm",
|
||||
codec->debugfs_codec_root);
|
||||
if (!codec->debugfs_dapm)
|
||||
printk(KERN_WARNING
|
||||
"Failed to create DAPM debugfs directory\n");
|
||||
|
@ -1278,9 +1292,7 @@ static void soc_init_codec_debugfs(struct snd_soc_codec *codec)
|
|||
|
||||
static void soc_cleanup_codec_debugfs(struct snd_soc_codec *codec)
|
||||
{
|
||||
debugfs_remove_recursive(codec->debugfs_dapm);
|
||||
debugfs_remove(codec->debugfs_pop_time);
|
||||
debugfs_remove(codec->debugfs_reg);
|
||||
debugfs_remove_recursive(codec->debugfs_codec_root);
|
||||
}
|
||||
|
||||
#else
|
||||
|
|
Loading…
Reference in New Issue