Re: [alsa-devel] Build regressions/improvements in v4.20-rc1 (sound/pci/hda/patch_ca0132.c)
From: Takashi Iwai
Date: Tue Nov 06 2018 - 11:18:54 EST
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@xxxxxxxxxxxxxx> 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/651022382c7f8da46cb4872a545ee1da6d097d2a/ (all 240 configs)
> >> [2] http://kisskb.ellerman.id.au/kisskb/branch/linus/head/84df9525b0c27f3ebc2ebb1864fa62a97fdedb7d/ (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@xxxxxxx>
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@xxxxxxxxxxxxxx>
Cc: <stable@xxxxxxxxxxxxxxx>
Signed-off-by: Takashi Iwai <tiwai@xxxxxxx>
---
sound/pci/hda/patch_ca0132.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/sound/pci/hda/patch_ca0132.c b/sound/pci/hda/patch_ca0132.c
index 0a24037184c3..9ed808b45e75 100644
--- 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
if (spec->mem_base == NULL) {
codec_warn(codec, "pci_iomap failed! Setting quirk to QUIRK_NONE.");
spec->quirk = QUIRK_NONE;
--
2.19.1