Skip to content

Commit b309a4a

Browse files
mstrozekbardliao
authored andcommitted
ASoC: SOF: Intel: fix iteration in is_endpoint_present()
is_endpoint_present() iterates over sdca_data.num_functions, but checks the dai_type according to codec info list, which will cause problems if not all endpoints from the codec info list are present. Make sure the type of actually present functions is compared against target dai_type. Fixes: 5226d19 ("ASoC: SOF: Intel: use sof_sdw as default SDW machine driver") Signed-off-by: Maciej Strozek <mstrozek@opensource.cirrus.com>
1 parent 1e1eb46 commit b309a4a

1 file changed

Lines changed: 3 additions & 5 deletions

File tree

sound/soc/sof/intel/hda.c

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1133,8 +1133,7 @@ static void hda_generic_machine_select(struct snd_sof_dev *sdev,
11331133

11341134
#if IS_ENABLED(CONFIG_SND_SOC_SOF_INTEL_SOUNDWIRE)
11351135

1136-
static bool is_endpoint_present(struct sdw_slave *sdw_device,
1137-
struct asoc_sdw_codec_info *dai_info, int dai_type)
1136+
static bool is_endpoint_present(struct sdw_slave *sdw_device, int dai_type)
11381137
{
11391138
int i;
11401139

@@ -1145,7 +1144,7 @@ static bool is_endpoint_present(struct sdw_slave *sdw_device,
11451144
}
11461145

11471146
for (i = 0; i < sdw_device->sdca_data.num_functions; i++) {
1148-
if (dai_type == dai_info->dais[i].dai_type)
1147+
if (dai_type == asoc_sdw_get_dai_type(sdw_device->sdca_data.function[i].type))
11491148
return true;
11501149
}
11511150
dev_dbg(&sdw_device->dev, "Endpoint DAI type %d not found\n", dai_type);
@@ -1199,8 +1198,7 @@ static struct snd_soc_acpi_adr_device *find_acpi_adr_device(struct device *dev,
11991198
}
12001199
for (j = 0; j < codec_info_list[i].dai_num; j++) {
12011200
/* Check if the endpoint is present by the SDCA DisCo table */
1202-
if (!is_endpoint_present(sdw_device, &codec_info_list[i],
1203-
codec_info_list[i].dais[j].dai_type))
1201+
if (!is_endpoint_present(sdw_device, codec_info_list[i].dais[j].dai_type))
12041202
continue;
12051203

12061204
endpoints[ep_index].num = j;

0 commit comments

Comments
 (0)