Skip to content

Commit

Permalink
pinctrl: gpio: vt8500: Add pincontrol driver for arch-vt8500
Browse files Browse the repository at this point in the history
This patch adds support for the GPIO/pinmux controller found on the VIA
VT8500 and Wondermedia WM8xxx-series SoCs.

Each pin within the controller is capable of operating as a GPIO or as
an alternate function. The pins are numbered according to their control
bank/bit so that if new pins are added, the existing numbering is maintained.

All currently supported SoCs are included: VT8500, WM8505, WM8650, WM8750 and
WM8850.

Signed-off-by: Tony Prisk <linux@prisktech.co.nz>
Reviewed-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
  • Loading branch information
Tony Prisk committed Apr 4, 2013
1 parent 01bb914 commit 170c615
Show file tree
Hide file tree
Showing 13 changed files with 3,031 additions and 0 deletions.
57 changes: 57 additions & 0 deletions Documentation/devicetree/bindings/pinctrl/pinctrl-vt8500.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
VIA VT8500 and Wondermedia WM8xxx-series pinmux/gpio controller

These SoCs contain a combined Pinmux/GPIO module. Each pin may operate as
either a GPIO in, GPIO out or as an alternate function (I2C, SPI etc).

Required properties:
- compatible: "via,vt8500-pinctrl", "wm,wm8505-pinctrl", "wm,wm8650-pinctrl",
"wm8750-pinctrl" or "wm,wm8850-pinctrl"
- reg: Should contain the physical address of the module's registers.
- interrupt-controller: Marks the device node as an interrupt controller.
- #interrupt-cells: Should be two.
- gpio-controller: Marks the device node as a GPIO controller.
- #gpio-cells : Should be two. The first cell is the pin number and the
second cell is used to specify optional parameters.
bit 0 - active low

Please refer to ../gpio/gpio.txt for a general description of GPIO bindings.

Please refer to pinctrl-bindings.txt in this directory for details of the
common pinctrl bindings used by client devices, including the meaning of the
phrase "pin configuration node".

Each pin configuration node lists the pin(s) to which it applies, and one or
more of the mux functions to select on those pin(s), and pull-up/down
configuration. Each subnode only affects those parameters that are explicitly
listed. In other words, a subnode that lists only a mux function implies no
information about any pull configuration. Similarly, a subnode that lists only
a pull parameter implies no information about the mux function.

Required subnode-properties:
- wm,pins: An array of cells. Each cell contains the ID of a pin.

Optional subnode-properties:
- wm,function: Integer, containing the function to mux to the pin(s):
0: GPIO in
1: GPIO out
2: alternate

- wm,pull: Integer, representing the pull-down/up to apply to the pin(s):
0: none
1: down
2: up

Each of wm,function and wm,pull may contain either a single value which
will be applied to all pins in wm,pins, or one value for each entry in
wm,pins.

Example:

pinctrl: pinctrl {
compatible = "wm,wm8505-pinctrl";
reg = <0xD8110000 0x10000>;
interrupt-controller;
#interrupt-cells = <2>;
gpio-controller;
#gpio-cells = <2>;
};
1 change: 1 addition & 0 deletions arch/arm/mach-vt8500/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ config ARCH_VT8500
select GENERIC_CLOCKEVENTS
select HAVE_CLK
select VT8500_TIMER
select PINCTRL
help
Support for VIA/WonderMedia VT8500/WM85xx System-on-Chip.

Expand Down
1 change: 1 addition & 0 deletions drivers/pinctrl/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -229,6 +229,7 @@ config PINCTRL_EXYNOS5440
source "drivers/pinctrl/mvebu/Kconfig"
source "drivers/pinctrl/sh-pfc/Kconfig"
source "drivers/pinctrl/spear/Kconfig"
source "drivers/pinctrl/vt8500/Kconfig"

config PINCTRL_XWAY
bool
Expand Down
1 change: 1 addition & 0 deletions drivers/pinctrl/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -52,3 +52,4 @@ obj-$(CONFIG_PLAT_ORION) += mvebu/
obj-$(CONFIG_ARCH_SHMOBILE) += sh-pfc/
obj-$(CONFIG_SUPERH) += sh-pfc/
obj-$(CONFIG_PLAT_SPEAR) += spear/
obj-$(CONFIG_ARCH_VT8500) += vt8500/
52 changes: 52 additions & 0 deletions drivers/pinctrl/vt8500/Kconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
#
# VIA/Wondermedia PINCTRL drivers
#

if ARCH_VT8500

config PINCTRL_WMT
bool
select PINMUX
select GENERIC_PINCONF

config PINCTRL_VT8500
bool "VIA VT8500 pin controller driver"
depends on ARCH_WM8505
select PINCTRL_WMT
help
Say yes here to support the gpio/pin control module on
VIA VT8500 SoCs.

config PINCTRL_WM8505
bool "Wondermedia WM8505 pin controller driver"
depends on ARCH_WM8505
select PINCTRL_WMT
help
Say yes here to support the gpio/pin control module on
Wondermedia WM8505 SoCs.

config PINCTRL_WM8650
bool "Wondermedia WM8650 pin controller driver"
depends on ARCH_WM8505
select PINCTRL_WMT
help
Say yes here to support the gpio/pin control module on
Wondermedia WM8650 SoCs.

config PINCTRL_WM8750
bool "Wondermedia WM8750 pin controller driver"
depends on ARCH_WM8750
select PINCTRL_WMT
help
Say yes here to support the gpio/pin control module on
Wondermedia WM8750 SoCs.

config PINCTRL_WM8850
bool "Wondermedia WM8850 pin controller driver"
depends on ARCH_WM8850
select PINCTRL_WMT
help
Say yes here to support the gpio/pin control module on
Wondermedia WM8850 SoCs.

endif
8 changes: 8 additions & 0 deletions drivers/pinctrl/vt8500/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# VIA/Wondermedia pinctrl support

obj-$(CONFIG_PINCTRL_WMT) += pinctrl-wmt.o
obj-$(CONFIG_PINCTRL_VT8500) += pinctrl-vt8500.o
obj-$(CONFIG_PINCTRL_WM8505) += pinctrl-wm8505.o
obj-$(CONFIG_PINCTRL_WM8650) += pinctrl-wm8650.o
obj-$(CONFIG_PINCTRL_WM8750) += pinctrl-wm8750.o
obj-$(CONFIG_PINCTRL_WM8850) += pinctrl-wm8850.o
Loading

0 comments on commit 170c615

Please sign in to comment.