2021-10-29 21:24:15

by Julian Braha

[permalink] [raw]
Subject: [PATCH] pinctrl: aspeed: fix unmet dependencies on MFD_SYSCON for PINCTRL_ASPEED

When PINCTRL_ASPEED_G* is selected,
and MFD_SYSCON is not selected,
Kbuild gives the following warnings:

WARNING: unmet direct dependencies detected for PINCTRL_ASPEED
Depends on [n]: PINCTRL [=y] && (ARCH_ASPEED [=n] || COMPILE_TEST [=y]) && OF [=y] && MFD_SYSCON [=n]
Selected by [y]:
- PINCTRL_ASPEED_G4 [=y] && PINCTRL [=y] && (MACH_ASPEED_G4 [=n] || COMPILE_TEST [=y]) && OF [=y]

WARNING: unmet direct dependencies detected for PINCTRL_ASPEED
Depends on [n]: PINCTRL [=y] && (ARCH_ASPEED [=n] || COMPILE_TEST [=y]) && OF [=y] && MFD_S>
Selected by [y]:
- PINCTRL_ASPEED_G5 [=y] && PINCTRL [=y] && (MACH_ASPEED_G5 [=n] || COMPILE_TEST [=y]) && O>

WARNING: unmet direct dependencies detected for PINCTRL_ASPEED
Depends on [n]: PINCTRL [=y] && (ARCH_ASPEED [=n] || COMPILE_TEST [=y]) && OF [=y] && MFD_S>
Selected by [y]:
- PINCTRL_ASPEED_G6 [=y] && PINCTRL [=y] && (MACH_ASPEED_G6 [=n] || COMPILE_TEST [=y]) && O>

This is because PINCTRL_ASPEED_G* selects PINCTRL_ASPEED,
without selecting or depending on MFD_SYSCON, despite
PINCTRL_ASPEED depending on MFD_SYSCON.

These unmet dependency bugs were detected by Kismet,
a static analysis tool for Kconfig. Please advise
if this is not the appropriate solution.

Signed-off-by: Julian Braha <[email protected]>
---
drivers/pinctrl/aspeed/Kconfig | 3 +++
1 file changed, 3 insertions(+)

diff --git a/drivers/pinctrl/aspeed/Kconfig b/drivers/pinctrl/aspeed/Kconfig
index de8b185c4fee..b0bae6144fc2 100644
--- a/drivers/pinctrl/aspeed/Kconfig
+++ b/drivers/pinctrl/aspeed/Kconfig
@@ -11,6 +11,7 @@ config PINCTRL_ASPEED
config PINCTRL_ASPEED_G4
bool "Aspeed G4 SoC pin control"
depends on (MACH_ASPEED_G4 || COMPILE_TEST) && OF
+ depends on MFD_SYSCON
select PINCTRL_ASPEED
help
Say Y here to enable pin controller support for Aspeed's 4th
@@ -19,6 +20,7 @@ config PINCTRL_ASPEED_G4
config PINCTRL_ASPEED_G5
bool "Aspeed G5 SoC pin control"
depends on (MACH_ASPEED_G5 || COMPILE_TEST) && OF
+ depends on MFD_SYSCON
select PINCTRL_ASPEED
help
Say Y here to enable pin controller support for Aspeed's 5th
@@ -27,6 +29,7 @@ config PINCTRL_ASPEED_G5
config PINCTRL_ASPEED_G6
bool "Aspeed G6 SoC pin control"
depends on (MACH_ASPEED_G6 || COMPILE_TEST) && OF
+ depends on MFD_SYSCON
select PINCTRL_ASPEED
help
Say Y here to enable pin controller support for Aspeed's 6th
--
2.30.2


2021-11-02 22:50:03

by Andrew Jeffery

[permalink] [raw]
Subject: Re: [PATCH] pinctrl: aspeed: fix unmet dependencies on MFD_SYSCON for PINCTRL_ASPEED



