mirror of
https://github.com/torvalds/linux.git
synced 2026-05-27 08:33:17 +02:00
ASoC: Intel: sof_sdw: create BT dai link if bt_link_mask is set
The bt_link_mask value is from NHLT. The BT dai link should be created if bt_link_mask is set. Besides, hda_machine_select() will look for the topology with BT BE. Suggested-by: Mac Chiang <mac.chiang@intel.com> Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com> Link: https://patch.msgid.link/20251111123737.246626-5-yung-chuan.liao@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
1d5bf23aa1
commit
f78d96c289
|
|
@ -1138,15 +1138,22 @@ static int create_bt_dailinks(struct snd_soc_card *card,
|
|||
struct snd_soc_dai_link **dai_links, int *be_id)
|
||||
{
|
||||
struct device *dev = card->dev;
|
||||
int port = (sof_sdw_quirk & SOF_BT_OFFLOAD_SSP_MASK) >>
|
||||
SOF_BT_OFFLOAD_SSP_SHIFT;
|
||||
char *name = devm_kasprintf(dev, GFP_KERNEL, "SSP%d-BT", port);
|
||||
char *cpu_dai_name = devm_kasprintf(dev, GFP_KERNEL, "SSP%d Pin", port);
|
||||
struct snd_soc_acpi_mach *mach = dev_get_platdata(dev);
|
||||
char *cpu_dai_name;
|
||||
char *name;
|
||||
int port;
|
||||
int ret;
|
||||
|
||||
if (sof_sdw_quirk & SOF_SSP_BT_OFFLOAD_PRESENT)
|
||||
port = (sof_sdw_quirk & SOF_BT_OFFLOAD_SSP_MASK) >> SOF_BT_OFFLOAD_SSP_SHIFT;
|
||||
else
|
||||
port = fls(mach->mach_params.bt_link_mask) - 1;
|
||||
|
||||
name = devm_kasprintf(dev, GFP_KERNEL, "SSP%d-BT", port);
|
||||
cpu_dai_name = devm_kasprintf(dev, GFP_KERNEL, "SSP%d Pin", port);
|
||||
if (!name || !cpu_dai_name)
|
||||
return -ENOMEM;
|
||||
|
||||
int ret;
|
||||
|
||||
ret = asoc_sdw_init_simple_dai_link(dev, *dai_links, be_id, name,
|
||||
1, 1, cpu_dai_name, "dummy",
|
||||
snd_soc_dummy_dlc.name, snd_soc_dummy_dlc.dai_name,
|
||||
|
|
@ -1243,7 +1250,7 @@ static int sof_card_dai_links_create(struct snd_soc_card *card)
|
|||
mach_params->dmic_num = DMIC_DEFAULT_CHANNELS;
|
||||
}
|
||||
|
||||
if (sof_sdw_quirk & SOF_SSP_BT_OFFLOAD_PRESENT)
|
||||
if (sof_sdw_quirk & SOF_SSP_BT_OFFLOAD_PRESENT || mach_params->bt_link_mask)
|
||||
bt_num = 1;
|
||||
|
||||
dev_dbg(dev, "DAI link numbers: sdw %d, ssp %d, dmic %d, hdmi %d, bt: %d\n",
|
||||
|
|
@ -1298,7 +1305,7 @@ static int sof_card_dai_links_create(struct snd_soc_card *card)
|
|||
goto err_end;
|
||||
|
||||
/* BT */
|
||||
if (sof_sdw_quirk & SOF_SSP_BT_OFFLOAD_PRESENT) {
|
||||
if (bt_num) {
|
||||
ret = create_bt_dailinks(card, &dai_links, &be_id);
|
||||
if (ret)
|
||||
goto err_end;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user