Re: [alsa-devel] Build regressions/improvements in v4.20-rc1 (sound/pci/hda/patch_ca0132.c)

From: Pierre-Louis Bossart
Date: Tue Nov 06 2018 - 09:56:43 EST




*** ERRORS ***

+ /kisskb/src/sound/pci/hda/patch_ca0132.c: error: implicit declaration of function 'pci_iomap' [-Werror=implicit-function-declaration]: => 8799:3
sh4-all{mod,yes}config

Looks like d9b84a15892c0233 ("ALSA: hda: Fix implicit definition of
pci_iomap() on SH")
is not sufficient?
Different problem. This is about "select":

config SND_SOC_ALL_CODECS
tristate "Build all ASoC CODEC drivers"

That enables (sets):
select SND_SOC_HDAC_HDA
which selects SND_HDA even though CONFIG_PCI is not enabled.

After SND_HDA is selected (above), the Kconfig symbols in
sound/pci/hda/Kconfig are available for enabling, so
SND_HDA_CODEC_CA0132 is enabled but will not build.
Thanks for looking into this!

One simple solution (but possibly too naive) is:

---
sound/soc/codecs/Kconfig | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

--- lnx-420-rc1.orig/sound/soc/codecs/Kconfig
+++ lnx-420-rc1/sound/soc/codecs/Kconfig
@@ -82,7 +82,7 @@ config SND_SOC_ALL_CODECS
select SND_SOC_ES7241
select SND_SOC_GTM601
select SND_SOC_HDAC_HDMI
- select SND_SOC_HDAC_HDA
+ select SND_SOC_HDAC_HDA if PCI
select SND_SOC_ICS43432
select SND_SOC_INNO_RK3036
select SND_SOC_ISABELLE if I2C
I guess that will work. There are already plenty of "select foo if bar" lines.
However, looking at what else can enable SND_HDA, I think it should be

select SND_SOC_HDAC_HDA if SND_PCI || ARCH_TEGRA

This codec can only be used by the Skylake driver (and the upcoming SOF one). For Tegra this module will never be used unless they follow the same path of enabling ASoC to deal with the HDaudio codecs instead of the legacy.

Likewise HDAC_HDMI will only work on Intel platforms for now.


That still leaves the issue that pci_iomap() on SH should be an empty stub if
PCI is not available, like on other architectures.

I thought Mark Brown provided a fix to SH maintainers?