summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2014-09-12 12:02:05 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2014-09-15 07:17:06 +0200
commit92fd6af3476bffdf53242efc4dc6ef83b2aa22ce (patch)
tree2e94a9a9d2dbf97a1a3a94470ed9d670d7b1d50a
parent03be149952e283ee18688092b7d27701dfab7039 (diff)
downloadbarebox-92fd6af3476bffdf53242efc4dc6ef83b2aa22ce.tar.gz
barebox-92fd6af3476bffdf53242efc4dc6ef83b2aa22ce.tar.xz
pinctrl: fix Kconfig dependencies
- 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@pengutronix.de> Acked-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
-rw-r--r--arch/arm/Kconfig2
-rw-r--r--arch/arm/mach-mvebu/Kconfig4
-rw-r--r--arch/arm/mach-tegra/Kconfig3
-rw-r--r--drivers/pinctrl/Kconfig24
-rw-r--r--drivers/pinctrl/mvebu/Kconfig8
-rw-r--r--drivers/pinctrl/pinctrl-rockchip.c3
-rw-r--r--drivers/pinctrl/pinctrl.c6
7 files changed, 31 insertions, 19 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 13f0bd41be..3c9b81ab06 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -109,6 +109,7 @@ config ARCH_MVEBU
select MVEBU_MBUS
select OFTREE
select OF_ADDRESS_PCI
+ select PINCTRL
config ARCH_MXS
bool "Freescale i.MX23/28 (mxs) based"
@@ -208,6 +209,7 @@ config ARCH_TEGRA
select OFTREE
select RELOCATABLE
select RESET_CONTROLLER
+ select PINCTRL
config ARCH_UEMD
bool "RC Module UEMD Platform"
diff --git a/arch/arm/mach-mvebu/Kconfig b/arch/arm/mach-mvebu/Kconfig
index 3270f9265b..7f6e44e7fc 100644
--- a/arch/arm/mach-mvebu/Kconfig
+++ b/arch/arm/mach-mvebu/Kconfig
@@ -14,25 +14,21 @@ config ARCH_ARMADA_370
bool "Armada 370"
select CPU_V7
select CLOCKSOURCE_MVEBU
- select PINCTRL_ARMADA_370
config ARCH_ARMADA_XP
bool "Armada XP"
select CPU_V7
select CLOCKSOURCE_MVEBU
- select PINCTRL_ARMADA_XP
config ARCH_DOVE
bool "Dove 88AP510"
select CPU_V7
select CLOCKSOURCE_ORION
- select PINCTRL_DOVE
config ARCH_KIRKWOOD
bool "Kirkwood"
select CPU_FEROCEON
select CLOCKSOURCE_ORION
- select PINCTRL_KIRKWOOD
endchoice
diff --git a/arch/arm/mach-tegra/Kconfig b/arch/arm/mach-tegra/Kconfig
index 7214ecaf3a..2c69406dfc 100644
--- a/arch/arm/mach-tegra/Kconfig
+++ b/arch/arm/mach-tegra/Kconfig
@@ -44,15 +44,12 @@ endchoice
config ARCH_TEGRA_2x_SOC
bool
- select PINCTRL_TEGRA20
config ARCH_TEGRA_3x_SOC
bool
- select PINCTRL_TEGRA30
config ARCH_TEGRA_124_SOC
bool
- select PINCTRL_TEGRA30
menu "select Tegra boards to be built"
diff --git a/drivers/pinctrl/Kconfig b/drivers/pinctrl/Kconfig
index 398b931546..770fb2d414 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 be154ed437..af20cad439 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 56377ea276..5f04c048cb 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 8963ac75c0..d6479b9cd5 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);