Commit Graph

661613 Commits

Author SHA1 Message Date
Colin Ian King
5e5535213f ARM: at91/at91-pinctrl documentation: fix spelling mistake: "contoller" -> "controller"
trivial fix to spelling mistake in documentation

Signed-off-by: Colin Ian King <colin.king@canonical.com>
Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2017-04-24 18:32:56 +02:00
Paul Gortmaker
4726a2c371 pinctrl: make artpec6 explicitly non-modular
The Kconfig currently controlling compilation of this code is:

drivers/pinctrl/Kconfig:config PINCTRL_ARTPEC6
drivers/pinctrl/Kconfig:        bool "Axis ARTPEC-6 pin controller driver"

...meaning that it currently is not being built as a module by anyone.

Lets remove the modular code that is essentially orphaned, so that
when reading the driver there is no doubt it is builtin-only.

Also note that MODULE_DEVICE_TABLE is a no-op for non-modular code.

We also delete the MODULE_LICENSE tag etc. since all that information
is already contained at the top of the file in the comments.

Cc: Lars Persson <lars.persson@axis.com>
Cc: Niklas Cassel <niklas.cassel@axis.com>
Cc: linux-arm-kernel@axis.com
Cc: linux-gpio@vger.kernel.org
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Acked-by: Jesper Nilsson <jesper.nilsson@axis.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2017-04-24 16:28:27 +02:00
Andrew Jeffery
d0639d39fe pinctrl: aspeed: g5: Add pinconf support
Testing for pinctrl-aspeed-g5 was performed on an AST2500EVB system,
using the strategy outlined in the commit message for the change to the
Aspeed pinctrl core.

Signed-off-by: Andrew Jeffery <andrew@aj.id.au>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2017-04-24 14:55:50 +02:00
Andrew Jeffery
47b50b3743 pinctrl: aspeed: g4: Add pinconf support
Testing for pinctrl-aspeed-g4 was performed on an OpenPOWER Palmetto
system, using the strategy outlined in the commit message for the
change to the Aspeed pinctrl core.

Signed-off-by: Andrew Jeffery <andrew@aj.id.au>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2017-04-24 14:55:03 +02:00
Andrew Jeffery
7f354fd138 pinctrl: aspeed: Add core pinconf support
Several pinconf parameters have a fairly straight-forward mapping onto
the Aspeed pin controller. These include management of pull-down bias,
drive-strength, and some debounce configuration.

Pin biasing largely is managed on a per-GPIO-bank basis, aside from the
ADC and RMII/RGMII pins. As the bias configuration for each pin in a
bank maps onto a single per-bank bit, configuration tables will be
introduced to describe the ranges of pins and the supported pinconf
parameter. The use of tables also helps with the sparse support of
pinconf properties, and the fact that not all GPIO banks support
biasing or drive-strength configuration.

Further, as the pin controller uses a consistent approach for bias and
drive strength configuration at the register level, a second table is
defined for looking up the the bit-state required to enable or query the
provided configuration.

Testing for pinctrl-aspeed-g4 was performed on an OpenPOWER Palmetto
system, and pinctrl-aspeed-g5 on an AST2500EVB as well as under QEMU.
The test method was to set the appropriate bits via devmem and verify
the result through the controller's pinconf-pins debugfs file. This
simultaneously validates the get() path and half of the set() path. The
remainder of the set() path was validated by configuring a handful of
pins via the devicetree with the supported pinconf properties and
verifying the appropriate registers were touched.

Signed-off-by: Andrew Jeffery <andrew@aj.id.au>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2017-04-24 14:53:58 +02:00
Andrew Jeffery
6de2185bc7 pinctrl: aspeed: Document pinconf in devicetree bindings
Signed-off-by: Andrew Jeffery <andrew@aj.id.au>
Acked-by: Rob Herring <robh@kernel.org>
Acked-by: Joel Stanley <joel@jms.id.au>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2017-04-24 14:41:58 +02:00
Alexandre TORGUE
94bfc9be6d pinctrl: Add st,stm32f469-pinctrl compatible to stm32-pinctrl
Add new compatible for stm32f469 MCU.

Signed-off-by: Alexandre TORGUE <alexandre.torgue@st.com>
Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2017-04-24 14:28:58 +02:00
Alexandre TORGUE
ca028dbb18 pinctrl: stm32: Add STM32F469 MCU support
This patch which adds STM32F469 pinctrl and GPIO support, relies on the
generic STM32 pinctrl driver.

Signed-off-by: Alexandre TORGUE <alexandre.torgue@st.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2017-04-24 14:26:14 +02:00
Alexandre TORGUE
269fcf3666 Documentation: dt: Remove ngpios from stm32-pinctrl binding
Remove "ngpios" bindings definition as it is no more used in stm32 pinctrl
driver.

Signed-off-by: Alexandre TORGUE <alexandre.torgue@st.com>
Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2017-04-24 14:24:17 +02:00
Alexandre TORGUE
4a4e5f6f77 pinctrl: stm32: replace device_initcall() with arch_initcall()
Pinctrl has to be registered earlier. Mainly to register bank irqdomain
earlier as other devices could use interrupts from those irqdomain.

Signed-off-by: Alexandre TORGUE <alexandre.torgue@st.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2017-04-24 14:21:31 +02:00
Alexandre TORGUE
1dc9d28915 pinctrl: stm32: add possibility to use gpio-ranges to declare bank range
Use device tree entries to declare gpio range. It will allow to use
no contiguous gpio bank and holes inside a bank.

Signed-off-by: Alexandre TORGUE <alexandre.torgue@st.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2017-04-24 14:20:05 +02:00
Gregory CLEMENT
5715092a45 pinctrl: armada-37xx: Add gpio support
GPIO management is pretty simple and is part of the same IP than the pin
controller for the Armada 37xx SoCs.  This patch adds the GPIO support to
the pinctrl-armada-37xx.c file, it also allows sharing common functions
between the gpiolib and the pinctrl drivers.

Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2017-04-24 13:47:29 +02:00
Gregory CLEMENT
87466ccd94 pinctrl: armada-37xx: Add pin controller support for Armada 37xx
The Armada 37xx SoC come with 2 pin controllers: one on the south
bridge (managing 28 pins) and one on the north bridge (managing 36 pins).

At the hardware level the controller configure the pins by group and not
pin by pin. This constraint is reflected in the design of the driver:
only the group related functions are implemented.

Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2017-04-24 11:31:36 +02:00
Gregory CLEMENT
f13980e408 pinctrl: dt-bindings: Add documentation for Armada 37xx pin controllers
Document the device tree binding for the pin controllers found on the
Armada 37xx SoCs.

Update the binding documention of the xtal clk which is a subnode of this
syscon node.

Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
Acked-by: Rob Herring <robh@kernel.org>
[Fixed gpios node]
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2017-04-24 11:28:09 +02:00
Andy Shevchenko
0ca4921fe9 pinctrl: core: Make pinctrl_init_controller() static
pinctrl_init_controller() is not used outside core.c, thus make it
static and prevent compiler to warn.

drivers/pinctrl/core.c:1943:21: warning: no previous prototype for ‘pinctrl_init_controller’ [-Wmissing-prototypes]
 struct pinctrl_dev *pinctrl_init_controller(struct pinctrl_desc *pctldesc,
                     ^~~~~~~~~~~~~~~~~~~~~~~

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2017-04-24 11:10:13 +02:00
Jacopo Mondi
8c58f1a7a4 pinctrl: generic: Add bi-directional and output-enable
Add bi-directional and output-enable pin configuration properties.

bi-directional allows to specify when a pin shall operate in input and
output mode at the same time. This is particularly useful in platforms
where input and output buffers have to be manually enabled.

output-enable is just syntactic sugar to specify that a pin shall
operate in output mode, ignoring the provided argument.
This pairs with input-enable pin configuration option.

Signed-off-by: Jacopo Mondi <jacopo+renesas@jmondi.org>
Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2017-04-11 11:01:33 +02:00
Andrew Jeffery
03ffb507c8 pinctrl: aspeed: Fix unused-const-variable warnings
Three video input signals suffered from a search/replace failure in
some copied code.

Signed-off-by: Andrew Jeffery <andrew@aj.id.au>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2017-04-11 09:47:44 +02:00
Linus Walleij
8d4264d86c Samsung pinctrl drivers update for v4.12:
1. Add support for pad retention control through pinctrl drivers which
    moves us forward to better runtime PM of pinctrl, clocks, power domains
    and other devices.
 2. Fix GPIO hogs by registering pinctrl before registering gpiolib.
 3. Use devm-like interface.
 -----BEGIN PGP SIGNATURE-----
 
 iQIcBAABCAAGBQJY6PDLAAoJEME3ZuaGi4PXPnoP/1BDiHqAzaVqW68JlsTz9now
 dMHugeIKG6GzDe1wjXxvpdcpnSNSl9nUTry0sEdjYvhJXEp+WGDkciIa811elX4f
 w5LQ+cWkHYg40mGgalrcZ2eoihAShgYIe3yW7eg2vPDAwFZ2uBecColbGX7Jkazj
 7Y3zGVo+zBt38AGQ8w9rWw+kjcmqhWbzx1q4wf2uwTXkUGSbSvgkZ2UwDmO3jktK
 VhYtWIQUkXFJDQvd7nFcWiEJhE35AqGIaxv4LW7LO6iWMsYy4oSMeRrCZxY8VP+G
 q70+G+3JMgFc6GEVtWPpnEpDXp5gai4db/2tOWWrJQ/nvi1ODtbN5/iuG6KmSfRz
 O950AiYrthMjK3QIo82EC2xHNSIHCwRw1L4z+YBcF8u3GpGyT3uO8q/Xmt+z4uk1
 SjHCJrmS9Vz0xldierO4FoeIwbOzqElkzPss1uvTLFzgF3SC2tfHZaAMyf+f98bI
 68fGmPmzveJrLKdc4pl7D5L3u28h4bIiXGwWFI9zLY4LDTfzlhzWrzh6q+RM35Pa
 gcoicNEUNeHpmUZuD7PI5NnTvHrcZexVDy6ODi8hYnKkF2Vc6tq/L4LYXuA59NEN
 fJOGW7hTgO4RJbInoKD8o8o4NEBU5QsrUtMTBfNqGowqgEow/JgR8wF/5KO8iWXN
 AcKgX3ybZ/4a5CL68zjW
 =r4lP
 -----END PGP SIGNATURE-----

Merge tag 'samsung-pinctrl-4.12' of git://git.kernel.org/pub/scm/linux/kernel/git/pinctrl/samsung into devel

Samsung pinctrl drivers update for v4.12:
1. Add support for pad retention control through pinctrl drivers which
   moves us forward to better runtime PM of pinctrl, clocks, power domains
   and other devices.
2. Fix GPIO hogs by registering pinctrl before registering gpiolib.
3. Use devm-like interface.
2017-04-10 09:35:30 +02:00
Alexandre Belloni
ba9e7f2794 pinctrl: at91-pio4: handle suspend to ram
When suspending to RAM, the power to the core is cut and the register
values are lost. Save and restore more registers than just IMR.

Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2017-04-07 14:32:51 +02:00
Jacopo Mondi
8d5e7c5df0 Documentation: pinctrl: Add "pinmux" property
Document "pinmux" property as part of generic pin controller
documentation.
Fix 2 minor typos in documentation while at there.

Signed-off-by: Jacopo Mondi <jacopo+renesas@jmondi.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2017-04-07 12:09:33 +02:00
Geert Uytterhoeven
6bffa7e163 pinctrl: pinmux: Fix kerneldoc for pinmux_generic_add_function()
Correct the incorrect function name and description.

Fixes: a76edc89b1 ("pinctrl: core: Add generic pinctrl functions for managing groups")
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Acked-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2017-04-07 11:52:09 +02:00
Jesper Nilsson
00df0582ea pinctrl: Add pincontrol driver for ARTPEC-6 SoC
Add pinctrl driver support for the Axis ARTPEC-6 SoC.
There are only some pins that actually have different
functions available, but all can control bias (pull-up/-down)
and drive strength.

Code originally written by Chris Paterson.

Signed-off-by: Jesper Nilsson <jesper.nilsson@axis.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2017-04-07 11:48:33 +02:00
Jesper Nilsson
9c6c149be3 pinctrl: Add bindings for ARTPEC-6 pinmux
Add the bindings for the pinmux functions in the
ARTPEC-6 SoC, including bias and drive strength.

Signed-off-by: Jesper Nilsson <jesper.nilsson@axis.com>
Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2017-04-07 11:47:00 +02:00
Martin Blumenstingl
4781c22c76 pinctrl: meson: meson8b: rename the NAND DQS pin definitions
The NAND DQS pins are currently named nand_dqs_0 and nand_dqs_1.
However, they both seem to have the same function, just exposed on
different pins (unlike the ethernet TX pins for example, where there's
eth_txd0..3 - all of these can be active at the same time as they are
different data lines).
Rename the NAND DQS pins to nand_dqs_15 and nand_dqs_18 to reflect that
it's the same functionality just exposed on different pins (BOOT_15 and
BOOT_18).

Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Acked-by: Kevin Hilman <khilman@baylibre.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2017-04-07 09:30:39 +02:00
Martin Blumenstingl
97ba26b8a9 pinctrl: meson: meson8b: fix the NAND DQS pins
The nand_groups table uses different names for the NAND DQS pins than
the GROUP() definition in meson8b_cbus_groups (nand_dqs_0 vs nand_dqs0).
This prevents using the NAND DQS pins in the devicetree.

Fix this by ensuring that the GROUP() definition and the
meson8b_cbus_groups use the same name for these pins.

Fixes: 0fefcb6876 ("pinctrl: Add support for Meson8b")
Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Acked-by: Kevin Hilman <khilman@baylibre.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2017-04-07 09:29:02 +02:00
Linus Walleij
9891baca2c pinctrl: sh-pfc: Updates for v4.12 (take two)
- Add basic support for the Pin Function Controller on revision ES2.0
     of the R-Car H3 SoC, which differs from ES1.x in many ways.
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iQIcBAABAgAGBQJY3h2vAAoJEEgEtLw/Ve77hCwP/0k48APKuK+OYbTqlLadouK/
 /TfPiFG2r2qaoPoZiL3Afnh8rbYxKP4fh3iemoAclE6TuqV2K/OU7T31KT+0o3T9
 enOQ0zjKgIyetyknBNSiWZ9rx/lQQ0H9ZUUlFkd3mc/BuUYach0tXt4UZL3zgQVs
 GhUrYbW8tmNv5o+UlhRB6ht26BA3DKOC/m2DEmHDzEHCAjnIWI7wIimAuDTIIFIE
 6q/E1Q/l/krJaY1GXKQQiSx+7jH6sPBR3YBupzzP4BlPpEf7evyNtQIHTiP2P2WM
 a4hcqQi+1zdfZ50XUQxv4L1q28RRKoq3wyDWa4uW+MGLPbICzR5TfFJBgaT8Rb3+
 jCL8b4ju7IR/WWc1vKLxSW2XVPyc2naeF4p4nFTCRcxbznSRbly0aHDnKh1YVGuU
 SFHCtOCNsECSmEPtuCfElPiKcrcWQg9hLHaYY6mgTh5deSVjEqjSn0wD3+DW+pen
 c1pmwFtrgQGFXJgjH3YI5gRJevAQxotzUdvCJ+mfRbz/EiuiZRD4wOvo24bs3SkH
 LQPqbFJ93GnIu11EaeJD/uE4GmMSj9oO9c0bI1t3mJTuNzzV+9lOVaxhp5KgRExr
 6YYlKuFZygtHCMUrI221+OZqAeSe7fcz/O4W3cjk2xJX898mZ+Ly1b7wqUC085GD
 gfrm2MDgu4e27DOuvkl5
 =fKYc
 -----END PGP SIGNATURE-----

Merge tag 'sh-pfc-for-v4.12-tag2' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-drivers into devel

pinctrl: sh-pfc: Updates for v4.12 (take two)

  - Add basic support for the Pin Function Controller on revision ES2.0
    of the R-Car H3 SoC, which differs from ES1.x in many ways.
