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