Subject: [PATCH 2/4] pinctrl: Add pinctrl binding for Broadcom Capri SoCs

From: [email-masked] (Matt Porter)
Date: Fri, 04 Oct 2013 08:51:18 -0400

On 10/03/2013 08:23 PM, Sherman Yin wrote:
> Adds pinctrl driver devicetree binding for Broadcom Capri (BCM281xx) SoCs.
>
> Signed-off-by: Sherman Yin <[email-masked]>
> Reviewed-by: Christian Daudt <[email-masked]>
> Reviewed-by: Matt Porter <[email-masked]>
> ---
>   .../bindings/pinctrl/brcm,capri-pinctrl.txt        |  419 ++++++++++++++++++++
>   1 file changed, 419 insertions(+)
>   create mode 100644 Documentation/devicetree/bindings/pinctrl/brcm,capri-pinctrl.txt
>
> diff --git a/Documentation/devicetree/bindings/pinctrl/brcm,capri-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/brcm,capri-pinctrl.txt
> new file mode 100644
> index 0000000..79e0e5a
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/pinctrl/brcm,capri-pinctrl.txt
> @@ -0,0 +1,419 @@
> +Broadcom Capri Pin Controller
> +
> +This is a pin controller for the Broadcom BCM281xx SoC family, which includes
> +BCM11130, BCM11140, BCM11351, BCM28145, and BCM28155 SoCs.
> +
> +=== Pin Controller Node ===
> +
> +Required Properties:
> +
> +- compatible:	Must be "brcm,capri-pinctrl".
> +- reg:		Base address of the PAD Controller register block and the size
> +		of the block.
> +
> +For example, the following is the bare minimum node:
> +
> +	pinctrl at 35004800 {
> +		compatible = "brcm,capri-pinctrl";
> +		reg = <0x35004800 0x430>;
> +	};
> +
> +As a Pin Controller Device, in addition to the required properties, this node
> +should also contain the pin configuration nodes that client devices reference,
> +if any.
> +
> +=== Pin Configuration Node ===
> +
> +Each pin configuration node is a sub-node of the pin controller node and is a
> +container of an arbitrary number of subnodes, called group nodes.
> +
> +Please refer to the pinctrl-bindings.txt in this directory for details of the
> +common pinctrl bindings used by client devices, including the definition of a
> +"pin configuration node".
> +
> +=== Group Node ===
> +
> +A group node specifies the desired pin mux and/or pin configuration for an
> +arbitrary number of pins.  The group node only affect the properties specified
> +in the node, and has no effect on any properties that are omitted.
> +
> +The names of the group nodes are optional and not used. The group nodes have
> +the following properties:
> +
> +Required Properties:
> +
> +- brcm,pins:	Multiple strings.  Specifies the name(s) of one or more pins to
> +		be configured by this node.
> +
> +Optional Properties:
> +
> +- brcm,function: Multiple strings.  Specifies the pin mux selection.  Values are:
> +		"alt1", "alt2", "alt3", "alt4"
> +- brcm,hysteresis: Multiple integers, applicable to standard pins only.  Turns
> +		on hysteresis of input.
> +		0: TTL input, 1: Schmitt Trigger input
> +- brcm,pull:	Multiple integers, applicable to standard pins only.  Specifies
> +		pull-up or pull-down.
> +		0: neither, 1: pull-up, 2: pull-down, 3: both
> +- brcm,input_dis: Multiple integers, applicable to all pins.  Input disable

I missed this before. Hyphens are preferred over underscores in property 
names.

> +		control.
> +		0: off, 1: input disabled
> +- brcm,slew:	Multiple integers.  Slew rate of output.
> +		0: fast output, 1: normal output (most pins)
> +		0: normal output, 1: fast output (IC_DM and IC_DP)
> +		0: Fast mode, 1: High speed mode (I2C)
> +- brcm,drive_str: Multiple integers.  Drive strength.
> +		0: 2 mA
> +		1: 4 mA
> +		2: 6 mA
> +		3: 8 mA
> +		4: 10 mA
> +		5: 12 mA
> +		6: 14 mA
> +		7: 16 mA
> +- brcm,pull_up_str: Multiple integers.  Pull Up strength.
> +		0: No pull-up
> +		1: 1.2 kOhm
> +		2: 1.8 kOhm
> +		3: 720 Ohm
> +		4: 2.7 kOhm
> +		5: 831 Ohm
> +		6: 1.08 kOhm
> +		7: 568 Ohm
> +- brcm,mode:	Multiple integers.  Mode select.
> +		0: Fast mode, 1: High Speed mode (I2C)