[alsa-devel] ASoC: Failed to create component debugfs directory
Fabio Estevam
festevam at gmail.com
Wed Feb 21 14:43:27 CET 2018
Hi Mark,
On Wed, Feb 21, 2018 at 10:02 AM, Mark Brown <broonie at kernel.org> wrote:
> It's a legit warning - we shouldn't really be creating two components
> for the same device. However this is a bit of a corner case as it's the
> dmaengine platform driver which is kind of a virtual device, it's not
> really the device that we use with DMA that's being represented but
> rather the link between that and the DMA controller.
>
> Does the below patch (completely untested) help here? It adds a prefix
> to the name for deduplication.
>
> diff --git a/sound/soc/soc-generic-dmaengine-pcm.c b/sound/soc/soc-generic-dmaengine-pcm.c
> index d53786498b61..d5a6eea64036 100644
> --- a/sound/soc/soc-generic-dmaengine-pcm.c
> +++ b/sound/soc/soc-generic-dmaengine-pcm.c
> @@ -431,6 +431,7 @@ int snd_dmaengine_pcm_register(struct device *dev,
> if (!pcm)
> return -ENOMEM;
>
> + pcm->platform.component.name_prefix = "dma";
Had to change it to pcm->component.name_prefix = "dma"; but still see
the warnings.
Here are the suggested change plus some additional debug lines:
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -303,6 +303,8 @@ static void soc_init_component_debugfs(struct
snd_soc_component *component)
if (!component->card->debugfs_card_root)
return;
+ pr_err("************** component name is %s\n", component->name);
+
if (component->debugfs_prefix) {
char *name;
@@ -318,6 +320,12 @@ static void soc_init_component_debugfs(struct
snd_soc_component *component)
component->card->debugfs_card_root);
}
+ if (component->debugfs_root) {
+ dev_warn(component->dev,
+ "ASoC: Succeded to create component debugfs
directory\n");
+ return;
+ }
+
if (!component->debugfs_root) {
dev_warn(component->dev,
"ASoC: Failed to create component debugfs directory\n");
diff --git a/sound/soc/soc-generic-dmaengine-pcm.c
b/sound/soc/soc-generic-dmaengine-pcm.c
index c07d5c7..16995dd 100644
--- a/sound/soc/soc-generic-dmaengine-pcm.c
+++ b/sound/soc/soc-generic-dmaengine-pcm.c
@@ -442,6 +442,7 @@ int snd_dmaengine_pcm_register(struct device *dev,
if (!pcm)
return -ENOMEM;
+ pcm->component.name_prefix = "dma";
pcm->config = config;
pcm->flags = flags;
and the log looks like this:
[ 2.062294] sgtl5000 1-000a: sgtl5000 revision 0x11
[ 2.069367] sgtl5000 1-000a: Using internal LDO instead of VDDD:
check ER1 erratum
[ 2.113827] fsl-asoc-card sound: ASoC: CPU DAI (null) not registered
[ 2.123954] fsl-ssi-dai 2028000.ssi: No cache defaults, reading back from HW
[ 2.326451] [drm] Cannot find any crtc or sizes
[ 2.501744] ************** component name is 2028000.ssi
[ 2.507217] fsl-ssi-dai 2028000.ssi: ASoC: Succeded to create
component debugfs directory
[ 2.515429] ************** component name is sgtl5000.1-000a
[ 2.521194] sgtl5000 1-000a: ASoC: Succeded to create component
debugfs directory
[ 2.544264] ************** component name is 2028000.ssi
[ 2.549879] fsl-ssi-dai 2028000.ssi: ASoC: Failed to create
component debugfs directory
[ 2.565605] imx-sgtl5000 sound: sgtl5000 <-> 2028000.ssi mapping ok
[ 2.584074] ************** component name is 2004000.spdif
[ 2.589721] fsl-spdif-dai 2004000.spdif: ASoC: Succeded to create
component debugfs directory
[ 2.598437] ************** component name is 2004000.spdif
[ 2.603978] fsl-spdif-dai 2004000.spdif: ASoC: Failed to create
component debugfs directory
[ 2.616340] imx-spdif sound-spdif: snd-soc-dummy-dai <->
2004000.spdif mapping ok
Looks like the 'dma' prefix did not take effect, as we are still
trying to register the same name twice.
Thanks
More information about the Alsa-devel
mailing list