Message ID | 20200408200504.4067970-1-arnd@arndb.de (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
Series | dmaengine: tegra: fix broken 'select' statement | expand |
On 4/8/20 2:04 PM, Arnd Bergmann wrote: > A SoC driver selects the dmaengine driver for the platform it > is made for, leading to Kconfig warnings in some configurations: > > WARNING: unmet direct dependencies detected for TEGRA20_APB_DMA > Depends on [n]: DMADEVICES [=n] && (ARCH_TEGRA [=y] || COMPILE_TEST [=y]) > Selected by [y]: > - SOC_TEGRA_FUSE [=y] && ARCH_TEGRA [=y] && ARCH_TEGRA_2x_SOC [=y] > > WARNING: unmet direct dependencies detected for TEGRA20_APB_DMA > Depends on [n]: DMADEVICES [=n] && (ARCH_TEGRA [=y] || COMPILE_TEST [=y]) > Selected by [y]: > - SOC_TEGRA_FUSE [=y] && ARCH_TEGRA [=y] && ARCH_TEGRA_2x_SOC [=y] > > Generally, no driver should 'select' a driver from a different subsystem, > especially when there is no build-time dependency between the two. IIRC there's a run-time dependency between the two though; without the DMA driver available to implement a HW WAR, the fuse driver has to access fuse registers directly which IIRC can cause a lock-up, or something like that. So I think allowing APD_DMA to be deselected by the user is wrong for T20 at least; it simply must be enabled. Perhaps ARCH_TEGRA_2x_SOC should select it instead?
diff --git a/drivers/dma/Kconfig b/drivers/dma/Kconfig index 023db6883d05..c19e25b140c5 100644 --- a/drivers/dma/Kconfig +++ b/drivers/dma/Kconfig @@ -619,6 +619,7 @@ config TXX9_DMAC config TEGRA20_APB_DMA tristate "NVIDIA Tegra20 APB DMA support" depends on ARCH_TEGRA || COMPILE_TEST + default SOC_TEGRA_FUSE && ARCH_TEGRA_2x_SOC select DMA_ENGINE help Support for the NVIDIA Tegra20 APB DMA controller driver. The diff --git a/drivers/soc/tegra/Kconfig b/drivers/soc/tegra/Kconfig index 3693532949b8..84bd615c4a92 100644 --- a/drivers/soc/tegra/Kconfig +++ b/drivers/soc/tegra/Kconfig @@ -126,7 +126,6 @@ config SOC_TEGRA_FUSE def_bool y depends on ARCH_TEGRA select SOC_BUS - select TEGRA20_APB_DMA if ARCH_TEGRA_2x_SOC config SOC_TEGRA_FLOWCTRL bool
A SoC driver selects the dmaengine driver for the platform it is made for, leading to Kconfig warnings in some configurations: WARNING: unmet direct dependencies detected for TEGRA20_APB_DMA Depends on [n]: DMADEVICES [=n] && (ARCH_TEGRA [=y] || COMPILE_TEST [=y]) Selected by [y]: - SOC_TEGRA_FUSE [=y] && ARCH_TEGRA [=y] && ARCH_TEGRA_2x_SOC [=y] WARNING: unmet direct dependencies detected for TEGRA20_APB_DMA Depends on [n]: DMADEVICES [=n] && (ARCH_TEGRA [=y] || COMPILE_TEST [=y]) Selected by [y]: - SOC_TEGRA_FUSE [=y] && ARCH_TEGRA [=y] && ARCH_TEGRA_2x_SOC [=y] Generally, no driver should 'select' a driver from a different subsystem, especially when there is no build-time dependency between the two. Remove the bogus 'select' and instead change the dmaengine driver to be default-enabled in this configuration, to let existing defconfig files continue working. Signed-off-by: Arnd Bergmann <arnd@arndb.de> --- drivers/dma/Kconfig | 1 + drivers/soc/tegra/Kconfig | 1 - 2 files changed, 1 insertion(+), 1 deletion(-)