Hi Iwai-san,
On Tue, Nov 6, 2018 at 5:18 PM Takashi Iwai tiwai@suse.de wrote:
On Tue, 06 Nov 2018 02:04:47 +0100, Randy Dunlap wrote:
On 11/5/18 2:12 PM, Geert Uytterhoeven wrote:
On Mon, Nov 5, 2018 at 11:07 PM Geert Uytterhoeven geert@linux-m68k.org wrote:
Below is the list of build error/warning regressions/improvements in v4.20-rc1[1] compared to v4.19[2].
Summarized:
- build errors: +3/-0
- build warnings: +449/-2712
Happy fixing! ;-)
Thanks to the linux-next team for providing the build service.
[1] http://kisskb.ellerman.id.au/kisskb/branch/linus/head/651022382c7f8da46cb487... (all 240 configs) [2] http://kisskb.ellerman.id.au/kisskb/branch/linus/head/84df9525b0c27f3ebc2ebb... (all 240 configs)
*** 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.
Actually it is OK to enable CONFIG_SND_HDA_CODEC_CA0132 without CONFIG_PCI. IIRC, there was a system like that, too. The commit above should have covered the build failure on SH, but apparently isn't enough for some arch setups, as it seems.
The cause is clear now: pci_iomap() is defined in asm-generic/pci_iomap.h only when CONFIG_GENERIC_PCI_IOMAP is defined. Including asm/io.h doesn't help unless CONFIG_PCI is set.
Below is a quick fix for this.
thanks,
Takashi
-- 8< --
From: Takashi Iwai tiwai@suse.de Subject: [PATCH] ALSA: hda/ca0132 - Yet more fix on build breakage without PCI support
The recent change in CA0132 codec driver for supporting more Creative boards includes the pci_iomap() call to get the extra register accesses. This is supposed to work on all archs and setups, by the implicit assumption that every arch would provide a dummy function returning NULL when no PCI is available. But the reality bites, of course; as Geert's regular build test shows, some configs (at least SH4 without CONFIG_PCI) leads to a build error due to the implicit function declaration.
So this is another attempt to fix the issue: now we add an ifdef CONFIG_PCI line, so that pci_iomap() won't be called unless PCI is really usable. This should fall back to the standard quirk again with a warning.
Fixes: d9b84a15892c0233 ("ALSA: hda: Fix implicit definition of pci_iomap() on SH") Reported-by: Geert Uytterhoeven geert@linux-m68k.org Cc: stable@vger.kernel.org Signed-off-by: Takashi Iwai tiwai@suse.de
Thanks for your patch!
--- a/sound/pci/hda/patch_ca0132.c +++ b/sound/pci/hda/patch_ca0132.c @@ -8796,7 +8796,13 @@ static int patch_ca0132(struct hda_codec *codec) }
if (spec->use_pci_mmio) {
/*
* ifdef below needed due to lack of pci_iomap() decleration
* for some archs when no PCI is defined
*/
+#ifdef CONFIG_PCI spec->mem_base = pci_iomap(codec->bus->pci, 2, 0xC20); +#endif
I'm sorry, but that is not a proper fix. This should be fixed in the SH-specific code, to behave like other architectures.
if (spec->mem_base == NULL) { codec_warn(codec, "pci_iomap failed! Setting quirk to QUIRK_NONE."); spec->quirk = QUIRK_NONE;
Gr{oetje,eeting}s,
Geert