1927661b17
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: Shawn Guo <shawn.guo@linaro.org> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> |
||
---|---|---|
.. | ||
efika-audio-fabric.c | ||
eukrea-tlv320.c | ||
fsl_dma.c | ||
fsl_dma.h | ||
fsl_ssi.c | ||
fsl_ssi.h | ||
fsl_utils.c | ||
fsl_utils.h | ||
imx-audmux.c | ||
imx-audmux.h | ||
imx-mc13783.c | ||
imx-pcm-dma.c | ||
imx-pcm-fiq.c | ||
imx-pcm.c | ||
imx-pcm.h | ||
imx-sgtl5000.c | ||
imx-ssi.c | ||
imx-ssi.h | ||
Kconfig | ||
Makefile | ||
mpc5200_dma.c | ||
mpc5200_dma.h | ||
mpc5200_psc_ac97.c | ||
mpc5200_psc_ac97.h | ||
mpc5200_psc_i2s.c | ||
mpc8610_hpcd.c | ||
mx27vis-aic32x4.c | ||
p1022_ds.c | ||
p1022_rdk.c | ||
pcm030-audio-fabric.c | ||
phycore-ac97.c | ||
wm1133-ev1.c |