2017-04-04 13:56:08 +02:00
Geert Uytterhoeven
d14a39edf7 pinctrl: sh-pfc: r8a7795: Add SCIF_CLK support
Add pins, groups, and a function for SCIF_CLK on R-Car H3 ES2.0.
SCIF_CLK is the external clock source for the Baud Rate Generator for
External Clock (BRG) on (H)SCIF serial ports.

Extracted from a big patch in the BSP by Takeshi Kihara.

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Cc: Takeshi Kihara <takeshi.kihara.df@renesas.com>
2017-03-30 13:43:55 +02:00
Geert Uytterhoeven
e7ad4d3c1d pinctrl: sh-pfc: r8a7795: Add SCIF support
Add pins, groups, and functions for all SCIF serial ports on R-Car H3
ES2.0.

Extracted from a big patch in the BSP by Takeshi Kihara.

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Cc: Takeshi Kihara <takeshi.kihara.df@renesas.com>
2017-03-30 13:43:51 +02:00
Geert Uytterhoeven
b205914c8f pinctrl: sh-pfc: r8a7795: Add support for R-Car H3 ES2.0
The Pin Function Controller module in the R-Car H3 ES2.0 differs from
ES1.x in many ways.

The goal is twofold:
  1. Support both the ES1.x and ES2.0 SoC revisions in a single binary
     for now,
  2. Make it clear which code supports ES1.x, so it can easily be
     identified and removed later, when production SoCs are deemed
     ubiquitous.

Hence this patch:
  1. Extracts the support for R-Car H3 ES1.x into a separate file, as
     the differences are quite large,
  2. Adds code for detecting the SoC revision at runtime using the new
     soc_device_match() API, and selecting pinctrl tables for the actual
     SoC revision,
  3. Replaces the core register and bitfield definitions by their
     counterparts for R-Car H3 ES2.0.

The addition of pins, groups, and functions for the various on-chip
devices is left to subsequent patches.

The R-Car H3 ES2.0 register and bitfield definitions were extracted from
a patch in the BSP by Takeshi Kihara.

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Cc: Takeshi Kihara <takeshi.kihara.df@renesas.com>
2017-03-30 13:43:45 +02:00
Jerome Brunet
b840d649f9 pinctrl: meson: gxl: add spdif output pins
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2017-03-28 15:14:12 +02:00
Jerome Brunet
2899adf042 pinctrl: meson: gxl: add i2s output pins
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2017-03-28 15:12:53 +02:00
Jerome Brunet
bce12d66d6 pinctrl: meson: gxbb: add spdif output pins
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2017-03-28 15:11:34 +02:00
Jerome Brunet
0145d49053 pinctrl: meson: gxbb: add i2s output pins
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2017-03-28 15:10:29 +02:00
Neil Armstrong
c7fc5fbafa pinctrl: meson: use gpio-ranges from DT
When trying to add a gpio-hog, we enter a weird loop where the gpio-ranges
is needed when gpiochip_add_data() is called but in the current implementation
the ranges are added from the driver afterwards.

A simple solution is to rely on the DR gpio-ranges attribute and remove the
call to gpiochip_add_pin_range().

Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2017-03-28 11:40:24 +02:00
Krzysztof Kozlowski
5fb7edb38d MAINTAINERS: pinctrl: Add git tree to Samsung pinctrl entry
Add a Git tree on @kernel.org for maintaining the Samsung pinctrl
drivers.  The tree will be maintained in a shared model between current
Samsung pinctrl maintainers.  Pull requests will be going to Linus
Walleij.

Also add the patchwork for linux-samsung-soc mailing list which will be
used for handling the patches.

Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
Acked-by: Tomasz Figa <tomasz.figa@gmail.com>
Acked-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2017-03-28 11:33:24 +02:00
Neil Armstrong
6a0ab255ae pinctrl: meson-gxl: Fix inverted registers and add missing pins
Fix some inverted bit numbers in some pinctrl groups and add missing pins
and groups to be in pair with the GXBB pinctrl pins definition.

Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2017-03-28 11:25:35 +02:00
John Keeping
88bb94216f pinctrl: rockchip: avoid hardirq-unsafe functions in irq_chip
With real-time preemption, regmap functions cannot be used in the
implementation of irq_chip since they use spinlocks which may sleep.

Move the setting of the mux for IRQs to an irq_bus_sync_unlock handler
where we are allowed to sleep.

