xref: /freebsd/sys/contrib/device-tree/Bindings/pci/pci-rcar-gen2.txt (revision c66ec88fed842fbaad62c30d510644ceb7bd2d71)
1*c66ec88fSEmmanuel VadotRenesas AHB to PCI bridge
2*c66ec88fSEmmanuel Vadot-------------------------
3*c66ec88fSEmmanuel Vadot
4*c66ec88fSEmmanuel VadotThis is the bridge used internally to connect the USB controllers to the
5*c66ec88fSEmmanuel VadotAHB. There is one bridge instance per USB port connected to the internal
6*c66ec88fSEmmanuel VadotOHCI and EHCI controllers.
7*c66ec88fSEmmanuel Vadot
8*c66ec88fSEmmanuel VadotRequired properties:
9*c66ec88fSEmmanuel Vadot- compatible: "renesas,pci-r8a7742" for the R8A7742 SoC;
10*c66ec88fSEmmanuel Vadot	      "renesas,pci-r8a7743" for the R8A7743 SoC;
11*c66ec88fSEmmanuel Vadot	      "renesas,pci-r8a7744" for the R8A7744 SoC;
12*c66ec88fSEmmanuel Vadot	      "renesas,pci-r8a7745" for the R8A7745 SoC;
13*c66ec88fSEmmanuel Vadot	      "renesas,pci-r8a7790" for the R8A7790 SoC;
14*c66ec88fSEmmanuel Vadot	      "renesas,pci-r8a7791" for the R8A7791 SoC;
15*c66ec88fSEmmanuel Vadot	      "renesas,pci-r8a7793" for the R8A7793 SoC;
16*c66ec88fSEmmanuel Vadot	      "renesas,pci-r8a7794" for the R8A7794 SoC;
17*c66ec88fSEmmanuel Vadot	      "renesas,pci-rcar-gen2" for a generic R-Car Gen2 or
18*c66ec88fSEmmanuel Vadot				      RZ/G1 compatible device.
19*c66ec88fSEmmanuel Vadot
20*c66ec88fSEmmanuel Vadot
21*c66ec88fSEmmanuel Vadot	      When compatible with the generic version, nodes must list the
22*c66ec88fSEmmanuel Vadot	      SoC-specific version corresponding to the platform first
23*c66ec88fSEmmanuel Vadot	      followed by the generic version.
24*c66ec88fSEmmanuel Vadot
25*c66ec88fSEmmanuel Vadot- reg:	A list of physical regions to access the device: the first is
26*c66ec88fSEmmanuel Vadot	the operational registers for the OHCI/EHCI controllers and the
27*c66ec88fSEmmanuel Vadot	second is for the bridge configuration and control registers.
28*c66ec88fSEmmanuel Vadot- interrupts: interrupt for the device.
29*c66ec88fSEmmanuel Vadot- clocks: The reference to the device clock.
30*c66ec88fSEmmanuel Vadot- bus-range: The PCI bus number range; as this is a single bus, the range
31*c66ec88fSEmmanuel Vadot	     should be specified as the same value twice.
32*c66ec88fSEmmanuel Vadot- #address-cells: must be 3.
33*c66ec88fSEmmanuel Vadot- #size-cells: must be 2.
34*c66ec88fSEmmanuel Vadot- #interrupt-cells: must be 1.
35*c66ec88fSEmmanuel Vadot- interrupt-map: standard property used to define the mapping of the PCI
36*c66ec88fSEmmanuel Vadot  interrupts to the GIC interrupts.
37*c66ec88fSEmmanuel Vadot- interrupt-map-mask: standard property that helps to define the interrupt
38*c66ec88fSEmmanuel Vadot  mapping.
39*c66ec88fSEmmanuel Vadot
40*c66ec88fSEmmanuel VadotOptional properties:
41*c66ec88fSEmmanuel Vadot- dma-ranges: a single range for the inbound memory region. If not supplied,
42*c66ec88fSEmmanuel Vadot  defaults to 1GiB at 0x40000000. Note there are hardware restrictions on the
43*c66ec88fSEmmanuel Vadot  allowed combinations of address and size.
44*c66ec88fSEmmanuel Vadot
45*c66ec88fSEmmanuel VadotExample SoC configuration:
46*c66ec88fSEmmanuel Vadot
47*c66ec88fSEmmanuel Vadot	pci0: pci@ee090000  {
48*c66ec88fSEmmanuel Vadot		compatible = "renesas,pci-r8a7790", "renesas,pci-rcar-gen2";
49*c66ec88fSEmmanuel Vadot		clocks = <&mstp7_clks R8A7790_CLK_EHCI>;
50*c66ec88fSEmmanuel Vadot		reg = <0x0 0xee090000 0x0 0xc00>,
51*c66ec88fSEmmanuel Vadot		      <0x0 0xee080000 0x0 0x1100>;
52*c66ec88fSEmmanuel Vadot		interrupts = <0 108 IRQ_TYPE_LEVEL_HIGH>;
53*c66ec88fSEmmanuel Vadot		status = "disabled";
54*c66ec88fSEmmanuel Vadot
55*c66ec88fSEmmanuel Vadot		bus-range = <0 0>;
56*c66ec88fSEmmanuel Vadot		#address-cells = <3>;
57*c66ec88fSEmmanuel Vadot		#size-cells = <2>;
58*c66ec88fSEmmanuel Vadot		#interrupt-cells = <1>;
59*c66ec88fSEmmanuel Vadot		dma-ranges = <0x42000000 0 0x40000000 0 0x40000000 0 0x40000000>;
60*c66ec88fSEmmanuel Vadot		interrupt-map-mask = <0xff00 0 0 0x7>;
61*c66ec88fSEmmanuel Vadot		interrupt-map = <0x0000 0 0 1 &gic 0 108 IRQ_TYPE_LEVEL_HIGH
62*c66ec88fSEmmanuel Vadot				 0x0800 0 0 1 &gic 0 108 IRQ_TYPE_LEVEL_HIGH
63*c66ec88fSEmmanuel Vadot				 0x1000 0 0 2 &gic 0 108 IRQ_TYPE_LEVEL_HIGH>;
64*c66ec88fSEmmanuel Vadot
65*c66ec88fSEmmanuel Vadot		usb@1,0 {
66*c66ec88fSEmmanuel Vadot			reg = <0x800 0 0 0 0>;
67*c66ec88fSEmmanuel Vadot			phys = <&usb0 0>;
68*c66ec88fSEmmanuel Vadot			phy-names = "usb";
69*c66ec88fSEmmanuel Vadot		};
70*c66ec88fSEmmanuel Vadot
71*c66ec88fSEmmanuel Vadot		usb@2,0 {
72*c66ec88fSEmmanuel Vadot			reg = <0x1000 0 0 0 0>;
73*c66ec88fSEmmanuel Vadot			phys = <&usb0 0>;
74*c66ec88fSEmmanuel Vadot			phy-names = "usb";
75*c66ec88fSEmmanuel Vadot		};
76*c66ec88fSEmmanuel Vadot	};
77*c66ec88fSEmmanuel Vadot
78*c66ec88fSEmmanuel VadotExample board setup:
79*c66ec88fSEmmanuel Vadot
80*c66ec88fSEmmanuel Vadot&pci0 {
81*c66ec88fSEmmanuel Vadot	status = "okay";
82*c66ec88fSEmmanuel Vadot	pinctrl-0 = <&usb0_pins>;
83*c66ec88fSEmmanuel Vadot	pinctrl-names = "default";
84*c66ec88fSEmmanuel Vadot};
85