Re: No sound since 5.4 on skl_n88l25_s4567

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On 2/17/20 9:10 AM, ojab // wrote:
On Thu, Jan 16, 2020 at 5:57 PM Mark Brown <broonie@xxxxxxxxxx> wrote:

On Wed, Jan 15, 2020 at 07:04:48PM -0600, Pierre-Louis Bossart wrote:

Maybe we could have some sort of boolean flag in the component->driver
definition and explicitly request a backwards-compatible behavior (e.g. for
all SKL/KBL machine drivers) when that driver is known to be flaky. There's
already things like 'fully_routed', maybe we can add something such as
'disable_route_check'?

A quirk for old stuff that can't be fixed sounds like a sensible
solution to this.

Any update on this?

Sorry, this is what I had in mind (not even compile-tested). I don't know if the checks need to be disabled twice.

diff --git a/include/sound/soc.h b/include/sound/soc.h
index f0e4f36f83bf..7a4643d87e39 100644
--- a/include/sound/soc.h
+++ b/include/sound/soc.h
@@ -1058,6 +1058,7 @@ struct snd_soc_card {
        const struct snd_soc_dapm_route *of_dapm_routes;
        int num_of_dapm_routes;
        bool fully_routed;
+       bool disable_route_checks;

        /* lists of probed devices belonging to this card */
        struct list_head component_dev_list;
diff --git a/sound/soc/intel/boards/skl_nau88l25_max98357a.c b/sound/soc/intel/boards/skl_nau88l25_max98357a.c
index e6de3b28d840..b57f55731390 100644
--- a/sound/soc/intel/boards/skl_nau88l25_max98357a.c
+++ b/sound/soc/intel/boards/skl_nau88l25_max98357a.c
@@ -644,6 +644,7 @@ static struct snd_soc_card skylake_audio_card = {
        .num_dapm_routes = ARRAY_SIZE(skylake_map),
        .fully_routed = true,
        .late_probe = skylake_card_late_probe,
+       .disable_route_checks = true,
 };

 static int skylake_audio_probe(struct platform_device *pdev)
diff --git a/sound/soc/intel/boards/skl_nau88l25_ssm4567.c b/sound/soc/intel/boards/skl_nau88l25_ssm4567.c
index c99c8b23e509..8f3b724fec27 100644
--- a/sound/soc/intel/boards/skl_nau88l25_ssm4567.c
+++ b/sound/soc/intel/boards/skl_nau88l25_ssm4567.c
@@ -687,6 +687,7 @@ static struct snd_soc_card skylake_audio_card = {
        .num_configs = ARRAY_SIZE(ssm4567_codec_conf),
        .fully_routed = true,
        .late_probe = skylake_card_late_probe,
+       .disable_route_checks = true,
 };

 static int skylake_audio_probe(struct platform_device *pdev)
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index 068d809c349a..d56cb655d89c 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -1257,7 +1257,10 @@ static int soc_probe_component(struct snd_soc_card *card,
                                      component->driver->dapm_routes,
                                      component->driver->num_dapm_routes);
        if (ret < 0)
-               goto err_probe;
+               if (card->disable_route_checks)
+ dev_info(component->dev, "Ignoring errors on snd_soc_dapm_add_routes\n");
+               else
+                       goto err_probe;

        /* see for_each_card_components */
        list_add(&component->card_list, &card->component_dev_list);
@@ -1939,7 +1942,10 @@ static int snd_soc_bind_card(struct snd_soc_card *card)
        ret = snd_soc_dapm_add_routes(&card->dapm, card->dapm_routes,
                                      card->num_dapm_routes);
        if (ret < 0)
-               goto probe_end;
+               if (card->disable_route_checks)
+ dev_info(component->dev, "Ignoring errors on snd_soc_dapm_add_routes\n");
+               else
+                       goto probe_end;

        ret = snd_soc_dapm_add_routes(&card->dapm, card->of_dapm_routes,
                                      card->num_of_dapm_routes);



[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Pulse Audio]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux