On Wed, 18 Dec 2019 17:42:24 +0100, Pierre-Louis Bossart wrote:
On 12/18/19 10:28 AM, Takashi Iwai wrote:
On Wed, 18 Dec 2019 16:21:22 +0100, Pierre-Louis Bossart wrote:
Also, can we reduce even the ifdef around sof_dev_desc definitions by __maybe_unused atttribute?
Sorry, I am not following your suggestion. I would really like to keep the ifdefs for now, and while it can be seen as overkill to have descriptors that are identical in some cases the past experience shows it's useful when we have to add quirks for specific 'hardware recommended programming sequences'.
What I suggested was simple, just dropping ifdef by something like
diff --git a/sound/soc/sof/sof-pci-dev.c b/sound/soc/sof/sof-pci-dev.c index bbeffd932de7..297632a54f1b 100644 --- a/sound/soc/sof/sof-pci-dev.c +++ b/sound/soc/sof/sof-pci-dev.c @@ -36,8 +36,7 @@ MODULE_PARM_DESC(sof_pci_debug, "SOF PCI debug options (0x0 all off)"); #define SOF_PCI_DISABLE_PM_RUNTIME BIT(0) -#if IS_ENABLED(CONFIG_SND_SOC_SOF_APOLLOLAKE) -static const struct sof_dev_desc bxt_desc = { +static const struct sof_dev_desc __maybe_unused bxt_desc = { .machines = snd_soc_acpi_intel_bxt_machines, .resindex_lpe_base = 0, .resindex_pcicfg_base = -1, @@ -52,10 +51,8 @@ static const struct sof_dev_desc bxt_desc = { .ops = &sof_apl_ops, .arch_ops = &sof_xtensa_arch_ops }; -#endif -#if IS_ENABLED(CONFIG_SND_SOC_SOF_GEMINILAKE) -static const struct sof_dev_desc glk_desc = { +static const struct sof_dev_desc __maybe_unused glk_desc = { .machines = snd_soc_acpi_intel_glk_machines, .resindex_lpe_base = 0, .resindex_pcicfg_base = -1, @@ -70,10 +67,8 @@ static const struct sof_dev_desc glk_desc = { .ops = &sof_apl_ops, .arch_ops = &sof_xtensa_arch_ops }; -#endif .....
Then the issue I pointed above can be solved as well.
The ifdefs are still needed in the PCI IDs tables
Yes, but it halves the messes :)
I wish it was true :-)
In reality having buildbots play with kconfig options does help identify issues at the code level, just like the namespace use helped identify the .arch_ops just above did not belong here. I find it's a constant battle to avoid accumulated crud in the wrong places when dealing with multiple platforms, and when looking at patches it's very hard (at least for me) to realize where the code gets added and the implications.
But how it can be worse than ifdef...? From the resultant code POV, it's same, the redundant objects are dropped automatically, while you can avoid a pitfall like this case to forget the counter-part ifdef, which could be identified at first by some randconfig tests.
Takashi