mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-16 17:23:55 +08:00
ASoC: soc-acpi: Set mach->id field on comp_ids matches
Commitdac7cbd55d
("ASoC: Intel: soc-acpi-byt: shrink tables using compatible IDs") and commit959ae8215a
("ASoC: Intel: soc-acpi-cht: shrink tables using compatible IDs") simplified the match tables in soc-acpi-intel-byt-match.c and soc-acpi-intel-cht-match.c by merging identical entries using the new .comp_ids snd_soc_acpi_mach field to point a single entry to multiple ACPI HIDs and clearing the previously unique per entry .id field. But various machine drivers from sound/soc/intel/boards rely on mach->id in one or more ways, e.g. some drivers contain the following snippets: adev = acpi_dev_get_first_match_dev(mach->id, NULL, -1); pkg_found = snd_soc_acpi_find_package_from_hid(mach->id, ... if (!strncmp(snd_soc_cards[i].codec_id, mach->id, 8)) { ... All of which are broken by the match table shrinking. Make the snd_soc_acpi_mach.id field non const (the storage for the tables already is non const) and on a comps_ids match copy the matching HID to the id field to fix this. Fixes:dac7cbd55d
("ASoC: Intel: soc-acpi-byt: shrink tables using compatible IDs") Fixes:959ae8215a
("ASoC: Intel: soc-acpi-cht: shrink tables using compatible IDs") Suggested-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Cc: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Cc: Brent Lu <brent.lu@intel.com> Signed-off-by: Hans de Goede <hdegoede@redhat.com> Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Link: https://lore.kernel.org/r/20211118153014.349222-1-hdegoede@redhat.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
8cf72c4e75
commit
28c916ade1
@ -147,7 +147,7 @@ struct snd_soc_acpi_link_adr {
|
||||
*/
|
||||
/* Descriptor for SST ASoC machine driver */
|
||||
struct snd_soc_acpi_mach {
|
||||
const u8 id[ACPI_ID_LEN];
|
||||
u8 id[ACPI_ID_LEN];
|
||||
const struct snd_soc_acpi_codecs *comp_ids;
|
||||
const u32 link_mask;
|
||||
const struct snd_soc_acpi_link_adr *links;
|
||||
|
@ -20,8 +20,10 @@ static bool snd_soc_acpi_id_present(struct snd_soc_acpi_mach *machine)
|
||||
|
||||
if (comp_ids) {
|
||||
for (i = 0; i < comp_ids->num_codecs; i++) {
|
||||
if (acpi_dev_present(comp_ids->codecs[i], NULL, -1))
|
||||
if (acpi_dev_present(comp_ids->codecs[i], NULL, -1)) {
|
||||
strscpy(machine->id, comp_ids->codecs[i], ACPI_ID_LEN);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user