| Device tree binding for NVIDIA Tegra XUSB pad controller | 
 | ======================================================== | 
 |  | 
 | The Tegra XUSB pad controller manages a set of lanes, each of which can be | 
 | assigned to one out of a set of different pads. Some of these pads have an | 
 | associated PHY that must be powered up before the pad can be used. | 
 |  | 
 | This document defines the device-specific binding for the XUSB pad controller. | 
 |  | 
 | Refer to pinctrl-bindings.txt in this directory for generic information about | 
 | pin controller device tree bindings and ../phy/phy-bindings.txt for details on | 
 | how to describe and reference PHYs in device trees. | 
 |  | 
 | Required properties: | 
 | -------------------- | 
 | - compatible: For Tegra124, must contain "nvidia,tegra124-xusb-padctl". | 
 |   Otherwise, must contain '"nvidia,<chip>-xusb-padctl", | 
 |   "nvidia-tegra124-xusb-padctl"', where <chip> is tegra132 or tegra210. | 
 | - reg: Physical base address and length of the controller's registers. | 
 | - resets: Must contain an entry for each entry in reset-names. | 
 |   See ../reset/reset.txt for details. | 
 | - reset-names: Must include the following entries: | 
 |   - padctl | 
 | - #phy-cells: Should be 1. The specifier is the index of the PHY to reference. | 
 |   See <dt-bindings/pinctrl/pinctrl-tegra-xusb.h> for the list of valid values. | 
 |  | 
 | Lane muxing: | 
 | ------------ | 
 |  | 
 | Child nodes contain the pinmux configurations following the conventions from | 
 | the pinctrl-bindings.txt document. Typically a single, static configuration is | 
 | given and applied at boot time. | 
 |  | 
 | Each subnode describes groups of lanes along with parameters and pads that | 
 | they should be assigned to. The name of these subnodes is not important. All | 
 | subnodes should be parsed solely based on their content. | 
 |  | 
 | Each subnode only applies the parameters that are explicitly listed. In other | 
 | words, if a subnode that lists a function but no pin configuration parameters | 
 | implies no information about any pin configuration parameters. Similarly, a | 
 | subnode that describes only an IDDQ parameter implies no information about | 
 | what function the pins are assigned to. 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. | 
 |  | 
 | Required properties: | 
 | - nvidia,lanes: An array of strings. Each string is the name of a lane. | 
 |  | 
 | Optional properties: | 
 | - nvidia,function: A string that is the name of the function (pad) that the | 
 |   pin or group should be assigned to. Valid values for function names are | 
 |   listed below. | 
 | - nvidia,iddq: Enables IDDQ mode of the lane. (0: no, 1: yes) | 
 |  | 
 | Note that not all of these properties are valid for all lanes. Lanes can be | 
 | divided into three groups: | 
 |  | 
 |   - otg-0, otg-1, otg-2: | 
 |  | 
 |     Valid functions for this group are: "snps", "xusb", "uart", "rsvd". | 
 |  | 
 |     The nvidia,iddq property does not apply to this group. | 
 |  | 
 |   - ulpi-0, hsic-0, hsic-1: | 
 |  | 
 |     Valid functions for this group are: "snps", "xusb". | 
 |  | 
 |     The nvidia,iddq property does not apply to this group. | 
 |  | 
 |   - pcie-0, pcie-1, pcie-2, pcie-3, pcie-4, sata-0: | 
 |  | 
 |     Valid functions for this group are: "pcie", "usb3", "sata", "rsvd". | 
 |  | 
 |  | 
 | Example: | 
 | ======== | 
 |  | 
 | SoC file extract: | 
 | ----------------- | 
 |  | 
 | 	padctl@0,7009f000 { | 
 | 		compatible = "nvidia,tegra124-xusb-padctl"; | 
 | 		reg = <0x0 0x7009f000 0x0 0x1000>; | 
 | 		resets = <&tegra_car 142>; | 
 | 		reset-names = "padctl"; | 
 |  | 
 | 		#phy-cells = <1>; | 
 | 	}; | 
 |  | 
 | Board file extract: | 
 | ------------------- | 
 |  | 
 | 	pcie-controller@0,01003000 { | 
 | 		... | 
 |  | 
 | 		phys = <&padctl 0>; | 
 | 		phy-names = "pcie"; | 
 |  | 
 | 		... | 
 | 	}; | 
 |  | 
 | 	... | 
 |  | 
 | 	padctl: padctl@0,7009f000 { | 
 | 		pinctrl-0 = <&padctl_default>; | 
 | 		pinctrl-names = "default"; | 
 |  | 
 | 		padctl_default: pinmux { | 
 | 			usb3 { | 
 | 				nvidia,lanes = "pcie-0", "pcie-1"; | 
 | 				nvidia,function = "usb3"; | 
 | 				nvidia,iddq = <0>; | 
 | 			}; | 
 |  | 
 | 			pcie { | 
 | 				nvidia,lanes = "pcie-2", "pcie-3", | 
 | 					       "pcie-4"; | 
 | 				nvidia,function = "pcie"; | 
 | 				nvidia,iddq = <0>; | 
 | 			}; | 
 |  | 
 | 			sata { | 
 | 				nvidia,lanes = "sata-0"; | 
 | 				nvidia,function = "sata"; | 
 | 				nvidia,iddq = <0>; | 
 | 			}; | 
 | 		}; | 
 | 	}; |