[PATCH 00/12] pinctrl for Ux500 and Nomadik family

May 08th, 2012 - 05:50 am ET by Linus Walleij | Report spam
From: Linus Walleij <linus.walleij@linaro.org>

This moves the Nomadik "GPIO" driver to the pinctrl subsystem
and adds the interfaces needed to provide a pinctrl driver for
the DB8500 ASIC.

It further switches Ux500 over to using it with a combination
of hogs and runtime controls.

The ux500 portions were developed on top of the gpio and pins
branch earlier sent for integration in the ARM SoC tree.

Linus Walleij (12):
gpio: move the Nomadik GPIO driver to pinctrl
pinctrl: basic Nomadik pinctrl interface
pinctrl/nomadik: break out single GPIO debug function
pinctrl/nomadik: reuse GPIO debug function for pins
pinctrl/nomadik: implement pin multiplexing
pinctrl/nomadik: implement pin configuration
pinctrl: add sleep state definition
ARM: ux500: switch over to Nomadik pinctrl driver
ARM: ux500: delete custom pin control system
ARM: ux500: switch to using pinctrl for uart0
ARM: ux500: alter MSP registration to return a device pointer
ARM: ux500: switch MSP to using pinctrl for pins

arch/arm/mach-ux500/Kconfig | 3 +
arch/arm/mach-ux500/board-mop500-msp.c | 85 +-
arch/arm/mach-ux500/board-mop500-pins.c | 855 ++++++-
arch/arm/mach-ux500/board-mop500.c | 83 +-
arch/arm/mach-ux500/board-mop500.h | 6 +-
arch/arm/mach-ux500/cpu-db8500.c | 1 +
arch/arm/mach-ux500/devices-common.h | 12 +
arch/arm/mach-ux500/pins.c | 88 --
arch/arm/mach-ux500/pins.h | 46 -
arch/arm/plat-nomadik/include/plat/pincfg.h | 13 +
drivers/gpio/Makefile | 1 -
drivers/gpio/gpio-nomadik.c | 1306 -
drivers/pinctrl/Kconfig | 10 +
drivers/pinctrl/Makefile | 2 +
drivers/pinctrl/pinctrl-nomadik-db8500.c | 857 +++++++++++++
drivers/pinctrl/pinctrl-nomadik.c | 1800 +++++++++++++++++++++++++++
drivers/pinctrl/pinctrl-nomadik.h | 77 ++
include/linux/pinctrl/pinctrl-state.h | 13 +
18 files changed, 3326 insertions(+), 1932 deletions(-)
delete mode 100644 arch/arm/mach-ux500/pins.c
delete mode 100644 arch/arm/mach-ux500/pins.h
delete mode 100644 drivers/gpio/gpio-nomadik.c
create mode 100644 drivers/pinctrl/pinctrl-nomadik-db8500.c
create mode 100644 drivers/pinctrl/pinctrl-nomadik.c
create mode 100644 drivers/pinctrl/pinctrl-nomadik.h

1.7.9.2

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
email Follow the discussionReplies 5 repliesReplies Make a reply

Replies

#1 Arnd Bergmann
May 15th, 2012 - 07:30 am ET | Report spam
On Tuesday 08 May 2012, Linus Walleij wrote:
From: Linus Walleij

This moves the Nomadik "GPIO" driver to the pinctrl subsystem
and adds the interfaces needed to provide a pinctrl driver for
the DB8500 ASIC.

It further switches Ux500 over to using it with a combination
of hogs and runtime controls.

The ux500 portions were developed on top of the gpio and pins
branch earlier sent for integration in the ARM SoC tree.



I get build errors with nhk8815_defconfig after this:

