You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge tag 'tegra-for-3.17-xusb-padctl' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux into next/dt
Merge "ARM: tegra: Add XUSB pad controller support" from Thierry Reding: Adds device tree bindings and a driver for the XUSB pad controller found on Tegra114 and later. This is a prerequisites for PCIe, SATA and XUSB drivers which are all currently being reviewed or pending for merge. This is a separate branch in case it needs to be pulled into the pinctrl tree to resolve conflicts. * tag 'tegra-for-3.17-xusb-padctl' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux: pinctrl: Add NVIDIA Tegra XUSB pad controller support of: Add NVIDIA Tegra XUSB pad controller binding Signed-off-by: Olof Johansson <olof@lixom.net>
This commit is contained in:
@@ -0,0 +1,127 @@
|
||||
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: should be "nvidia,tegra124-xusb-padctl"
|
||||
- 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>;
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -328,6 +328,12 @@ config PINCTRL_TEGRA124
|
||||
bool
|
||||
select PINCTRL_TEGRA
|
||||
|
||||
config PINCTRL_TEGRA_XUSB
|
||||
def_bool y if ARCH_TEGRA
|
||||
select GENERIC_PHY
|
||||
select PINCONF
|
||||
select PINMUX
|
||||
|
||||
config PINCTRL_TZ1090
|
||||
bool "Toumaz Xenif TZ1090 pin control driver"
|
||||
depends on SOC_TZ1090
|
||||
|
||||
@@ -55,6 +55,7 @@ obj-$(CONFIG_PINCTRL_TEGRA20) += pinctrl-tegra20.o
|
||||
obj-$(CONFIG_PINCTRL_TEGRA30) += pinctrl-tegra30.o
|
||||
obj-$(CONFIG_PINCTRL_TEGRA114) += pinctrl-tegra114.o
|
||||
obj-$(CONFIG_PINCTRL_TEGRA124) += pinctrl-tegra124.o
|
||||
obj-$(CONFIG_PINCTRL_TEGRA_XUSB) += pinctrl-tegra-xusb.o
|
||||
obj-$(CONFIG_PINCTRL_TZ1090) += pinctrl-tz1090.o
|
||||
obj-$(CONFIG_PINCTRL_TZ1090_PDC) += pinctrl-tz1090-pdc.o
|
||||
obj-$(CONFIG_PINCTRL_U300) += pinctrl-u300.o
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,7 @@
|
||||
#ifndef _DT_BINDINGS_PINCTRL_TEGRA_XUSB_H
|
||||
#define _DT_BINDINGS_PINCTRL_TEGRA_XUSB_H 1
|
||||
|
||||
#define TEGRA_XUSB_PADCTL_PCIE 0
|
||||
#define TEGRA_XUSB_PADCTL_SATA 1
|
||||
|
||||
#endif /* _DT_BINDINGS_PINCTRL_TEGRA_XUSB_H */
|
||||
Reference in New Issue
Block a user