* Freescale MXS Pin Controller

The pins controlled by mxs pin controller are organized in banks, each bank
has 32 pins.  Each pin has 4 multiplexing functions, and generally, the 4th
function is GPIO.  The configuration on the pins includes drive strength,
voltage and pull-up.

Required properties:
- compatible: "fsl,imx23-pinctrl" or "fsl,imx28-pinctrl"
- reg: Should contain the register physical address and length for the
  pin controller.

Please refer to pinctrl-bindings.txt in this directory for details of the
common pinctrl bindings used by client devices.

The node of mxs pin controller acts as a container for an arbitrary number of
subnodes.  Each of these subnodes represents some desired configuration for
a group of pins, and only affects those parameters that are explicitly listed.
In other words, a subnode that describes a drive strength parameter implies no
information about pull-up. For this reason, even seemingly boolean values are
actually tristates in this binding: unspecified, off, or on. Unspecified is
represented as an absent property, and off/on are represented as integer
values 0 and 1.

Those subnodes under mxs pin controller node will fall into two categories.
One is to set up a group of pins for a function, both mux selection and pin
configurations, and it's called group node in the binding document.   The other
one is to adjust the pin configuration for some particular pins that need a
different configuration than what is defined in group node.  The binding
document calls this type of node config node.

On mxs, there is no hardware pin group. The pin group in this binding only
means a group of pins put together for particular peripheral to work in
particular function, like SSP0 functioning as mmc0-8bit.  That said, the
group node should include all the pins needed for one function rather than
having these pins defined in several group nodes.  It also means each of
"pinctrl-*" phandle in client device node should only have one group node
pointed in there, while the phandle can have multiple config node referenced
there to adjust configurations for some pins in the group.

Required subnode-properties:
- fsl,pinmux-ids: An integer array.  Each integer in the array specify a pin
  with given mux function, with bank, pin and mux packed as below.

    [15..12] : bank number
    [11..4]  : pin number
    [3..0]   : mux selection

  This integer with mux selection packed is used as an entity by both group
  and config nodes to identify a pin.  The mux selection in the integer takes
  effects only on group node, and will get ignored by driver with config node,
  since config node is only meant to set up pin configurations.

  Valid values for these integers are listed below.

- reg: Should be the index of the group nodes for same function.  This property
  is required only for group nodes, and should not be present in any config
  nodes.

Optional subnode-properties:
- fsl,drive-strength: Integer.
    0: MXS_DRIVE_4mA
    1: MXS_DRIVE_8mA
    2: MXS_DRIVE_12mA
    3: MXS_DRIVE_16mA
- fsl,voltage: Integer.
    0: MXS_VOLTAGE_LOW  - 1.8 V
    1: MXS_VOLTAGE_HIGH - 3.3 V
- fsl,pull-up: Integer.
    0: MXS_PULL_DISABLE - Disable the internal pull-up
    1: MXS_PULL_ENABLE  - Enable the internal pull-up

Note that when enabling the pull-up, the internal pad keeper gets disabled.
Also, some pins doesn't have a pull up, in that case, setting the fsl,pull-up
will only disable the internal pad keeper.

Examples:

pinctrl@80018000 {
	#address-cells = <1>;
	#size-cells = <0>;
	compatible = "fsl,imx28-pinctrl";
	reg = <0x80018000 2000>;

	mmc0_8bit_pins_a: mmc0-8bit@0 {
		reg = <0>;
		fsl,pinmux-ids = <
			MX28_PAD_SSP0_DATA0__SSP0_D0
			MX28_PAD_SSP0_DATA1__SSP0_D1
			MX28_PAD_SSP0_DATA2__SSP0_D2
			MX28_PAD_SSP0_DATA3__SSP0_D3
			MX28_PAD_SSP0_DATA4__SSP0_D4
			MX28_PAD_SSP0_DATA5__SSP0_D5
			MX28_PAD_SSP0_DATA6__SSP0_D6
			MX28_PAD_SSP0_DATA7__SSP0_D7
			MX28_PAD_SSP0_CMD__SSP0_CMD
			MX28_PAD_SSP0_DETECT__SSP0_CARD_DETECT
			MX28_PAD_SSP0_SCK__SSP0_SCK
		>;
		fsl,drive-strength = <MXS_DRIVE_4mA>;
		fsl,voltage = <MXS_VOLTAGE_HIGH>;
		fsl,pull-up = <MXS_PULL_ENABLE>;
	};

	mmc_cd_cfg: mmc-cd-cfg {
		fsl,pinmux-ids = <MX28_PAD_SSP0_DETECT__SSP0_CARD_DETECT>;
		fsl,pull-up = <MXS_PULL_DISABLE>;
	};

	mmc_sck_cfg: mmc-sck-cfg {
		fsl,pinmux-ids = <MX28_PAD_SSP0_SCK__SSP0_SCK>;
		fsl,drive-strength = <MXS_DRIVE_12mA>;
		fsl,pull-up = <MXS_PULL_DISABLE>;
	};
};

In this example, group node mmc0-8bit defines a group of pins for mxs SSP0
to function as a 8-bit mmc device, with 8mA, 3.3V and pull-up configurations
applied on all these pins.  And config nodes mmc-cd-cfg and mmc-sck-cfg are
adjusting the configuration for pins card-detection and clock from what group
node mmc0-8bit defines.  Only the configuration properties to be adjusted need
to be listed in the config nodes.

Valid values for i.MX28/i.MX23 pinmux-id are defined in
arch/arm/boot/dts/imx28-pinfunc.h and arch/arm/boot/dts/imx23-pinfunc.h.
The definitions for the padconfig properties can be found in
arch/arm/boot/dts/mxs-pinfunc.h.
