* STM32 GPIO and Pin Mux/Config controller

STMicroelectronics's STM32 MCUs intregrate a GPIO and Pin mux/config hardware
controller. It controls the input/output settings on the available pins and
also provides ability to multiplex and configure the output of various on-chip
controllers onto these pads.

Pin controller node:
Required properies:
 - compatible: value should be one of the following:
   (a) "st,stm32f429-pinctrl"
   (b) "st,stm32f746-pinctrl"
 - #address-cells: The value of this property must be 1
 - #size-cells	: The value of this property must be 1
 - ranges	: defines mapping between pin controller node (parent) to
   gpio-bank node (children).
 - pins-are-numbered: Specify the subnodes are using numbered pinmux to
   specify pins.

GPIO controller/bank node:
Required properties:
 - gpio-controller : Indicates this device is a GPIO controller
 - #gpio-cells	  : Should be two.
			The first cell is the pin number
			The second one is the polarity:
				- 0 for active high
				- 1 for active low
 - reg		  : The gpio address range, relative to the pinctrl range
 - clocks	  : clock that drives this bank
 - st,bank-name	  : Should be a name string for this bank as specified in
   the datasheet

Optional properties:
 - reset:	  : Reference to the reset controller
 - interrupt-parent: phandle of the interrupt parent to which the external
   GPIO interrupts are forwarded to.
 - st,syscfg: Should be phandle/offset pair. The phandle to the syscon node
   which includes IRQ mux selection register, and the offset of the IRQ mux
   selection register.

Example:
#include <dt-bindings/pinctrl/stm32f429-pinfunc.h>
...

	pin-controller {
		#address-cells = <1>;
		#size-cells = <1>;
		compatible = "st,stm32f429-pinctrl";
		ranges = <0 0x40020000 0x3000>;
		pins-are-numbered;

		gpioa: gpio@40020000 {
			gpio-controller;
			#gpio-cells = <2>;
			reg = <0x0 0x400>;
			resets = <&reset_ahb1 0>;
			st,bank-name = "GPIOA";
		};
		...
		pin-functions nodes follow...
	};

Contents of function subnode node:
----------------------------------
Subnode format
A pinctrl node should contain at least one subnode representing the
pinctrl group available on the machine. Each subnode will list the
pins it needs, and how they should be configured, with regard to muxer
configuration, pullups, drive, output high/low and output speed.

    node {
	pinmux = <PIN_NUMBER_PINMUX>;
	GENERIC_PINCONFIG;
    };

Required properties:
- pinmux: integer array, represents gpio pin number and mux setting.
  Supported pin number and mux varies for different SoCs, and are defined in
  dt-bindings/pinctrl/<soc>-pinfunc.h directly.
  These defines are calculated as:
    ((port * 16 + line) << 8) | function
  With:
    - port: The gpio port index (PA = 0, PB = 1, ..., PK = 11)
    - line: The line offset within the port (PA0 = 0, PA1 = 1, ..., PA15 = 15)
    - function: The function number, can be:
      * 0 : GPIO
      * 1 : Alternate Function 0
      * 2 : Alternate Function 1
      * 3 : Alternate Function 2
      * ...
      * 16 : Alternate Function 15
      * 17 : Analog

Optional properties:
- GENERIC_PINCONFIG: is the generic pinconfig options to use.
  Available options are:
   - bias-disable,
   - bias-pull-down,
   - bias-pull-up,
   - drive-push-pull,
   - drive-open-drain,
   - output-low
   - output-high
   - slew-rate = <x>, with x being:
       < 0 > : Low speed
       < 1 > : Medium speed
       < 2 > : Fast speed
       < 3 > : High speed

Example:

pin-controller {
...
	usart1_pins_a: usart1@0 {
		pins1 {
			pinmux = <STM32F429_PA9_FUNC_USART1_TX>;
			bias-disable;
			drive-push-pull;
			slew-rate = <0>;
		};
		pins2 {
			pinmux = <STM32F429_PA10_FUNC_USART1_RX>;
			bias-disable;
		};
	};
};

&usart1 {
	pinctrl-0 = <&usart1_pins_a>;
	pinctrl-names = "default";
	status = "okay";
};
