Re: [PATCH v3] ASoC: atmel: ATMEL drivers don't need HAS_DMA

From: Randy Dunlap
Date: Thu Sep 09 2021 - 21:53:13 EST


On 9/9/21 12:22 AM, Geert Uytterhoeven wrote:
Hi Randy,

On Wed, Sep 8, 2021 at 10:14 PM Randy Dunlap <rdunlap@xxxxxxxxxxxxx> wrote:
On 9/6/21 12:14 AM, Geert Uytterhoeven wrote:
On Fri, Sep 3, 2021 at 9:53 PM Randy Dunlap <rdunlap@xxxxxxxxxxxxx> wrote:
On 9/2/21 9:44 AM, Geert Uytterhoeven wrote:
On Thu, Jul 8, 2021 at 6:51 PM Randy Dunlap <rdunlap@xxxxxxxxxxxxx> wrote:
On 7/8/21 1:19 AM, Codrin.Ciubotariu@xxxxxxxxxxxxx wrote:
On 08.07.2021 00:47, Randy Dunlap wrote:
EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe

On a config (such as arch/sh/) which does not set HAS_DMA when MMU
is not set, several ATMEL ASoC drivers select symbols that cause
kconfig warnings. There is one "depends on HAS_DMA" which is no longer
needed. Dropping it eliminates the kconfig warnings and still builds
with no problems reported.

Fix the following kconfig warnings:

WARNING: unmet direct dependencies detected for SND_ATMEL_SOC_PDC
Depends on [n]: SOUND [=m] && !UML && SND [=m] && SND_SOC [=m] && SND_ATMEL_SOC [=m] && HAS_DMA [=n]
Selected by [m]:
- SND_ATMEL_SOC_SSC [=m] && SOUND [=m] && !UML && SND [=m] && SND_SOC [=m] && SND_ATMEL_SOC [=m]
- SND_ATMEL_SOC_SSC_PDC [=m] && SOUND [=m] && !UML && SND [=m] && SND_SOC [=m] && SND_ATMEL_SOC [=m] && ATMEL_SSC [=m]

WARNING: unmet direct dependencies detected for SND_ATMEL_SOC_SSC_PDC
Depends on [n]: SOUND [=m] && !UML && SND [=m] && SND_SOC [=m] && SND_ATMEL_SOC [=m] && ATMEL_SSC [=m] && HAS_DMA [=n]
Selected by [m]:
- SND_AT91_SOC_SAM9G20_WM8731 [=m] && SOUND [=m] && !UML && SND [=m] && SND_SOC [=m] && SND_ATMEL_SOC [=m] && (ARCH_AT91 || COMPILE_TEST [=y]) && ATMEL_SSC [=m] && SND_SOC_I2C_AND_SPI [=m]

WARNING: unmet direct dependencies detected for SND_ATMEL_SOC_SSC
Depends on [n]: SOUND [=m] && !UML && SND [=m] && SND_SOC [=m] && SND_ATMEL_SOC [=m] && HAS_DMA [=n]
Selected by [m]:
- SND_ATMEL_SOC_SSC_DMA [=m] && SOUND [=m] && !UML && SND [=m] && SND_SOC [=m] && SND_ATMEL_SOC [=m] && ATMEL_SSC [=m]

WARNING: unmet direct dependencies detected for SND_ATMEL_SOC_SSC_DMA
Depends on [n]: SOUND [=m] && !UML && SND [=m] && SND_SOC [=m] && SND_ATMEL_SOC [=m] && ATMEL_SSC [=m] && HAS_DMA [=n]
Selected by [m]:
- SND_ATMEL_SOC_WM8904 [=m] && SOUND [=m] && !UML && SND [=m] && SND_SOC [=m] && SND_ATMEL_SOC [=m] && (ARCH_AT91 || COMPILE_TEST [=y]) && ATMEL_SSC [=m] && I2C [=m]
- SND_AT91_SOC_SAM9X5_WM8731 [=m] && SOUND [=m] && !UML && SND [=m] && SND_SOC [=m] && SND_ATMEL_SOC [=m] && (ARCH_AT91 || COMPILE_TEST [=y]) && ATMEL_SSC [=m] && SND_SOC_I2C_AND_SPI [=m]

Fixes: 3951e4aae2ce ("ASoC: atmel-pcm: dma support based on pcm dmaengine")
Fixes: 18291410557f ("ASoC: atmel: enable SOC_SSC_PDC and SOC_SSC_DMA in Kconfig")
Fixes: 061981ff8cc8 ("ASoC: atmel: properly select dma driver state")

I am not sure about these fixes tags. As Alexandre mentioned, it looks
like the reason for HAS_DMA in the first place was the COMPILE_TEST with
m32r arch. I dig a bit, and, if any, I think we should use:
Fixes: eb17726b00b3 ("m32r: add simple dma")
since this commit adds dummy DMA support for m32r and seems to fix the
HAS_DMA dependency.

Ah, I forgot to update the Fixes: tag(s).

I won't disagree with your Fixes: suggestion (good digging) but
I would probably have used 8d7d11005e930:
ASoC: atmel: fix build failure
which is the commit that added "depends on HAS_DMA".

M32r was not the only platform NO_DMA, so I guess the build would
have failed for the others, too (e.g. Sun-3).

So the real fix was probably commit f29ab49b5388b2f8 ("dma-mapping:
Convert NO_DMA get_dma_ops() into a real dummy"), or one of the
related commits adding dummies to subsystems.

Does this mean that some other actions are needed here?
E.g. revert + a different kind of fix?

While we can now compile drivers using DMA features on NO_DMA
platforms, thanks to the dummies, it does mean many of these drivers
cannot work on such platforms. So I think it makes sense to replace
"depends on HAS_DMA" by "depends on HAS_DMA || COMPILE_TEST" if DMA
is not optional to the driver.

Hi Geert,

Is this what you had in mind? It seems to work with my (limited)
testing.

Yes. And also for other symbols for drivers that now compile fine
if !HAS_DMA, thanks to the dummies.

--- linux-next-20210907.orig/sound/soc/atmel/Kconfig
+++ linux-next-20210907/sound/soc/atmel/Kconfig
@@ -11,6 +11,7 @@ if SND_ATMEL_SOC

config SND_ATMEL_SOC_PDC
bool
+ depends on HAS_DMA || COMPILE_TEST

config SND_ATMEL_SOC_DMA
bool

Well. Addressing only sound/, only one more patch is needed AFAICT.
For Kconfigs outside of sound/, that would be more of a medium-length
project.


Lightly/successfully build-tested.

---
sound/soc/fsl/Kconfig | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

--- linux-next-20210907.orig/sound/soc/fsl/Kconfig
+++ linux-next-20210907/sound/soc/fsl/Kconfig
@@ -5,7 +5,7 @@ comment "Common SoC Audio options for Fr
config SND_SOC_FSL_ASRC
tristate "Asynchronous Sample Rate Converter (ASRC) module support"
- depends on HAS_DMA
+ depends on HAS_DMA || COMPILE_TEST
select REGMAP_MMIO
select SND_SOC_GENERIC_DMAENGINE_PCM
help