mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-25 13:43:55 +08:00
ASoC: SOF: Intel: hda: enforce exclusion between HDaudio and SoundWire
On some platforms with an external HDaudio codec, the DSDT reports the presence of SoundWire devices. Pin-mux restrictions and board reworks usually prevent coexistence between the two types of links, let's prevent unnecessary operations from starting. In the case of a single iDISP codec being detected, we still start the links even if no SoundWire machine configuration was detected, so that we can double-check what the hardware is and add the missing configuration if applicable. Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Reviewed-by: Bard Liao <bard.liao@intel.com> Link: https://lore.kernel.org/r/20210726182855.179943-1-pierre-louis.bossart@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
2635c22603
commit
61bef9e68d
@ -187,12 +187,16 @@ static int hda_sdw_probe(struct snd_sof_dev *sdev)
|
||||
int hda_sdw_startup(struct snd_sof_dev *sdev)
|
||||
{
|
||||
struct sof_intel_hda_dev *hdev;
|
||||
struct snd_sof_pdata *pdata = sdev->pdata;
|
||||
|
||||
hdev = sdev->pdata->hw_pdata;
|
||||
|
||||
if (!hdev->sdw)
|
||||
return 0;
|
||||
|
||||
if (pdata->machine && !pdata->machine->mach_params.link_mask)
|
||||
return 0;
|
||||
|
||||
return sdw_intel_startup(hdev->sdw);
|
||||
}
|
||||
|
||||
@ -1002,6 +1006,14 @@ static int hda_generic_machine_select(struct snd_sof_dev *sdev)
|
||||
hda_mach->mach_params.dmic_num = dmic_num;
|
||||
pdata->machine = hda_mach;
|
||||
pdata->tplg_filename = tplg_filename;
|
||||
|
||||
if (codec_num == 2) {
|
||||
/*
|
||||
* Prevent SoundWire links from starting when an external
|
||||
* HDaudio codec is used
|
||||
*/
|
||||
hda_mach->mach_params.link_mask = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user