[PATCH] pinctrl: fix Kconfig dependencies
Sebastian Hesselbarth
sebastian.hesselbarth at gmail.com
Fri Sep 12 08:18:18 PDT 2014
On 09/12/2014 12:07 PM, Sascha Hauer wrote:
> - Remove OFDEVICE dependency from PINCTRL. It won't do
> much then, so add a comment to Kconfig when PINCTRL is
> selected without OFDEVICE
> - Let Architectures only select PINCTRL instead of the
> particular driver. Change the drivers to 'default y if $SOC'
> to make sure the drivers are still compiled if the corresponding
> SoC is selected
>
> This fixes Kconfig warnings like:
>
> warning: (PINCTRL_ARMADA_370 && PINCTRL_ARMADA_XP && PINCTRL_DOVE && PINCTRL_KIRKWOOD) selects PINCTRL which has unmet direct dependencies (OFDEVICE)
>
> Signed-off-by: Sascha Hauer <s.hauer at pengutronix.de>
> ---
> arch/arm/mach-mvebu/Kconfig | 8 ++++----
> arch/arm/mach-tegra/Kconfig | 6 +++---
> drivers/pinctrl/Kconfig | 24 ++++++++++++++++--------
> drivers/pinctrl/mvebu/Kconfig | 8 ++++----
> drivers/pinctrl/pinctrl-rockchip.c | 3 +++
> drivers/pinctrl/pinctrl.c | 6 ++++++
> 6 files changed, 36 insertions(+), 19 deletions(-)
For mvebu, you could also move 'select PINCTRL' to config MACH_MVEBU.
I guess the same is also true for Tegra?
But that is just a nit, so
Acked-by: Sebastian Hesselbarth <sebastian.hesselbarth at gmail.com>
Thanks!
> diff --git a/arch/arm/mach-mvebu/Kconfig b/arch/arm/mach-mvebu/Kconfig
> index 3270f92..111816a 100644
> --- a/arch/arm/mach-mvebu/Kconfig
> +++ b/arch/arm/mach-mvebu/Kconfig
> @@ -14,25 +14,25 @@ config ARCH_ARMADA_370
> bool "Armada 370"
> select CPU_V7
> select CLOCKSOURCE_MVEBU
> - select PINCTRL_ARMADA_370
> + select PINCTRL
>
> config ARCH_ARMADA_XP
> bool "Armada XP"
> select CPU_V7
> select CLOCKSOURCE_MVEBU
> - select PINCTRL_ARMADA_XP
> + select PINCTRL
>
> config ARCH_DOVE
> bool "Dove 88AP510"
> select CPU_V7
> select CLOCKSOURCE_ORION
> - select PINCTRL_DOVE
> + select PINCTRL
>
> config ARCH_KIRKWOOD
> bool "Kirkwood"
> select CPU_FEROCEON
> select CLOCKSOURCE_ORION
> - select PINCTRL_KIRKWOOD
> + select PINCTRL
>
> endchoice
>
> diff --git a/arch/arm/mach-tegra/Kconfig b/arch/arm/mach-tegra/Kconfig
> index 7214eca..ced2e6d 100644
> --- a/arch/arm/mach-tegra/Kconfig
> +++ b/arch/arm/mach-tegra/Kconfig
> @@ -44,15 +44,15 @@ endchoice
>
> config ARCH_TEGRA_2x_SOC
> bool
> - select PINCTRL_TEGRA20
> + select PINCTRL
>
> config ARCH_TEGRA_3x_SOC
> bool
> - select PINCTRL_TEGRA30
> + select PINCTRL
>
> config ARCH_TEGRA_124_SOC
> bool
> - select PINCTRL_TEGRA30
> + select PINCTRL
>
> menu "select Tegra boards to be built"
>
> diff --git a/drivers/pinctrl/Kconfig b/drivers/pinctrl/Kconfig
> index 398b931..770fb2d 100644
> --- a/drivers/pinctrl/Kconfig
> +++ b/drivers/pinctrl/Kconfig
> @@ -1,20 +1,21 @@
> config PINCTRL
> bool "Pin controller core support"
> - depends on OFDEVICE
> + default y if OFDEVICE
> help
> Pincontrollers allow to setup the iomux unit of SoCs. The pin
> controller core is needed when pin muxing shall be configured
> from the devicetree. Legacy drivers here may not need this core
> support but instead provide their own SoC specific APIs
>
> +# The following drivers are needed even without PINCTRL because
> +# the either have a legacy iomux interface or also register a gpio
> +# chip.
> config PINCTRL_AT91
> - select PINCTRL if OFDEVICE
> bool
> help
> The pinmux controller found on AT91 SoCs.
>
> config PINCTRL_IMX_IOMUX_V1
> - select PINCTRL if OFDEVICE
> bool
> help
> This iomux controller is found on i.MX1,21,27.
> @@ -25,13 +26,18 @@ config PINCTRL_IMX_IOMUX_V2
> This iomux controller is found on i.MX31.
>
> config PINCTRL_IMX_IOMUX_V3
> - select PINCTRL if OFDEVICE
> bool
> help
> This iomux controller is found on i.MX25,35,51,53,6.
>
> +if PINCTRL
> +
> +if !OFDEVICE
> +comment "OFDEVICE is not enabled."
> +comment "Without device tree support PINCTRL won't do anything"
> +endif
> +
> config PINCTRL_ROCKCHIP
> - select PINCTRL
> select GPIO_GENERIC
> select MFD_SYSCON
> bool
> @@ -39,19 +45,21 @@ config PINCTRL_ROCKCHIP
> The pinmux controller found on Rockchip SoCs.
>
> config PINCTRL_SINGLE
> - select PINCTRL
> bool "pinctrl single"
>
> config PINCTRL_TEGRA20
> - select PINCTRL
> bool
> + default y if ARCH_TEGRA_2x_SOC
> help
> The pinmux controller found on the Tegra 20 line of SoCs.
>
> config PINCTRL_TEGRA30
> - select PINCTRL
> bool
> + default y if ARCH_TEGRA_3x_SOC
> + default y if ARCH_TEGRA_124_SOC
> help
> The pinmux controller found on the Tegra 30+ line of SoCs.
>
> source drivers/pinctrl/mvebu/Kconfig
> +
> +endif
> diff --git a/drivers/pinctrl/mvebu/Kconfig b/drivers/pinctrl/mvebu/Kconfig
> index be154ed..af20cad 100644
> --- a/drivers/pinctrl/mvebu/Kconfig
> +++ b/drivers/pinctrl/mvebu/Kconfig
> @@ -1,15 +1,15 @@
> config PINCTRL_ARMADA_370
> + default y if ARCH_ARMADA_370
> bool
> - select PINCTRL
>
> config PINCTRL_ARMADA_XP
> bool
> - select PINCTRL
> + default y if ARCH_ARMADA_XP
>
> config PINCTRL_DOVE
> bool
> - select PINCTRL
> + default y if ARCH_DOVE
>
> config PINCTRL_KIRKWOOD
> bool
> - select PINCTRL
> + default y if ARCH_KIRKWOOD
> diff --git a/drivers/pinctrl/pinctrl-rockchip.c b/drivers/pinctrl/pinctrl-rockchip.c
> index 56377ea..5f04c04 100644
> --- a/drivers/pinctrl/pinctrl-rockchip.c
> +++ b/drivers/pinctrl/pinctrl-rockchip.c
> @@ -443,6 +443,9 @@ static int rockchip_pinctrl_probe(struct device_d *dev)
> if (ret)
> return ret;
>
> + if (!IS_ENABLED(CONFIG_PINCTRL))
> + return 0;
> +
> ret = pinctrl_register(&info->pctl_dev);
> if (ret)
> return ret;
> diff --git a/drivers/pinctrl/pinctrl.c b/drivers/pinctrl/pinctrl.c
> index 8963ac7..d6479b9 100644
> --- a/drivers/pinctrl/pinctrl.c
> +++ b/drivers/pinctrl/pinctrl.c
> @@ -62,6 +62,9 @@ int of_pinctrl_select_state(struct device_node *np, const char *name)
> struct device_node *np_config;
> const char *statename;
>
> + if (!IS_ENABLED(CONFIG_PINCTRL))
> + return -ENOSYS;
> +
> if (!of_find_property(np, "pinctrl-0", NULL))
> return 0;
>
> @@ -146,6 +149,9 @@ int pinctrl_select_state_default(struct device_d *dev)
>
> int pinctrl_register(struct pinctrl_device *pdev)
> {
> + if (!IS_ENABLED(CONFIG_PINCTRL))
> + return -ENOSYS;
> +
> BUG_ON(!pdev->dev->device_node);
>
> list_add_tail(&pdev->list, &pinctrl_list);
>
More information about the barebox
mailing list