]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ASoC: intel: sof_sdw: Prepare for configuration without a jack
authorMaciej Strozek <mstrozek@opensource.cirrus.com>
Fri, 3 Apr 2026 08:23:35 +0000 (09:23 +0100)
committerMark Brown <broonie@kernel.org>
Fri, 3 Apr 2026 12:09:25 +0000 (13:09 +0100)
In certain setups of cs42l43 UAJ function may be removed from ACPI and
physically unconnected. Prepare a driver for that configuration by
setting a system clock in the speaker path too.

Signed-off-by: Maciej Strozek <mstrozek@opensource.cirrus.com>
Link: https://patch.msgid.link/20260403082335.40798-1-mstrozek@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/sdw_utils/soc_sdw_cs42l43.c

index 2685ff4f09320603f478463d53bffddc5e70945b..4a451b9d4f13743f35943d40bad867dad349ef42 100644 (file)
@@ -107,6 +107,7 @@ EXPORT_SYMBOL_NS(asoc_sdw_cs42l43_hs_rtd_init, "SND_SOC_SDW_UTILS");
 
 int asoc_sdw_cs42l43_spk_rtd_init(struct snd_soc_pcm_runtime *rtd, struct snd_soc_dai *dai)
 {
+       struct snd_soc_component *component = snd_soc_rtd_to_codec(rtd, 0)->component;
        struct snd_soc_card *card = rtd->card;
        struct snd_soc_dapm_context *dapm = snd_soc_card_to_dapm(card);
        struct asoc_sdw_mc_private *ctx = snd_soc_card_get_drvdata(card);
@@ -131,8 +132,15 @@ int asoc_sdw_cs42l43_spk_rtd_init(struct snd_soc_pcm_runtime *rtd, struct snd_so
 
        ret = snd_soc_dapm_add_routes(dapm, cs42l43_spk_map,
                                      ARRAY_SIZE(cs42l43_spk_map));
-       if (ret)
+       if (ret) {
                dev_err(card->dev, "cs42l43 speaker map addition failed: %d\n", ret);
+               return ret;
+       }
+
+       ret = snd_soc_component_set_sysclk(component, CS42L43_SYSCLK, CS42L43_SYSCLK_SDW,
+                                          0, SND_SOC_CLOCK_IN);
+       if (ret)
+               dev_err(card->dev, "Failed to set sysclk: %d\n", ret);
 
        return ret;
 }