xref: /openbmc/linux/Documentation/devicetree/bindings/pci/nvidia,tegra20-pcie.txt (revision e4958675b697c61de8d947bf725754e2cb801582)
1d1523b52SThierry RedingNVIDIA Tegra PCIe controller
2d1523b52SThierry Reding
3d1523b52SThierry RedingRequired properties:
494716cddSJay Agarwal- compatible: "nvidia,tegra20-pcie" or "nvidia,tegra30-pcie"
5d1523b52SThierry Reding- device_type: Must be "pci"
6d1523b52SThierry Reding- reg: A list of physical base address and length for each set of controller
7d1523b52SThierry Reding  registers. Must contain an entry for each entry in the reg-names property.
8d1523b52SThierry Reding- reg-names: Must include the following entries:
9d1523b52SThierry Reding  "pads": PADS registers
10d1523b52SThierry Reding  "afi": AFI registers
11d1523b52SThierry Reding  "cs": configuration space region
12d1523b52SThierry Reding- interrupts: A list of interrupt outputs of the controller. Must contain an
13d1523b52SThierry Reding  entry for each entry in the interrupt-names property.
14d1523b52SThierry Reding- interrupt-names: Must include the following entries:
15d1523b52SThierry Reding  "intr": The Tegra interrupt that is asserted for controller interrupts
16d1523b52SThierry Reding  "msi": The Tegra interrupt that is asserted when an MSI is received
17d1523b52SThierry Reding- bus-range: Range of bus numbers associated with this controller
18d1523b52SThierry Reding- #address-cells: Address representation for root ports (must be 3)
19d1523b52SThierry Reding  - cell 0 specifies the bus and device numbers of the root port:
20d1523b52SThierry Reding    [23:16]: bus number
21d1523b52SThierry Reding    [15:11]: device number
22d1523b52SThierry Reding  - cell 1 denotes the upper 32 address bits and should be 0
23d1523b52SThierry Reding  - cell 2 contains the lower 32 address bits and is used to translate to the
24d1523b52SThierry Reding    CPU address space
25d1523b52SThierry Reding- #size-cells: Size representation for root ports (must be 2)
26d1523b52SThierry Reding- ranges: Describes the translation of addresses for root ports and standard
27d1523b52SThierry Reding  PCI regions. The entries must be 6 cells each, where the first three cells
28d1523b52SThierry Reding  correspond to the address as described for the #address-cells property
29d1523b52SThierry Reding  above, the fourth cell is the physical CPU address to translate to and the
30d1523b52SThierry Reding  fifth and six cells are as described for the #size-cells property above.
31d1523b52SThierry Reding  - The first two entries are expected to translate the addresses for the root
32d1523b52SThierry Reding    port registers, which are referenced by the assigned-addresses property of
33d1523b52SThierry Reding    the root port nodes (see below).
34d1523b52SThierry Reding  - The remaining entries setup the mapping for the standard I/O, memory and
35d1523b52SThierry Reding    prefetchable PCI regions. The first cell determines the type of region
36d1523b52SThierry Reding    that is setup:
37d1523b52SThierry Reding    - 0x81000000: I/O memory region
38d1523b52SThierry Reding    - 0x82000000: non-prefetchable memory region
39d1523b52SThierry Reding    - 0xc2000000: prefetchable memory region
40d1523b52SThierry Reding  Please refer to the standard PCI bus binding document for a more detailed
41d1523b52SThierry Reding  explanation.
4297070bd4SLucas Stach- #interrupt-cells: Size representation for interrupts (must be 1)
4397070bd4SLucas Stach- interrupt-map-mask and interrupt-map: Standard PCI IRQ mapping properties
4497070bd4SLucas Stach  Please refer to the standard PCI bus binding document for a more detailed
4597070bd4SLucas Stach  explanation.
46d8f64797SStephen Warren- clocks: Must contain an entry for each entry in clock-names.
47d8f64797SStephen Warren  See ../clocks/clock-bindings.txt for details.
48d1523b52SThierry Reding- clock-names: Must include the following entries:
49d8f64797SStephen Warren  - pex
50d8f64797SStephen Warren  - afi
51d8f64797SStephen Warren  - pll_e
52d8f64797SStephen Warren  - cml (not required for Tegra20)
5307999587SStephen Warren- resets: Must contain an entry for each entry in reset-names.
5407999587SStephen Warren  See ../reset/reset.txt for details.
5507999587SStephen Warren- reset-names: Must include the following entries:
5607999587SStephen Warren  - pex
5707999587SStephen Warren  - afi
5807999587SStephen Warren  - pcie_x
59d1523b52SThierry Reding
60*e4958675SThierry RedingPower supplies for Tegra20:
61*e4958675SThierry Reding- avdd-pex-supply: Power supply for analog PCIe logic. Must supply 1.05 V.
62*e4958675SThierry Reding- vdd-pex-supply: Power supply for digital PCIe I/O. Must supply 1.05 V.
63*e4958675SThierry Reding- avdd-pex-pll-supply: Power supply for dedicated (internal) PCIe PLL. Must
64*e4958675SThierry Reding  supply 1.05 V.
65*e4958675SThierry Reding- avdd-plle-supply: Power supply for PLLE, which is shared with SATA. Must
66*e4958675SThierry Reding  supply 1.05 V.
67*e4958675SThierry Reding- vddio-pex-clk-supply: Power supply for PCIe clock. Must supply 3.3 V.
68*e4958675SThierry Reding
69*e4958675SThierry RedingPower supplies for Tegra30:
70*e4958675SThierry Reding- Required:
71*e4958675SThierry Reding  - avdd-pex-pll-supply: Power supply for dedicated (internal) PCIe PLL. Must
72*e4958675SThierry Reding    supply 1.05 V.
73*e4958675SThierry Reding  - avdd-plle-supply: Power supply for PLLE, which is shared with SATA. Must
74*e4958675SThierry Reding    supply 1.05 V.
75*e4958675SThierry Reding  - vddio-pex-ctl-supply: Power supply for PCIe control I/O partition. Must
76*e4958675SThierry Reding    supply 1.8 V.
77*e4958675SThierry Reding  - hvdd-pex-supply: High-voltage supply for PCIe I/O and PCIe output clocks.
78*e4958675SThierry Reding    Must supply 3.3 V.
79*e4958675SThierry Reding- Optional:
80*e4958675SThierry Reding  - If lanes 0 to 3 are used:
81*e4958675SThierry Reding    - avdd-pexa-supply: Power supply for analog PCIe logic. Must supply 1.05 V.
82*e4958675SThierry Reding    - vdd-pexa-supply: Power supply for digital PCIe I/O. Must supply 1.05 V.
83*e4958675SThierry Reding  - If lanes 4 or 5 are used:
84*e4958675SThierry Reding    - avdd-pexb-supply: Power supply for analog PCIe logic. Must supply 1.05 V.
85*e4958675SThierry Reding    - vdd-pexb-supply: Power supply for digital PCIe I/O. Must supply 1.05 V.
86*e4958675SThierry Reding
87*e4958675SThierry RedingDeprecated supplies:
88*e4958675SThierry Reding- pex-clk-supply: Supply voltage for internal reference clock
89*e4958675SThierry Reding- vdd-supply: Power supply for controller (1.05V)
90*e4958675SThierry Reding- avdd-supply: Power supply for controller (1.05V) (not required for Tegra20)
91*e4958675SThierry Reding
92d1523b52SThierry RedingRoot ports are defined as subnodes of the PCIe controller node.
93d1523b52SThierry Reding
94d1523b52SThierry RedingRequired properties:
95d1523b52SThierry Reding- device_type: Must be "pci"
96d1523b52SThierry Reding- assigned-addresses: Address and size of the port configuration registers
97d1523b52SThierry Reding- reg: PCI bus address of the root port
98d1523b52SThierry Reding- #address-cells: Must be 3
99d1523b52SThierry Reding- #size-cells: Must be 2
100d1523b52SThierry Reding- ranges: Sub-ranges distributed from the PCIe controller node. An empty
101d1523b52SThierry Reding  property is sufficient.
102d1523b52SThierry Reding- nvidia,num-lanes: Number of lanes to use for this port. Valid combinations
103d1523b52SThierry Reding  are:
104d1523b52SThierry Reding  - Root port 0 uses 4 lanes, root port 1 is unused.
105d1523b52SThierry Reding  - Both root ports use 2 lanes.
106d1523b52SThierry Reding
107d1523b52SThierry RedingExample:
108d1523b52SThierry Reding
109d1523b52SThierry RedingSoC DTSI:
110d1523b52SThierry Reding
111d1523b52SThierry Reding	pcie-controller {
112d1523b52SThierry Reding		compatible = "nvidia,tegra20-pcie";
113d1523b52SThierry Reding		device_type = "pci";
114d1523b52SThierry Reding		reg = <0x80003000 0x00000800   /* PADS registers */
115d1523b52SThierry Reding		       0x80003800 0x00000200   /* AFI registers */
116d1523b52SThierry Reding		       0x90000000 0x10000000>; /* configuration space */
117d1523b52SThierry Reding		reg-names = "pads", "afi", "cs";
118d1523b52SThierry Reding		interrupts = <0 98 0x04   /* controller interrupt */
119d1523b52SThierry Reding		              0 99 0x04>; /* MSI interrupt */
120d1523b52SThierry Reding		interrupt-names = "intr", "msi";
121d1523b52SThierry Reding
12297070bd4SLucas Stach		#interrupt-cells = <1>;
12397070bd4SLucas Stach		interrupt-map-mask = <0 0 0 0>;
12497070bd4SLucas Stach		interrupt-map = <0 0 0 0 &intc GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
12597070bd4SLucas Stach
126d1523b52SThierry Reding		bus-range = <0x00 0xff>;
127d1523b52SThierry Reding		#address-cells = <3>;
128d1523b52SThierry Reding		#size-cells = <2>;
129d1523b52SThierry Reding
130d1523b52SThierry Reding		ranges = <0x82000000 0 0x80000000 0x80000000 0 0x00001000   /* port 0 registers */
131d1523b52SThierry Reding			  0x82000000 0 0x80001000 0x80001000 0 0x00001000   /* port 1 registers */
132d1523b52SThierry Reding			  0x81000000 0 0          0x82000000 0 0x00010000   /* downstream I/O */
133d1523b52SThierry Reding			  0x82000000 0 0xa0000000 0xa0000000 0 0x10000000   /* non-prefetchable memory */
134d1523b52SThierry Reding			  0xc2000000 0 0xb0000000 0xb0000000 0 0x10000000>; /* prefetchable memory */
135d1523b52SThierry Reding
13607999587SStephen Warren		clocks = <&tegra_car 70>, <&tegra_car 72>, <&tegra_car 118>;
13707999587SStephen Warren		clock-names = "pex", "afi", "pll_e";
13807999587SStephen Warren		resets = <&tegra_car 70>, <&tegra_car 72>, <&tegra_car 74>;
13907999587SStephen Warren		reset-names = "pex", "afi", "pcie_x";
140d1523b52SThierry Reding		status = "disabled";
141d1523b52SThierry Reding
142d1523b52SThierry Reding		pci@1,0 {
143d1523b52SThierry Reding			device_type = "pci";
144d1523b52SThierry Reding			assigned-addresses = <0x82000800 0 0x80000000 0 0x1000>;
145d1523b52SThierry Reding			reg = <0x000800 0 0 0 0>;
146d1523b52SThierry Reding			status = "disabled";
147d1523b52SThierry Reding
148d1523b52SThierry Reding			#address-cells = <3>;
149d1523b52SThierry Reding			#size-cells = <2>;
150d1523b52SThierry Reding
151d1523b52SThierry Reding			ranges;
152d1523b52SThierry Reding
153d1523b52SThierry Reding			nvidia,num-lanes = <2>;
154d1523b52SThierry Reding		};
155d1523b52SThierry Reding
156d1523b52SThierry Reding		pci@2,0 {
157d1523b52SThierry Reding			device_type = "pci";
158d1523b52SThierry Reding			assigned-addresses = <0x82001000 0 0x80001000 0 0x1000>;
159d1523b52SThierry Reding			reg = <0x001000 0 0 0 0>;
160d1523b52SThierry Reding			status = "disabled";
161d1523b52SThierry Reding
162d1523b52SThierry Reding			#address-cells = <3>;
163d1523b52SThierry Reding			#size-cells = <2>;
164d1523b52SThierry Reding
165d1523b52SThierry Reding			ranges;
166d1523b52SThierry Reding
167d1523b52SThierry Reding			nvidia,num-lanes = <2>;
168d1523b52SThierry Reding		};
169d1523b52SThierry Reding	};
170d1523b52SThierry Reding
171d1523b52SThierry Reding
172d1523b52SThierry RedingBoard DTS:
173d1523b52SThierry Reding
174d1523b52SThierry Reding	pcie-controller {
175d1523b52SThierry Reding		status = "okay";
176d1523b52SThierry Reding
177d1523b52SThierry Reding		vdd-supply = <&pci_vdd_reg>;
178d1523b52SThierry Reding		pex-clk-supply = <&pci_clk_reg>;
179d1523b52SThierry Reding
180d1523b52SThierry Reding		/* root port 00:01.0 */
181d1523b52SThierry Reding		pci@1,0 {
182d1523b52SThierry Reding			status = "okay";
183d1523b52SThierry Reding
184d1523b52SThierry Reding			/* bridge 01:00.0 (optional) */
185d1523b52SThierry Reding			pci@0,0 {
186d1523b52SThierry Reding				reg = <0x010000 0 0 0 0>;
187d1523b52SThierry Reding
188d1523b52SThierry Reding				#address-cells = <3>;
189d1523b52SThierry Reding				#size-cells = <2>;
190d1523b52SThierry Reding
191d1523b52SThierry Reding				device_type = "pci";
192d1523b52SThierry Reding
193d1523b52SThierry Reding				/* endpoint 02:00.0 */
194d1523b52SThierry Reding				pci@0,0 {
195d1523b52SThierry Reding					reg = <0x020000 0 0 0 0>;
196d1523b52SThierry Reding				};
197d1523b52SThierry Reding			};
198d1523b52SThierry Reding		};
199d1523b52SThierry Reding	};
200d1523b52SThierry Reding
201d1523b52SThierry RedingNote that devices on the PCI bus are dynamically discovered using PCI's bus
202d1523b52SThierry Redingenumeration and therefore don't need corresponding device nodes in DT. However
203d1523b52SThierry Redingif a device on the PCI bus provides a non-probeable bus such as I2C or SPI,
204d1523b52SThierry Redingdevice nodes need to be added in order to allow the bus' children to be
205d1523b52SThierry Redinginstantiated at the proper location in the operating system's device tree (as
206d1523b52SThierry Redingillustrated by the optional nodes in the example above).
207