• Shawn Guo's avatar
    ASoC: fsl: fix snd-soc-imx-pcm module build · 1927661b
    Shawn Guo authored
    When building modules with CONFIG_SND_IMX_SOC=m in imx_v6_v7_defconfig,
    we will see the following link error.
    
      LD [M]  sound/soc/fsl/snd-soc-fsl-ssi.o
      LD [M]  sound/soc/fsl/snd-soc-fsl-utils.o
      LD [M]  sound/soc/fsl/snd-soc-imx-ssi.o
      LD [M]  sound/soc/fsl/snd-soc-imx-audmux.o
      LD [M]  sound/soc/fsl/snd-soc-imx-pcm.o
    sound/soc/fsl/imx-pcm-dma.o: In function `init_module':
    imx-pcm-dma.c:(.init.text+0x0): multiple definition of `init_module'
    sound/soc/fsl/imx-pcm-fiq.o:imx-pcm-fiq.c:(.init.text+0x0): first defined here
    sound/soc/fsl/imx-pcm-dma.o: In function `cleanup_module':
    imx-pcm-dma.c:(.exit.text+0x0): multiple definition of `cleanup_module'
    sound/soc/fsl/imx-pcm-fiq.o:imx-pcm-fiq.c:(.exit.text+0x0): first defined here
    make[4]: *** [sound/soc/fsl/snd-soc-imx-pcm.o] Error 1
    
    The module snd-soc-imx-pcm is designed to link imx-pcm.o with
    imx-pcm-dma.o or imx-pcm-fiq.o depending on if option SND_SOC_IMX_PCM_DMA
    or SND_SOC_IMX_PCM_FIQ is enabled.  Both imx-pcm-dma and imx-pcm-fiq
    register their own module_platform_driver.  However, these two options
    are not mutually exclusive and can be enabled together.  And that's
    why we see above multiple init_module definition error.
    
    Instead of having both imx-pcm-dma and imx-pcm-fiq register their
    own platform_driver, we should do only once in imx-pcm.c.  Using
    platform_device_id to distinguish between imx-pcm-dma and imx-pcm-fiq,
    we can run-time call imx-pcm-dma/fiq specific initialization in .probe
    hook to have module snd-soc-imx-pcm work for both cases.
    Signed-off-by: default avatarShawn Guo <shawn.guo@linaro.org>
    Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
    1927661b
imx-pcm.h 1.28 KB