Skip to content

Commit 43419b0

Browse files
committed
Merge branches 'tegra/pci' and 'tegra/usb' into next/late
This is a prerequisite for enabling the Tegra XUSB, all the branches should be merged already at the time we get here. * tegra/pci: PCI: tegra: Support per-lane PHYs dt-bindings: pci: tegra: Update for per-lane PHYs phy: tegra: Add Tegra210 support phy: Add Tegra XUSB pad controller support dt-bindings: phy: tegra-xusb-padctl: Add Tegra210 support dt-bindings: phy: Add NVIDIA Tegra XUSB pad controller binding phy: core: Allow children node to be overridden clk: tegra: Add interface to enable hardware control of SATA/XUSB PLLs * tegra/usb: usb: xhci: tegra: Add Tegra210 support usb: xhci: Add NVIDIA Tegra XUSB controller driver dt-bindings: usb: xhci-tegra: Add Tegra210 XUSB controller support dt-bindings: usb: Add NVIDIA Tegra XUSB controller binding phy: tegra: Add Tegra210 support phy: Add Tegra XUSB pad controller support dt-bindings: phy: tegra-xusb-padctl: Add Tegra210 support dt-bindings: phy: Add NVIDIA Tegra XUSB pad controller binding phy: core: Allow children node to be overridden clk: tegra: Add interface to enable hardware control of SATA/XUSB PLLs
3 parents 783fb3c + 6fe7c18 + ab065e9 commit 43419b0

File tree

24 files changed

+8080
-56
lines changed

24 files changed

+8080
-56
lines changed

Documentation/devicetree/bindings/pci/nvidia,tegra20-pcie.txt

Lines changed: 219 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -60,11 +60,14 @@ Required properties:
6060
- afi
6161
- pcie_x
6262

63-
Required properties on Tegra124 and later:
63+
Required properties on Tegra124 and later (deprecated):
6464
- phys: Must contain an entry for each entry in phy-names.
6565
- phy-names: Must include the following entries:
6666
- pcie
6767

68+
These properties are deprecated in favour of per-lane PHYs define in each of
69+
the root ports (see below).
70+
6871
Power supplies for Tegra20:
6972
- avdd-pex-supply: Power supply for analog PCIe logic. Must supply 1.05 V.
7073
- vdd-pex-supply: Power supply for digital PCIe I/O. Must supply 1.05 V.
@@ -122,11 +125,22 @@ Required properties:
122125
- Root port 0 uses 4 lanes, root port 1 is unused.
123126
- Both root ports use 2 lanes.
124127

125-
Example:
128+
Required properties for Tegra124 and later:
129+
- phys: Must contain an phandle to a PHY for each entry in phy-names.
130+
- phy-names: Must include an entry for each active lane. Note that the number
131+
of entries does not have to (though usually will) be equal to the specified
132+
number of lanes in the nvidia,num-lanes property. Entries are of the form
133+
"pcie-N": where N ranges from 0 to the value specified in nvidia,num-lanes.
134+
135+
Examples:
136+
=========
137+
138+
Tegra20:
139+
--------
126140

127141
SoC DTSI:
128142

129-
pcie-controller {
143+
pcie-controller@80003000 {
130144
compatible = "nvidia,tegra20-pcie";
131145
device_type = "pci";
132146
reg = <0x80003000 0x00000800 /* PADS registers */
@@ -186,10 +200,9 @@ SoC DTSI:
186200
};
187201
};
188202

189-
190203
Board DTS:
191204

