[PATCH v2 1/3] ASoC: soc-acpi: add comp_ids field for machine driver matching
Cezary Rojewski
cezary.rojewski at intel.com
Thu Oct 7 19:05:39 CEST 2021
On 2021-10-07 3:35 PM, Brent Lu wrote:
...
>
> +static bool snd_soc_acpi_id_present(struct snd_soc_acpi_mach *machine)
> +{
> + struct snd_soc_acpi_codecs *comp_ids = machine->comp_ids;
> + int i;
> +
> + if (machine->id[0]) {
> + if (acpi_dev_present(machine->id, NULL, -1))
> + return true;
> + }
> +
> + if (comp_ids) {
> + for (i = 0; i < comp_ids->num_codecs; i++) {
> + if (acpi_dev_present(comp_ids->codecs[i], NULL, -1))
> + return true;
> + }
> + }
> +
> + return false;
> +}
In cover letter you mention:
"- can use 'comp_ids' field alone to enumerate driver"
which leads me to an opinion that field 'id' should be removed,
entirely. With 'comp_ids' added, 'id' is basically rendered
optional/redundant.
> +
> struct snd_soc_acpi_mach *
> snd_soc_acpi_find_machine(struct snd_soc_acpi_mach *machines)
> {
> struct snd_soc_acpi_mach *mach;
> struct snd_soc_acpi_mach *mach_alt;
>
> - for (mach = machines; mach->id[0]; mach++) {
> - if (acpi_dev_present(mach->id, NULL, -1)) {
> + for (mach = machines; mach->id[0] || mach->comp_ids; mach++) {
Such loops are hard to maintain i.e. 'comp_ids' acts here like a flex
array that follows 'id'. Removal of 'id' field and streamlining code to
only use 'comp_ids' should make this loop more intuitive.
> + if (snd_soc_acpi_id_present(mach)) {
> if (mach->machine_quirk) {
> mach_alt = mach->machine_quirk(mach);
> if (!mach_alt)
>
More information about the Alsa-devel
mailing list