Signed-off-by: John Keeping <john@metanate.com>
Reviewed-by: Heiko Stuebner <heiko@sntech.de>
Tested-by: Heiko Stuebner <heiko@sntech.de>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2017-03-28 11:18:50 +02:00
John Keeping
05709c3e88 pinctrl: rockchip: split out verification of mux settings
We need to avoid calling regmap functions from irq handlers, so the next
commit is going to move the call to rockchip_set_mux() into an
irq_bus_sync_unlock handler.  But we can't return an error from there so
we still need to check the settings from rockchip_irq_set_type() and we
will use this new rockchip_verify_mux() function from there.

Signed-off-by: John Keeping <john@metanate.com>
Reviewed-by: Heiko Stuebner <heiko@sntech.de>
Tested-by: Heiko Stuebner <heiko@sntech.de>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2017-03-28 11:18:03 +02:00
John Keeping
70b7aa7a87 pinctrl: rockchip: convert to raw spinlock
This lock is used from rockchip_irq_set_type() which is part of the
irq_chip implementation and thus must use raw_spinlock_t as documented
in Documentation/gpio/driver.txt.

Signed-off-by: John Keeping <john@metanate.com>
Reviewed-by: Heiko Stuebner <heiko@sntech.de>
Tested-by: Heiko Stuebner <heiko@sntech.de>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2017-03-28 11:17:11 +02:00
John Keeping
f07bedc37f pinctrl: rockchip: remove unnecessary locking
regmap_update_bits does its own locking and everything else accessed
here is a local variable so there is no need to lock around it.

Signed-off-by: John Keeping <john@metanate.com>
Reviewed-by: Heiko Stuebner <heiko@sntech.de>
Tested-by: Heiko Stuebner <heiko@sntech.de>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2017-03-28 11:16:06 +02:00
Linus Walleij
350992348a pinctrl: sh-pfc: Updates for v4.12
- Fixes and cleanups.
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iQIcBAABAgAGBQJY1OQYAAoJEEgEtLw/Ve77FkkP/RDFVCNEY4Z646SuTRdyWZKQ
 xo5GyRS77PMOg2WEcSd9VytavK0J+AnHXwKiAIbYyedS2ki0TNSpt/tpowMxG1BN
 7wdM/pdcoM/81Rof9WVlkQTgi5XZIVn24q2n+L1pj1e+t0dh6cmOQErwfPW0u45n
 02XKkBxMhZfa4skwUcwt7YxEkMHV1/e4FuQYPgzKLhS8OGW/5zluF8ViyRvmanMT
 ATsn/GWOWJuuLqtBcfH1uBz6irY4i3aMnpsdffaG2jHlDQCJ2Vz/KlcyzEzzZqRR
 LUgKeK7vkNgyMZ0GBpar6ywOGgE6AlM3zKcoV5FAqqH6Qh22iI6mfvoNYIH/gr5K
 Digrtjd1Iw3BgGjNr9A/GQxM+bASyKu31pyeptOgkn0vI6CM16w9UqVI47qk6frw
 /29NloFJwTmM+FqPl3inEcC9VqcmWecijYu2S2USYliPbZ8ZqRNMbH+gh25cfzDs
 90QgnjfGewPzQ241FJA13Ozqqrj5tOcqoMLjdJr3qD1nPCA+bbujhSYTMKoID+H5
 YeDaYfFNCA5Kj3kSPMvyOKGSG2UerVKZhb6SiBO4mso9/e/Hssi99feVINuDLAaZ
 /ObO00LTn1EEklbfEFryLgS/vgdmFsFGfVhjf1b/8P0HmJm68UaPpHMETrtX1m0/
 uDNWIpt7V5HgqsvENE28
 =DexH
 -----END PGP SIGNATURE-----

Merge tag 'sh-pfc-for-v4.12-tag1' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-drivers into devel

pinctrl: sh-pfc: Updates for v4.12

  - Fixes and cleanups.