192-
pcie-controller {
205+
pcie-controller@80003000 {
193206
status = "okay";
194207

195208
vdd-supply = <&pci_vdd_reg>;
@@ -222,3 +235,204 @@ if a device on the PCI bus provides a non-probeable bus such as I2C or SPI,
222235
device nodes need to be added in order to allow the bus' children to be
223236
instantiated at the proper location in the operating system's device tree (as
224237
illustrated by the optional nodes in the example above).
238+
239+
Tegra30:
240+
--------
241+
242+
SoC DTSI:
243+
244+
pcie-controller@00003000 {
245+
compatible = "nvidia,tegra30-pcie";
246+
device_type = "pci";
247+
reg = <0x00003000 0x00000800 /* PADS registers */
248+
0x00003800 0x00000200 /* AFI registers */
249+
0x10000000 0x10000000>; /* configuration space */
250+
reg-names = "pads", "afi", "cs";
251+
interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH /* controller interrupt */
252+
GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>; /* MSI interrupt */
253+
interrupt-names = "intr", "msi";
254+
255+
#interrupt-cells = <1>;
256+
interrupt-map-mask = <0 0 0 0>;
257+
interrupt-map = <0 0 0 0 &intc GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
258+
259+
bus-range = <0x00 0xff>;
260+
#address-cells = <3>;
261+
#size-cells = <2>;
262+
263+
ranges = <0x82000000 0 0x00000000 0x00000000 0 0x00001000 /* port 0 configuration space */
264+
0x82000000 0 0x00001000 0x00001000 0 0x00001000 /* port 1 configuration space */
265+
0x82000000 0 0x00004000 0x00004000 0 0x00001000 /* port 2 configuration space */
266+
0x81000000 0 0 0x02000000 0 0x00010000 /* downstream I/O */
267+
0x82000000 0 0x20000000 0x20000000 0 0x08000000 /* non-prefetchable memory */
268+
0xc2000000 0 0x28000000 0x28000000 0 0x18000000>; /* prefetchable memory */
269+
270+
clocks = <&tegra_car TEGRA30_CLK_PCIE>,
271+
<&tegra_car TEGRA30_CLK_AFI>,
272+
<&tegra_car TEGRA30_CLK_PLL_E>,
273+
<&tegra_car TEGRA30_CLK_CML0>;
274+
clock-names = "pex", "afi", "pll_e", "cml";
275+
resets = <&tegra_car 70>,
276+
<&tegra_car 72>,
277+
<&tegra_car 74>;
278+
reset-names = "pex", "afi", "pcie_x";
279+
status = "disabled";
280+
281+
pci@1,0 {
282+
device_type = "pci";
283+
assigned-addresses = <0x82000800 0 0x00000000 0 0x1000>;
284+
reg = <0x000800 0 0 0 0>;
285+
status = "disabled";
286+
287+
#address-cells = <3>;
288+
#size-cells = <2>;
289+
ranges;
290+
291+
nvidia,num-lanes = <2>;
292+
};
293+
294+
pci@2,0 {
295+
device_type = "pci";
296+
assigned-addresses = <0x82001000 0 0x00001000 0 0x1000>;
297+
reg = <0x001000 0 0 0 0>;
298+
status = "disabled";
299+
300+
#address-cells = <3>;
301+
#size-cells = <2>;
302+
ranges;
303+
304+
nvidia,num-lanes = <2>;
305+
};
306+
307+
pci@3,0 {
308+
device_type = "pci";
309+
assigned-addresses = <0x82001800 0 0x00004000 0 0x1000>;
310+
reg = <0x001800 0 0 0 0>;
311+
status = "disabled";
312+
313+
#address-cells = <3>;
314+
#size-cells = <2>;
315+
ranges;
316+
317+
nvidia,num-lanes = <2>;
318+
};
319+
};
320+
321+
Board DTS:
322+
323+
pcie-controller@00003000 {
324+
status = "okay";
325+
326+
avdd-pexa-supply = <&ldo1_reg>;
327+
vdd-pexa-supply = <&ldo1_reg>;
328+
avdd-pexb-supply = <&ldo1_reg>;
329+
vdd-pexb-supply = <&ldo1_reg>;
330+
avdd-pex-pll-supply = <&ldo1_reg>;
331+
avdd-plle-supply = <&ldo1_reg>;
332+
vddio-pex-ctl-supply = <&sys_3v3_reg>;
333+
hvdd-pex-supply = <&sys_3v3_pexs_reg>;
334+
335+
pci@1,0 {
336+
status = "okay";
337+
};
338+
339+
pci@3,0 {
340+
status = "okay";
341+
};
342+
};
343+
344+
Tegra124:
345+
---------
346+
347+
SoC DTSI:
348+
349+
pcie-controller@01003000 {
350+
compatible = "nvidia,tegra124-pcie";
351+
device_type = "pci";
352+
reg = <0x0 0x01003000 0x0 0x00000800 /* PADS registers */
353+
0x0 0x01003800 0x0 0x00000800 /* AFI registers */
354+
0x0 0x02000000 0x0 0x10000000>; /* configuration space */
355+
reg-names = "pads", "afi", "cs";
356+
interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>, /* controller interrupt */
357+
<GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>; /* MSI interrupt */
358+
interrupt-names = "intr", "msi";
359+
360+
#interrupt-cells = <1>;
361+
interrupt-map-mask = <0 0 0 0>;
362+
interrupt-map = <0 0 0 0 &gic GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
363+
364+
bus-range = <0x00 0xff>;
365+
#address-cells = <3>;
366+
#size-cells = <2>;
367+
368+
ranges = <0x82000000 0 0x01000000 0x0 0x01000000 0 0x00001000 /* port 0 configuration space */
369+
0x82000000 0 0x01001000 0x0 0x01001000 0 0x00001000 /* port 1 configuration space */
370+
0x81000000 0 0x0 0x0 0x12000000 0 0x00010000 /* downstream I/O (64 KiB) */
371+
0x82000000 0 0x13000000 0x0 0x13000000 0 0x0d000000 /* non-prefetchable memory (208 MiB) */
372+
0xc2000000 0 0x20000000 0x0 0x20000000 0 0x20000000>; /* prefetchable memory (512 MiB) */
373+
374+
clocks = <&tegra_car TEGRA124_CLK_PCIE>,
375+
<&tegra_car TEGRA124_CLK_AFI>,
376+
<&tegra_car TEGRA124_CLK_PLL_E>,
377+
<&tegra_car TEGRA124_CLK_CML0>;
378+
clock-names = "pex", "afi", "pll_e", "cml";
379+
resets = <&tegra_car 70>,
380+
<&tegra_car 72>,
381+
<&tegra_car 74>;
382+
reset-names = "pex", "afi", "pcie_x";
383+
status = "disabled";
384+
385+
pci@1,0 {
386+
device_type = "pci";
387+
assigned-addresses = <0x82000800 0 0x01000000 0 0x1000>;
388+
reg = <0x000800 0 0 0 0>;
389+
status = "disabled";
390+
391+
#address-cells = <3>;
392+
#size-cells = <2>;
393+
ranges;
394+
395+
nvidia,num-lanes = <2>;
396+
};
397+
398+
pci@2,0 {
399+
device_type = "pci";
400+
assigned-addresses = <0x82001000 0 0x01001000 0 0x1000>;
401+
reg = <0x001000 0 0 0 0>;
402+
status = "disabled";
403+
404+
#address-cells = <3>;
405+
#size-cells = <2>;
406+
ranges;
407+
408+
nvidia,num-lanes = <1>;
409+
};
410+
};
411+
412+
Board DTS:
413+
414+
pcie-controller@01003000 {
415+
status = "okay";
416+
417+
avddio-pex-supply = <&vdd_1v05_run>;
418+
dvddio-pex-supply = <&vdd_1v05_run>;
419+
avdd-pex-pll-supply = <&vdd_1v05_run>;
420+
hvdd-pex-supply = <&vdd_3v3_lp0>;
421+
hvdd-pex-pll-e-supply = <&vdd_3v3_lp0>;
422+
vddio-pex-ctl-supply = <&vdd_3v3_lp0>;
423+
avdd-pll-erefe-supply = <&avdd_1v05_run>;
424+
425+
/* Mini PCIe */
426+
pci@1,0 {
427+
phys = <&{/padctl@7009f000/pads/pcie/lanes/pcie-4}>;
428+
phy-names = "pcie-0";
429+
status = "okay";
430+
};
431+
432+
/* Gigabit Ethernet */
433+
pci@2,0 {
434+
phys = <&{/padctl@7009f000/pads/pcie/lanes/pcie-2}>;
435+
phy-names = "pcie-0";
436+
status = "okay";
437+
};
438+
};

0 commit comments

Comments
 (0)