On Sat, 30 Oct 2021, at 07:51, Julian Braha wrote:
> When PINCTRL_ASPEED_G* is selected,
> and MFD_SYSCON is not selected,
> Kbuild gives the following warnings:
>
> WARNING: unmet direct dependencies detected for PINCTRL_ASPEED
> Depends on [n]: PINCTRL [=y] && (ARCH_ASPEED [=n] || COMPILE_TEST
> [=y]) && OF [=y] && MFD_SYSCON [=n]
> Selected by [y]:
> - PINCTRL_ASPEED_G4 [=y] && PINCTRL [=y] && (MACH_ASPEED_G4 [=n] ||
> COMPILE_TEST [=y]) && OF [=y]
>
> WARNING: unmet direct dependencies detected for PINCTRL_ASPEED
> Depends on [n]: PINCTRL [=y] && (ARCH_ASPEED [=n] || COMPILE_TEST
> [=y]) && OF [=y] && MFD_S>
> Selected by [y]:
> - PINCTRL_ASPEED_G5 [=y] && PINCTRL [=y] && (MACH_ASPEED_G5 [=n] ||
> COMPILE_TEST [=y]) && O>
>
> WARNING: unmet direct dependencies detected for PINCTRL_ASPEED
> Depends on [n]: PINCTRL [=y] && (ARCH_ASPEED [=n] || COMPILE_TEST
> [=y]) && OF [=y] && MFD_S>
> Selected by [y]:
> - PINCTRL_ASPEED_G6 [=y] && PINCTRL [=y] && (MACH_ASPEED_G6 [=n] ||
> COMPILE_TEST [=y]) && O>
>
> This is because PINCTRL_ASPEED_G* selects PINCTRL_ASPEED,
> without selecting or depending on MFD_SYSCON, despite
> PINCTRL_ASPEED depending on MFD_SYSCON.
>
> These unmet dependency bugs were detected by Kismet,
> a static analysis tool for Kconfig. Please advise
> if this is not the appropriate solution.
>
> Signed-off-by: Julian Braha <[email protected]>

From a system-level perspective MFD_SYSCON is selected by ARCH_ASPEED,
then the MACH_ASPEED_G* symbols depend on ARCH_ASPEED.

However, that doesn't help the COMPILE_TEST case, so we need some
solution. Since MFD_SYSCON is required by all the relevant drivers and
the aspeed pinctrl core, maybe it would be best just to add as a select to
PINCTRL_ASPEED? Unless there's an argument for depends instead?

Thanks for the patch and report!

Andrew

> ---
> drivers/pinctrl/aspeed/Kconfig | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/drivers/pinctrl/aspeed/Kconfig b/drivers/pinctrl/aspeed/Kconfig
> index de8b185c4fee..b0bae6144fc2 100644
> --- a/drivers/pinctrl/aspeed/Kconfig
> +++ b/drivers/pinctrl/aspeed/Kconfig
> @@ -11,6 +11,7 @@ config PINCTRL_ASPEED
> config PINCTRL_ASPEED_G4
> bool "Aspeed G4 SoC pin control"
> depends on (MACH_ASPEED_G4 || COMPILE_TEST) && OF
> + depends on MFD_SYSCON
> select PINCTRL_ASPEED
> help
> Say Y here to enable pin controller support for Aspeed's 4th
> @@ -19,6 +20,7 @@ config PINCTRL_ASPEED_G4
> config PINCTRL_ASPEED_G5
> bool "Aspeed G5 SoC pin control"
> depends on (MACH_ASPEED_G5 || COMPILE_TEST) && OF
> + depends on MFD_SYSCON
> select PINCTRL_ASPEED
> help
> Say Y here to enable pin controller support for Aspeed's 5th
> @@ -27,6 +29,7 @@ config PINCTRL_ASPEED_G5
> config PINCTRL_ASPEED_G6
> bool "Aspeed G6 SoC pin control"
> depends on (MACH_ASPEED_G6 || COMPILE_TEST) && OF
> + depends on MFD_SYSCON
> select PINCTRL_ASPEED
> help
> Say Y here to enable pin controller support for Aspeed's 6th
> --
> 2.30.2