Skip to content

Commit 3d9f6cd

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 73ba76b commit 3d9f6cd

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
@@ -1143,15 +1143,22 @@ static int create_bt_dailinks(struct snd_soc_card *card,
11431143
struct snd_soc_dai_link **dai_links, int *be_id)
11441144
{
11451145
struct device *dev = card->dev;
1146-
int port = (sof_sdw_quirk & SOF_BT_OFFLOAD_SSP_MASK) >>
1147-
SOF_BT_OFFLOAD_SSP_SHIFT;
1148-
char *name = devm_kasprintf(dev, GFP_KERNEL, "SSP%d-BT", port);
1149-
char *cpu_dai_name = devm_kasprintf(dev, GFP_KERNEL, "SSP%d Pin", port);
1146+
struct snd_soc_acpi_mach *mach = dev_get_platdata(dev);
1147+
char *cpu_dai_name;
1148+
char *name;
1149+
int port;
1150+
int ret;
1151+
1152+
if (sof_sdw_quirk & SOF_SSP_BT_OFFLOAD_PRESENT)
1153+
port = (sof_sdw_quirk & SOF_BT_OFFLOAD_SSP_MASK) >> SOF_BT_OFFLOAD_SSP_SHIFT;
1154+
else
1155+
port = fls(mach->mach_params.bt_link_mask) - 1;
1156+
1157+
name = devm_kasprintf(dev, GFP_KERNEL, "SSP%d-BT", port);
1158+
cpu_dai_name = devm_kasprintf(dev, GFP_KERNEL, "SSP%d Pin", port);
11501159
if (!name || !cpu_dai_name)
11511160
return -ENOMEM;
11521161

1153-
int ret;
1154-
11551162
ret = asoc_sdw_init_simple_dai_link(dev, *dai_links, be_id, name,
11561163
1, 1, cpu_dai_name, "dummy",
11571164
snd_soc_dummy_dlc.name, snd_soc_dummy_dlc.dai_name,
@@ -1248,7 +1255,7 @@ static int sof_card_dai_links_create(struct snd_soc_card *card)
12481255
mach_params->dmic_num = DMIC_DEFAULT_CHANNELS;
12491256
}
12501257

1251-
if (sof_sdw_quirk & SOF_SSP_BT_OFFLOAD_PRESENT)
1258+
if (sof_sdw_quirk & SOF_SSP_BT_OFFLOAD_PRESENT || mach_params->bt_link_mask)
12521259
bt_num = 1;
12531260

12541261
dev_dbg(dev, "DAI link numbers: sdw %d, ssp %d, dmic %d, hdmi %d, bt: %d\n",
@@ -1303,7 +1310,7 @@ static int sof_card_dai_links_create(struct snd_soc_card *card)
13031310
goto err_end;
13041311

13051312
/* BT */
1306-
if (sof_sdw_quirk & SOF_SSP_BT_OFFLOAD_PRESENT) {
1313+
if (bt_num) {
13071314
ret = create_bt_dailinks(card, &dai_links, &be_id);
13081315
if (ret)
13091316
goto err_end;

0 commit comments

Comments
 (0)