| From 4c121129c9dcb43b33d1cd568c8f2636e72597b0 Mon Sep 17 00:00:00 2001 |
| From: Arnd Bergmann <arnd@arndb.de> |
| Date: Wed, 28 Jan 2015 22:31:30 +0100 |
| Subject: ASoC: rt5677: fix SPI dependency |
| |
| From: Arnd Bergmann <arnd@arndb.de> |
| |
| commit 4c121129c9dcb43b33d1cd568c8f2636e72597b0 upstream. |
| |
| The rt5677 codec has gained code that requires SPI to work correctly, |
| but there is no provision in Kconfig to prevent the driver from |
| being used when SPI is disabled or a loadable module, resulting |
| in this build error: |
| |
| sound/built-in.o: In function `rt5677_spi_write': |
| :(.text+0xa7ba0): undefined reference to `spi_sync' |
| sound/built-in.o: In function `rt5677_spi_driver_init': |
| :(.init.text+0x253c): undefined reference to `spi_register_driver' |
| |
| ERROR: "spi_sync" [sound/soc/codecs/snd-soc-rt5677-spi.ko] undefined! |
| ERROR: "spi_register_driver" [sound/soc/codecs/snd-soc-rt5677-spi.ko] undefined! |
| |
| This makes the SPI portion of the driver depend on the SPI subsystem, |
| and disables the function that uses SPI for firmware download if SPI |
| is disabled. The latter may not be the correct solution, but I could |
| not come up with a better one. |
| |
| Signed-off-by: Arnd Bergmann <arnd@arndb.de> |
| Fixes: af48f1d08a54741 ("ASoC: rt5677: Support DSP function for VAD application") |
| Signed-off-by: Mark Brown <broonie@kernel.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| sound/soc/codecs/Kconfig | 2 +- |
| sound/soc/codecs/rt5677.c | 3 +++ |
| 2 files changed, 4 insertions(+), 1 deletion(-) |
| |
| --- a/sound/soc/codecs/Kconfig |
| +++ b/sound/soc/codecs/Kconfig |
| @@ -525,7 +525,7 @@ config SND_SOC_RT5677 |
| |
| config SND_SOC_RT5677_SPI |
| tristate |
| - default SND_SOC_RT5677 |
| + default SND_SOC_RT5677 && SPI |
| |
| #Freescale sgtl5000 codec |
| config SND_SOC_SGTL5000 |
| --- a/sound/soc/codecs/rt5677.c |
| +++ b/sound/soc/codecs/rt5677.c |
| @@ -702,6 +702,9 @@ static int rt5677_set_dsp_vad(struct snd |
| static bool activity; |
| int ret; |
| |
| + if (!IS_ENABLED(CONFIG_SND_SOC_RT5677_SPI)) |
| + return -ENXIO; |
| + |
| if (on && !activity) { |
| activity = true; |
| |