[alsa-devel] [PATCH] ASoC: dmaengine: Correct Makefile when sound is built as module

Péter Ujfalusi peter.ujfalusi at ti.com
Tue Oct 9 15:16:15 CEST 2012


On 10/09/2012 11:08 AM, Mark Brown wrote:
> What makes you believe that this is due to the code not being part of
> the core module?

the linker tells me.
Without this patch with mainline kernel from today (I used tegra to see if it
happens there as well):

make tegra_defconfig
scripts/config -d CONFIG_MMC # MMC does not compile for tegra
scripts/config -e CONFIG_SOUND -e CONFIG_SND -e CONFIG_SND_SOC

Fine

scripts/config -e CONFIG_SOUND -e CONFIG_SND -m CONFIG_SND_SOC

sound/built-in.o: In function `dmaengine_pcm_dma_complete':
/home/ujfalusi/work/kernel/kernel.org-torvalds-linux-2.6/sound/soc/soc-dmaengine-pcm.c:134:
undefined reference to `snd_pcm_period_elapsed'
sound/built-in.o: In function `snd_dmaengine_pcm_open':
/home/ujfalusi/work/kernel/kernel.org-torvalds-linux-2.6/sound/soc/soc-dmaengine-pcm.c:285:
undefined reference to `snd_pcm_hw_constraint_integer'
make: *** [vmlinux] Error 1

scripts/config -e CONFIG_SOUND -m CONFIG_SND -m CONFIG_SND_SOC
scripts/config -m CONFIG_SOUND -m CONFIG_SND -m CONFIG_SND_SOC

ERROR: "snd_hwparams_to_dma_slave_config"
[sound/soc/tegra/snd-soc-tegra-pcm.ko] undefined!
ERROR: "snd_dmaengine_pcm_pointer" [sound/soc/tegra/snd-soc-tegra-pcm.ko]
undefined!
ERROR: "snd_dmaengine_pcm_open" [sound/soc/tegra/snd-soc-tegra-pcm.ko] undefined!
ERROR: "snd_dmaengine_pcm_close" [sound/soc/tegra/snd-soc-tegra-pcm.ko] undefined!
ERROR: "snd_dmaengine_pcm_get_chan" [sound/soc/tegra/snd-soc-tegra-pcm.ko]
undefined!
ERROR: "snd_dmaengine_pcm_trigger" [sound/soc/tegra/snd-soc-tegra-pcm.ko]
undefined!
make[1]: *** [__modpost] Error 1
make: *** [modules] Error 2
make: *** Waiting for unfinished jobs....

With the patch:

make tegra_defconfig
scripts/config -d CONFIG_MMC # MMC does not compile for tegra
scripts/config -e CONFIG_SOUND -e CONFIG_SND -e CONFIG_SND_SOC
scripts/config -e CONFIG_SOUND -e CONFIG_SND -m CONFIG_SND_SOC
scripts/config -e CONFIG_SOUND -m CONFIG_SND -m CONFIG_SND_SOC
scripts/config -m CONFIG_SOUND -m CONFIG_SND -m CONFIG_SND_SOC

is fine.

I guess it was due to the Kconfig/Makefile related to soc-dmaengine:

config SND_SOC_DMAENGINE_PCM
	bool

snd-soc-dmaengine-pcm-objs := soc-dmaengine-pcm.o
obj-$(CONFIG_SND_SOC_DMAENGINE_PCM) += snd-soc-dmaengine-pcm.o

My guess is that in this way the soc-dmaengine-pcm.o would want itself to be
built in to the kernel but since the sound is in modules there is no place to
link this part of the code.
If I change the Kconfig from bool to tristate it will build
snd-soc-dmaengine-pcm.ko but since the soc-dmaengine-pcm.c does not have
module_init it is not really going to load.
I might be wrong.

-- 
Péter


More information about the Alsa-devel mailing list