Skip to content
  • Lothar Waßmann's avatar
    ASoC: fsl: fix miscompilation of snd-soc-imx-pcm · f2818d07
    Lothar Waßmann authored
    
    
    Hi Mark,
    
    thanks your insisting on a better description for the patch, I found a
    more appropriate solution for the problem:
    
    Compiling the SoC Audio driver for Freescale i.MX as a module
    (CONFIG_SND_SOC_IMX_PCM=m) results in a non-functional sound driver
    indicated by the error message:
    | imx-sgtl5000 sound.1: platform imx-pcm-audio not registered
    | imx-sgtl5000 sound.1: snd_soc_register_card failed (-517)
    | platform sound.1: Driver imx-sgtl5000 requests probe deferral
    instead of the message:
    | imx-sgtl5000 sound.1:  sgtl5000 <-> 63fcc000.ssi mapping ok
    that is to be expected upon loading the snd-soc-imx-pcm.ko module.
    
    The build log reveals, that the file imx-pcm-dma.o (or imx-pcm-fiq.o
    depending on the kernel configuration), which should be linked
    together with imx-pcm.o into snd-imx-pcm.ko, is not being compiled in
    this case.
    
    The make rules for these files shows that the target object imx-pcm.o
    is assigned to the variable snd-soc-imx-pcm-y while
    imx-pcm-{dma,fiq}.o are added to to
    snd-soc-imx-pcm-$(CONFIG_SND_SOC_IMX_PCM_DMA) and
    snd-soc-imx-pcm-$(CONFIG_SND_SOC_IMX_PCM_FIQ) which resolve to
    snd-soc-imx-pcm-m in this case.
    
    According to Documentation/kbuild/modules.txt:
    |When the module is built from multiple sources, an additional line is
    |needed listing the files:
    |
    |        <module_name>-y := <src1>.o <src2>.o ...
    Thus the type of the config variables CONFIG_SND_SOC_IMX_PCM_DMA and
    CONFIG_SND_SOC_IMX_PCM_FIQ should be 'bool' instead of 'tristate' to
    resolve to 'y' when selected.
    
    Signed-off-by: default avatarLothar Waßmann <LW@KARO-electronics.de>
    Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
    f2818d07