7 Oct
2021
7 Oct
'21
7:05 p.m.
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)