config SND_ATMEL_SOC_PDC
        tristate
+       default m if SND_ATMEL_SOC_SSC_PDC=m && SND_ATMEL_SOC_SSC=m
+       default y if SND_ATMEL_SOC_SSC_PDC=y || (SND_ATMEL_SOC_SSC_PDC=m && SND_ATMEL_SOC_SSC=y)
+
+config SND_ATMEL_SOC_SSC_PDC
+       tristate
 
 config SND_ATMEL_SOC_DMA
        tristate
        select SND_SOC_GENERIC_DMAENGINE_PCM
+       default m if SND_ATMEL_SOC_SSC_DMA=m && SND_ATMEL_SOC_SSC=m
+       default y if SND_ATMEL_SOC_SSC_DMA=y || (SND_ATMEL_SOC_SSC_DMA=m && SND_ATMEL_SOC_SSC=y)
+
+config SND_ATMEL_SOC_SSC_DMA
+       tristate
 
 config SND_ATMEL_SOC_SSC
        tristate
+       default y if SND_ATMEL_SOC_SSC_DMA=y || SND_ATMEL_SOC_SSC_PDC=y
+       default m if SND_ATMEL_SOC_SSC_DMA=m || SND_ATMEL_SOC_SSC_PDC=m
 
 config SND_AT91_SOC_SAM9G20_WM8731
        tristate "SoC Audio support for WM8731-based At91sam9g20 evaluation board"
        depends on ARCH_AT91 || COMPILE_TEST
        depends on ATMEL_SSC && SND_SOC_I2C_AND_SPI
-       select SND_ATMEL_SOC_PDC
-       select SND_ATMEL_SOC_SSC
+       select SND_ATMEL_SOC_SSC_PDC
        select SND_SOC_WM8731
        help
          Say Y if you want to add support for SoC audio on WM8731-based
        tristate "Atmel ASoC driver for boards using WM8904 codec"
        depends on ARCH_AT91 || COMPILE_TEST
        depends on ATMEL_SSC && I2C
-       select SND_ATMEL_SOC_SSC
-       select SND_ATMEL_SOC_DMA
+       select SND_ATMEL_SOC_SSC_DMA
        select SND_SOC_WM8904
        help
          Say Y if you want to add support for Atmel ASoC driver for boards using
        tristate "SoC Audio support for WM8731-based at91sam9x5 board"
        depends on ARCH_AT91 || COMPILE_TEST
        depends on ATMEL_SSC && SND_SOC_I2C_AND_SPI
-       select SND_ATMEL_SOC_SSC
-       select SND_ATMEL_SOC_DMA
+       select SND_ATMEL_SOC_SSC_DMA
        select SND_SOC_WM8731
        help
          Say Y if you want to add support for audio SoC on an