ASoC: SDCA: fix finding wrong entity

This patch fixes an issue like:
where searching for the entity 'FU 11' could incorrectly match 'FU 113' first.
The driver should first perform an exact match on the full string name.
If no exact match is found, it can then fall back to a partial match.

Fixes: 48fa77af2f ("ASoC: SDCA: Add terminal type into input/output widget name")
Reviewed-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Signed-off-by: Shuming Fan <shumingf@realtek.com>
Link: https://patch.msgid.link/20260325110406.3232420-1-shumingf@realtek.com
Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
Shuming Fan 2026-03-25 19:04:06 +08:00 committed by Mark Brown
parent c991ca3238
commit c673efd5db
No known key found for this signature in database
GPG Key ID: 24D68B725D5487D0

View File

@ -1601,10 +1601,19 @@ static int find_sdca_entities(struct device *dev, struct sdw_slave *sdw,
static struct sdca_entity *find_sdca_entity_by_label(struct sdca_function_data *function,
const char *entity_label)
{
struct sdca_entity *entity = NULL;
int i;
for (i = 0; i < function->num_entities; i++) {
struct sdca_entity *entity = &function->entities[i];
entity = &function->entities[i];
/* check whole string first*/
if (!strcmp(entity->label, entity_label))
return entity;
}
for (i = 0; i < function->num_entities; i++) {
entity = &function->entities[i];
if (!strncmp(entity->label, entity_label, strlen(entity_label)))
return entity;