Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 58cd070a authored by Olof Johansson's avatar Olof Johansson
Browse files

Merge tag 'tegra-for-3.17-xusb-padctl' of...

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: default avatarOlof Johansson <olof@lixom.net>
parents 15bebad6 dc0a3938
Loading
Loading
Loading
Loading
+127 −0
Original line number Diff line number Diff line
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>;
			};
		};
	};
+6 −0
Original line number Diff line number Diff line
@@ -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
+1 −0
Original line number Diff line number Diff line
@@ -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
+973 −0

File added.

Preview size limit exceeded, changes collapsed.

+7 −0
Original line number Diff line number Diff line
#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 */