Skip to content

Commit 75503d9

Browse files
committed
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> Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
1 parent 2073572 commit 75503d9

File tree

1 file changed

+15
-8
lines changed

1 file changed

+15
-8
lines changed

sound/soc/intel/boards/sof_sdw.c

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1157,15 +1157,22 @@ static int create_bt_dailinks(struct snd_soc_card *card,
11571157
struct snd_soc_dai_link **dai_links, int *be_id)
11581158
{
11591159
struct device *dev = card->dev;
1160-
int port = (sof_sdw_quirk & SOF_BT_OFFLOAD_SSP_MASK) >>
1161-
SOF_BT_OFFLOAD_SSP_SHIFT;
1162-
char *name = devm_kasprintf(dev, GFP_KERNEL, "SSP%d-BT", port);
1163-
char *cpu_dai_name = devm_kasprintf(dev, GFP_KERNEL, "SSP%d Pin", port);
1160+
struct snd_soc_acpi_mach *mach = dev_get_platdata(dev);
1161+
char *cpu_dai_name;
1162+
char *name;
1163+
int port;
1164+
int ret;
1165+
1166+
if (sof_sdw_quirk & SOF_SSP_BT_OFFLOAD_PRESENT)
1167+
port = (sof_sdw_quirk & SOF_BT_OFFLOAD_SSP_MASK) >> SOF_BT_OFFLOAD_SSP_SHIFT;
1168+
else
1169+
port = fls(mach->mach_params.bt_link_mask) - 1;
1170+
1171+
name = devm_kasprintf(dev, GFP_KERNEL, "SSP%d-BT", port);
1172+
cpu_dai_name = devm_kasprintf(dev, GFP_KERNEL, "SSP%d Pin", port);
11641173
if (!name || !cpu_dai_name)
11651174
return -ENOMEM;
11661175

1167-
int ret;
1168-
11691176
ret = asoc_sdw_init_simple_dai_link(dev, *dai_links, be_id, name,
11701177
1, 1, cpu_dai_name, "dummy",
11711178
snd_soc_dummy_dlc.name, snd_soc_dummy_dlc.dai_name,
@@ -1262,7 +1269,7 @@ static int sof_card_dai_links_create(struct snd_soc_card *card)
12621269
mach_params->dmic_num = DMIC_DEFAULT_CHANNELS;
12631270
}
12641271

1265-
if (sof_sdw_quirk & SOF_SSP_BT_OFFLOAD_PRESENT)
1272+
if (sof_sdw_quirk & SOF_SSP_BT_OFFLOAD_PRESENT || mach_params->bt_link_mask)
12661273
bt_num = 1;
12671274

12681275
dev_dbg(dev, "DAI link numbers: sdw %d, ssp %d, dmic %d, hdmi %d, bt: %d\n",
@@ -1317,7 +1324,7 @@ static int sof_card_dai_links_create(struct snd_soc_card *card)
13171324
goto err_end;
13181325

13191326
/* BT */
1320-
if (sof_sdw_quirk & SOF_SSP_BT_OFFLOAD_PRESENT) {
1327+
if (bt_num) {
13211328
ret = create_bt_dailinks(card, &dai_links, &be_id);
13221329
if (ret)
13231330
goto err_end;

0 commit comments

Comments
 (0)