static int kabylake_ssp_fixup(struct snd_soc_pcm_runtime *rtd,
@@ -864,6 +914,7 @@ static int kabylake_card_late_probe(struct snd_soc_card *card)
{
struct kbl_codec_private *ctx = snd_soc_card_get_drvdata(card);
struct kbl_hdmi_pcm *pcm;
+ struct snd_soc_dapm_context *dapm = &card->dapm;
struct snd_soc_component *component = NULL;
int err, i = 0;
char jack_name[NAME_SIZE];
@@ -890,9 +941,25 @@ static int kabylake_card_late_probe(struct snd_soc_card *card)
if (!component)
return -EINVAL;
+
return hdac_hdmi_jack_port_init(component, &card->dapm);
That part looks quite broken. You have functional code after the
unconditional return above for the jack init.
This is not a diff illusion, I applied this patch and looked at the diff
with emacs and I don't know how this could possibly work.
The code prior to this patch was also weird with 2 returns at the end of
kabylake_card_late_probe()
My take is that this has never been tested against Mark's branch but
ported without tests from the Chrome tree.
- return 0;
+ if (err < 0)
+ return err;
+
+ err = snd_soc_dapm_disable_pin(dapm, "Left Spk");
+ if (err) {
+ dev_err(card->dev, "failed to disable Left Spk: %d\n", err);
+ return err;
+ }
+
+ err = snd_soc_dapm_disable_pin(dapm, "Right Spk");
+ if (err) {
+ dev_err(card->dev, "failed to disable Right Spk: %d\n", err);
+ return err;
+ }
+
+ return snd_soc_dapm_sync(dapm);
_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxx
https://mailman.alsa-project.org/mailman/listinfo/alsa-devel