[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