Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 170c6152 authored by Tony Prisk's avatar Tony Prisk
Browse files

pinctrl: gpio: vt8500: Add pincontrol driver for arch-vt8500



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: default avatarTony Prisk <linux@prisktech.co.nz>
Reviewed-by: default avatarStephen Warren <swarren@nvidia.com>
Acked-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent 01bb914c
Loading
Loading
Loading
Loading
+57 −0
Original line number Diff line number Diff line
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 −0
Original line number Diff line number Diff line
@@ -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.

+1 −0
Original line number Diff line number Diff line
@@ -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
+1 −0
Original line number Diff line number Diff line
@@ -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 −0
Original line number Diff line number Diff line
#
# 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
Loading