On 10/03/2021 18:37, Pierre-Louis Bossart wrote:
Build time dependencies aren't going to help anything, arm64 (and to my understanding some future x86 systems, LynxPoint IIRC) supports both DT and ACPI and so you have kernels built with support for both.
well, that's what I suggested initially: if (is_of_node(card->dev->fwnode))
I used the of_node test as a proxy for 'no DMI' since I am not aware of any means to detect if DMI is enabled at run-time.
Can we not fix the DMI code so it lets us check dmi_available either directly or with an accessor? I don't understand why all the proposals are dancing around local bodges here.
something like this then (compile-tested only)?
diff --git a/drivers/firmware/dmi_scan.c b/drivers/firmware/dmi_scan.c index d51ca0428bb8..f191a1f901ac 100644 --- a/drivers/firmware/dmi_scan.c +++ b/drivers/firmware/dmi_scan.c @@ -166,6 +166,7 @@ static int __init dmi_checksum(const u8 *buf, u8 len) static const char *dmi_ident[DMI_STRING_MAX]; static LIST_HEAD(dmi_devices); int dmi_available; +EXPORT_SYMBOL_GPL(dmi_available);
/* * Save a DMI string diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index 16ba54eb8164..c7e4600b2dd4 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c @@ -1574,7 +1574,7 @@ int snd_soc_set_dmi_name(struct snd_soc_card *card, const char *flavour) if (card->long_name) return 0; /* long name already set by driver or from DMI */
- if (!is_acpi_device_node(card->dev->fwnode)) + if (!dmi_available) return 0;
/* make up dmi long name as: vendor-product-version-board */
Sounds good to me. I would have done the same if I had known that the current solution would have caused this regression.
Cheers Jon