arch/arm/mach-nomadik/built-in.o: In function `nhk8815_eth_init':
/home/arnd/linux-arm/arch/arm/mach-nomadik/board-nhk8815.c:224: undefined reference to `nmk_gpio_set_mode'
arch/arm/mach-nomadik/built-in.o: In function `nhk8815_i2c_init':
/home/arnd/linux-arm/arch/arm/mach-nomadik/i2c-8815nhk.c:46: undefined reference to `nmk_gpio_set_mode'
/home/arnd/linux-arm/arch/arm/mach-nomadik/i2c-8815nhk.c:47: undefined reference to `nmk_gpio_set_mode'
/home/arnd/linux-arm/arch/arm/mach-nomadik/i2c-8815nhk.c:50: undefined reference to `nmk_gpio_set_mode'
/home/arnd/linux-arm/arch/arm/mach-nomadik/i2c-8815nhk.c:51: undefined reference to `nmk_gpio_set_mode'

Here is my suggested fix:

8<--
ARM: nomadik: enable PINCTRL_NOMADIK where needed

The nomadik gpio code has been converted to pinctrl, but the nomadik platform
still expects the old code to be present. Change it to use the new one instead.

Signed-off-by: Arnd Bergmann

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 5eae559..ce9d88a 100644
a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -929,6 +929,7 @@ config ARCH_NOMADIK
select CPU_ARM926T
select CLKDEV_LOOKUP
select GENERIC_CLOCKEVENTS
+ select PINCTRL
select MIGHT_HAVE_CACHE_L2X0
select ARCH_REQUIRE_GPIOLIB
help
diff --git a/arch/arm/configs/nhk8815_defconfig b/arch/arm/configs/nhk8815_defconfig
index 37207d1..bf123c5 100644
a/arch/arm/configs/nhk8815_defconfig
+++ b/arch/arm/configs/nhk8815_defconfig
@@ -97,6 +97,7 @@ CONFIG_I2C=y
CONFIG_I2C_CHARDEV=y
CONFIG_I2C_GPIO=y
CONFIG_DEBUG_GPIO=y
+CONFIG_PINCTRL_NOMADIK=y
# CONFIG_HWMON is not set
# CONFIG_VGA_CONSOLE is not set
CONFIG_RTC_CLASS=y
diff --git a/arch/arm/mach-nomadik/Kconfig b/arch/arm/mach-nomadik/Kconfig
index 3c5e0f5..365879b 100644
a/arch/arm/mach-nomadik/Kconfig
+++ b/arch/arm/mach-nomadik/Kconfig
@@ -15,6 +15,7 @@ config NOMADIK_8815
config I2C_BITBANG_8815NHK
tristate "Driver for bit-bang busses found on the 8815 NHK"
depends on I2C && MACH_NOMADIK_8815NHK
+ depends on PINCTRL_NOMADIK
select I2C_ALGOBIT
default y

diff --git a/arch/arm/plat-nomadik/include/plat/gpio-nomadik.h b/arch/arm/plat-nomadik/include/plat/gpio-nomadik.h
index 3e8b7f1..826de74 100644
a/arch/arm/plat-nomadik/include/plat/gpio-nomadik.h
+++ b/arch/arm/plat-nomadik/include/plat/gpio-nomadik.h
@@ -62,7 +62,14 @@ enum nmk_gpio_slpm {

extern int nmk_gpio_set_slpm(int gpio, enum nmk_gpio_slpm mode);
extern int nmk_gpio_set_pull(int gpio, enum nmk_gpio_pull pull);
+#ifdef CONFIG_PINCTRL_NOMADIK
extern int nmk_gpio_set_mode(int gpio, int gpio_mode);
+#else
+static inline int nmk_gpio_set_mode(int gpio, int gpio_mode)
+{
+ return -ENODEV;
+}
+#endif
extern int nmk_gpio_get_mode(int gpio);

extern void nmk_gpio_wakeups_suspend(void);
diff --git a/drivers/pinctrl/Kconfig b/drivers/pinctrl/Kconfig
index 848097e..3755c1d 100644
a/drivers/pinctrl/Kconfig
+++ b/drivers/pinctrl/Kconfig
@@ -66,7 +66,7 @@ config PINCTRL_IMX28

config PINCTRL_NOMADIK
bool "Nomadik pin controller driver"
- depends on ARCH_U8500
+ depends on ARCH_U8500 || ARCH_NOMADIK
select PINMUX
select PINCONF
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

Similar topics