2017-03-24 16:17:04 +01:00
Charles Keepax
f69ae4f58a pinctrl: samsung: Use devres version of gpiochip_add_data
Use devm_gpiochip_add_data to simplify the error path in
samsung_gpiolib_register.

Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
2017-03-23 21:13:19 +02:00
Charles Keepax
1abd18d1a5 pinctrl: samsung: Register pinctrl before GPIO
If we request a GPIO hog, then gpiochip_add_data will attempt
to request some of its own GPIOs. The driver also uses
gpiochip_generic_request which means that for any GPIO request to
succeed the pinctrl needs to be registered. Currently however the
driver registers the GPIO and then the pinctrl meaning all GPIO hog
requests will fail, which then in turn causes the whole driver to fail
probe.

Fix this up by ensuring we register the pinctrl first. This
does require us to manually set the GPIO base for the
pinctrl. Fortunately the driver already assigns a fixed GPIO base, in
samsung_gpiolib_register, and uses the same calculation it does for
the pin_base. Meaning the two will always be the same and allowing us
to reuse the pinbase and avoid the issue.

Although currently there are no users of GPIO hogs in mainline
there are plenty of Samsung based boards that are widely used for
development purposes of other hardware. Indeed we hit this issue
whilst attaching some additional hardware to an Arndale system.

Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
2017-03-23 21:13:19 +02:00
Marek Szyprowski
e1d7eb0c8f pinctrl: samsung: Add support for pad retention control for Exynos5433 SoCs
This patch adds support for retention control for Exynos5433 SoCs. Three
groups of pins has been defined for retention control: common shared group
for ALIVE, CPIF, eSE, FINGER, IMEM, NFC, PERIC, TOUCH pin banks and
separate control for FSYS and AUD pin banks, for which PMU retention
registers match whole banks.

Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
2017-03-23 21:07:02 +02:00
Marek Szyprowski
8fe9bf0742 pinctrl: samsung: Ensure that pad retention is disabled on driver init
When pin controller device is a part of power domain, there is no guarantee
that the power domain was not turned off and then on during boot process
before probing of the pin control driver. If it happened, then pin control
driver should ensure that pad retention is turned off during its probe call.

Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
2017-03-23 21:05:21 +02:00
Hans de Goede
a0b028597d pinctrl: cherryview: Add support for GMMR GPIO opregion
On some Cherry Trail devices the ASL uses the GMMR GPIO to access
GPIOs so as to serialize MMIO accesses to GPIO registers with the
OS, because:

"Due to a silicon issue, a shared lock must be used to prevent concurrent
accesses across the 4 GPIO controllers.

See Intel Atom Z8000 Processor Series Specification Update (Rev. 005),
errata #CHT34, for further information."

This commit adds support for this opregion, this fixes a number of
ASL errors on my Ezpad mini3 tablet and makes the otg port device/host
muxing which is controlled in firmware on this model work properly.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2017-03-23 14:42:51 +01:00
Andy Yan
b9c6dcab26 pinctrl: rockchip: rename RK1108 to RV1108
Rockchip finally named the SOC as RV1108, so change it.

Signed-off-by: Andy Yan <andy.yan@rock-chips.com>
[adapted rk1108 dtsi to keep bisectability]
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2017-03-23 10:17:38 +01:00
Andy Yan
ab714cfb4e dt-bindings: rockchip,pinctrl: rename RK1108 to RV1108
Rockchip finally named the SOC as RV1108, so change it.
Also move the compatible list to one compatible per line.

Signed-off-by: Andy Yan <andy.yan@rock-chips.com>
Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2017-03-23 10:16:14 +01:00
Jeffy Chen
d468289a02 pinctrl: rockchip: add irq_enable & irq_disable ops
Currently we are trying to enable/disable the clk of irq's gpio bank when
unmask/mask irq. But the kernel's "lazy disable approach" will skip masking
irq when the irq chip doesn't support irq_disable ops.

So we may hit this case:
	irq_enable-> enable clk
	irq_disable-> noop
	irq_enable-> enable clk again
	irq_disable-> noop

Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
Reviewed-by: Heiko Stuebner <heiko@sntech.de>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2017-03-23 10:10:01 +01:00
Masahiro Yamada
2afd450d78 pinctrl: uniphier: make drivers non-modular
At first these drivers were written as tristate, but the module
usecases are actually not tested.  Make all of them boolean.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2017-03-23 10:09:51 +01:00