[PATCH] ASoC: fsl: select SND_SOC_IMX_PCM_DMA where needed

Arnd Bergmann
2014-04-28T21:12:14Z

On Tuesday 29 April 2014 00:35:41 Alexander Shiyan wrote:
> Mon, 28 Apr 2014 21:52:16 +0200 ?? Arnd Bergmann <arnd@arndb.de>:
> > On Monday 28 April 2014 22:46:10 Alexander Shiyan wrote:
> > > Mon, 28 Apr 2014 16:46:30 +0200 ?? Arnd Bergmann <arnd@arndb.de>:
> > > > Since commit 204dec93eaa "ASoC: fsl: Allow to select individual common
> > > > options", it is possible to enable SND_SOC_FSL_SSI and SND_SOC_FSL_SPDIF
> > > > manually. However, these two options are for drivers that both
> > > > require the imx-pcm-dma framework and result in a link error if that
> > > > is not provided.
> > > >
> > > > This changes Kconfig to automatically select SND_SOC_IMX_PCM_DMA
> > > > to avoid the problem, as we do for other drivers that need the same
> > > > framework.
> > > >
> > > > Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> > >
> > > Can you give an exact error?
> >
> >
> > sound/built-in.o: In function `fsl_ssi_probe':
> > :(.text+0x51fb8): undefined reference to `imx_pcm_dma_init'
> > sound/built-in.o: In function `fsl_spdif_probe':
> > :(.text+0x52e20): undefined reference to `imx_pcm_dma_init'
>
> This call is defined in imx-pcm.h as:
> #if IS_ENABLED(CONFIG_SND_SOC_IMX_PCM_DMA)
> int imx_pcm_dma_init(struct platform_device *pdev);
> #else
> static inline int imx_pcm_dma_init(struct platform_device *pdev)
> {
> return -ENODEV;
> }
> #endif
>
> So, I don't understand why this error happen, as well as I can not
> reproduce this...

It's probably CONFIG_SND_SOC_IMX_PCM_DMA=m and CONFIG_SND_SOC_FSL_SSI=y then.
What is the intended behavior in this case? Should CONFIG_SND_SOC_FSL_SSI
be forced to be a module as well?

Arnd