xref: /freebsd/sys/contrib/device-tree/Bindings/pci/renesas,pci-rcar-gen2.yaml (revision b97ee269eae3cbaf35c18f51a459aea581c2a7dc)
1*b97ee269SEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*b97ee269SEmmanuel Vadot%YAML 1.2
3*b97ee269SEmmanuel Vadot---
4*b97ee269SEmmanuel Vadot$id: http://devicetree.org/schemas/pci/renesas,pci-rcar-gen2.yaml#
5*b97ee269SEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6*b97ee269SEmmanuel Vadot
7*b97ee269SEmmanuel Vadottitle: Renesas AHB to PCI bridge
8*b97ee269SEmmanuel Vadot
9*b97ee269SEmmanuel Vadotmaintainers:
10*b97ee269SEmmanuel Vadot  - Marek Vasut <marek.vasut+renesas@gmail.com>
11*b97ee269SEmmanuel Vadot  - Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
12*b97ee269SEmmanuel Vadot
13*b97ee269SEmmanuel Vadotdescription: |
14*b97ee269SEmmanuel Vadot  This is the bridge used internally to connect the USB controllers to the
15*b97ee269SEmmanuel Vadot  AHB. There is one bridge instance per USB port connected to the internal
16*b97ee269SEmmanuel Vadot  OHCI and EHCI controllers.
17*b97ee269SEmmanuel Vadot
18*b97ee269SEmmanuel Vadotproperties:
19*b97ee269SEmmanuel Vadot  compatible:
20*b97ee269SEmmanuel Vadot    oneOf:
21*b97ee269SEmmanuel Vadot      - items:
22*b97ee269SEmmanuel Vadot          - enum:
23*b97ee269SEmmanuel Vadot              - renesas,pci-r8a7742      # RZ/G1H
24*b97ee269SEmmanuel Vadot              - renesas,pci-r8a7743      # RZ/G1M
25*b97ee269SEmmanuel Vadot              - renesas,pci-r8a7744      # RZ/G1N
26*b97ee269SEmmanuel Vadot              - renesas,pci-r8a7745      # RZ/G1E
27*b97ee269SEmmanuel Vadot              - renesas,pci-r8a7790      # R-Car H2
28*b97ee269SEmmanuel Vadot              - renesas,pci-r8a7791      # R-Car M2-W
29*b97ee269SEmmanuel Vadot              - renesas,pci-r8a7793      # R-Car M2-N
30*b97ee269SEmmanuel Vadot              - renesas,pci-r8a7794      # R-Car E2
31*b97ee269SEmmanuel Vadot          - const: renesas,pci-rcar-gen2 # R-Car Gen2 and RZ/G1
32*b97ee269SEmmanuel Vadot      - items:
33*b97ee269SEmmanuel Vadot          - enum:
34*b97ee269SEmmanuel Vadot              - renesas,pci-r9a06g032     # RZ/N1D
35*b97ee269SEmmanuel Vadot          - const: renesas,pci-rzn1       # RZ/N1
36*b97ee269SEmmanuel Vadot
37*b97ee269SEmmanuel Vadot  reg:
38*b97ee269SEmmanuel Vadot    items:
39*b97ee269SEmmanuel Vadot      - description: Operational registers for the OHCI/EHCI controllers.
40*b97ee269SEmmanuel Vadot      - description: Bridge configuration and control registers.
41*b97ee269SEmmanuel Vadot
42*b97ee269SEmmanuel Vadot  interrupts:
43*b97ee269SEmmanuel Vadot    maxItems: 1
44*b97ee269SEmmanuel Vadot
45*b97ee269SEmmanuel Vadot  clocks: true
46*b97ee269SEmmanuel Vadot
47*b97ee269SEmmanuel Vadot  clock-names: true
48*b97ee269SEmmanuel Vadot
49*b97ee269SEmmanuel Vadot  resets:
50*b97ee269SEmmanuel Vadot    maxItems: 1
51*b97ee269SEmmanuel Vadot
52*b97ee269SEmmanuel Vadot  power-domains:
53*b97ee269SEmmanuel Vadot    maxItems: 1
54*b97ee269SEmmanuel Vadot
55*b97ee269SEmmanuel Vadot  bus-range:
56*b97ee269SEmmanuel Vadot    description: |
57*b97ee269SEmmanuel Vadot      The PCI bus number range; as this is a single bus, the range
58*b97ee269SEmmanuel Vadot      should be specified as the same value twice.
59*b97ee269SEmmanuel Vadot
60*b97ee269SEmmanuel Vadot  dma-ranges:
61*b97ee269SEmmanuel Vadot    description: |
62*b97ee269SEmmanuel Vadot      A single range for the inbound memory region. If not supplied,
63*b97ee269SEmmanuel Vadot      defaults to 1GiB at 0x40000000. Note there are hardware restrictions on
64*b97ee269SEmmanuel Vadot      the allowed combinations of address and size.
65*b97ee269SEmmanuel Vadot    maxItems: 1
66*b97ee269SEmmanuel Vadot
67*b97ee269SEmmanuel VadotpatternProperties:
68*b97ee269SEmmanuel Vadot  'usb@[0-1],0':
69*b97ee269SEmmanuel Vadot    type: object
70*b97ee269SEmmanuel Vadot
71*b97ee269SEmmanuel Vadot    description:
72*b97ee269SEmmanuel Vadot      This a USB controller PCI device
73*b97ee269SEmmanuel Vadot
74*b97ee269SEmmanuel Vadot    properties:
75*b97ee269SEmmanuel Vadot      reg:
76*b97ee269SEmmanuel Vadot        description:
77*b97ee269SEmmanuel Vadot          Identify the correct bus, device and function number in the
78*b97ee269SEmmanuel Vadot          form <bdf 0 0 0 0>.
79*b97ee269SEmmanuel Vadot
80*b97ee269SEmmanuel Vadot        items:
81*b97ee269SEmmanuel Vadot          minItems: 5
82*b97ee269SEmmanuel Vadot          maxItems: 5
83*b97ee269SEmmanuel Vadot
84*b97ee269SEmmanuel Vadot      phys:
85*b97ee269SEmmanuel Vadot        description:
86*b97ee269SEmmanuel Vadot          Reference to the USB phy
87*b97ee269SEmmanuel Vadot        maxItems: 1
88*b97ee269SEmmanuel Vadot
89*b97ee269SEmmanuel Vadot      phy-names:
90*b97ee269SEmmanuel Vadot        maxItems: 1
91*b97ee269SEmmanuel Vadot
92*b97ee269SEmmanuel Vadot    required:
93*b97ee269SEmmanuel Vadot      - reg
94*b97ee269SEmmanuel Vadot      - phys
95*b97ee269SEmmanuel Vadot      - phy-names
96*b97ee269SEmmanuel Vadot
97*b97ee269SEmmanuel Vadot    unevaluatedProperties: false
98*b97ee269SEmmanuel Vadot
99*b97ee269SEmmanuel Vadotrequired:
100*b97ee269SEmmanuel Vadot  - compatible
101*b97ee269SEmmanuel Vadot  - reg
102*b97ee269SEmmanuel Vadot  - interrupts
103*b97ee269SEmmanuel Vadot  - interrupt-map
104*b97ee269SEmmanuel Vadot  - interrupt-map-mask
105*b97ee269SEmmanuel Vadot  - clocks
106*b97ee269SEmmanuel Vadot  - power-domains
107*b97ee269SEmmanuel Vadot  - bus-range
108*b97ee269SEmmanuel Vadot  - "#address-cells"
109*b97ee269SEmmanuel Vadot  - "#size-cells"
110*b97ee269SEmmanuel Vadot  - "#interrupt-cells"
111*b97ee269SEmmanuel Vadot
112*b97ee269SEmmanuel VadotallOf:
113*b97ee269SEmmanuel Vadot  - $ref: /schemas/pci/pci-bus.yaml#
114*b97ee269SEmmanuel Vadot
115*b97ee269SEmmanuel Vadot  - if:
116*b97ee269SEmmanuel Vadot      properties:
117*b97ee269SEmmanuel Vadot        compatible:
118*b97ee269SEmmanuel Vadot          contains:
119*b97ee269SEmmanuel Vadot            enum:
120*b97ee269SEmmanuel Vadot              - renesas,pci-rzn1
121*b97ee269SEmmanuel Vadot    then:
122*b97ee269SEmmanuel Vadot      properties:
123*b97ee269SEmmanuel Vadot        clocks:
124*b97ee269SEmmanuel Vadot          items:
125*b97ee269SEmmanuel Vadot            - description: Internal bus clock (AHB) for HOST
126*b97ee269SEmmanuel Vadot            - description: Internal bus clock (AHB) Power Management
127*b97ee269SEmmanuel Vadot            - description: PCI clock for USB subsystem
128*b97ee269SEmmanuel Vadot        clock-names:
129*b97ee269SEmmanuel Vadot          items:
130*b97ee269SEmmanuel Vadot            - const: hclkh
131*b97ee269SEmmanuel Vadot            - const: hclkpm
132*b97ee269SEmmanuel Vadot            - const: pciclk
133*b97ee269SEmmanuel Vadot      required:
134*b97ee269SEmmanuel Vadot        - clock-names
135*b97ee269SEmmanuel Vadot    else:
136*b97ee269SEmmanuel Vadot      properties:
137*b97ee269SEmmanuel Vadot        clocks:
138*b97ee269SEmmanuel Vadot          items:
139*b97ee269SEmmanuel Vadot            - description: Device clock
140*b97ee269SEmmanuel Vadot        clock-names:
141*b97ee269SEmmanuel Vadot          items:
142*b97ee269SEmmanuel Vadot            - const: pclk
143*b97ee269SEmmanuel Vadot      required:
144*b97ee269SEmmanuel Vadot        - resets
145*b97ee269SEmmanuel Vadot
146*b97ee269SEmmanuel VadotunevaluatedProperties: false
147*b97ee269SEmmanuel Vadot
148*b97ee269SEmmanuel Vadotexamples:
149*b97ee269SEmmanuel Vadot  - |
150*b97ee269SEmmanuel Vadot    #include <dt-bindings/interrupt-controller/arm-gic.h>
151*b97ee269SEmmanuel Vadot    #include <dt-bindings/clock/r8a7790-cpg-mssr.h>
152*b97ee269SEmmanuel Vadot    #include <dt-bindings/power/r8a7790-sysc.h>
153*b97ee269SEmmanuel Vadot
154*b97ee269SEmmanuel Vadot    pci@ee090000  {
155*b97ee269SEmmanuel Vadot        compatible = "renesas,pci-r8a7790", "renesas,pci-rcar-gen2";
156*b97ee269SEmmanuel Vadot        device_type = "pci";
157*b97ee269SEmmanuel Vadot        reg = <0xee090000 0xc00>,
158*b97ee269SEmmanuel Vadot              <0xee080000 0x1100>;
159*b97ee269SEmmanuel Vadot        clocks = <&cpg CPG_MOD 703>;
160*b97ee269SEmmanuel Vadot        power-domains = <&sysc R8A7790_PD_ALWAYS_ON>;
161*b97ee269SEmmanuel Vadot        resets = <&cpg 703>;
162*b97ee269SEmmanuel Vadot        interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>;
163*b97ee269SEmmanuel Vadot
164*b97ee269SEmmanuel Vadot        bus-range = <0 0>;
165*b97ee269SEmmanuel Vadot        #address-cells = <3>;
166*b97ee269SEmmanuel Vadot        #size-cells = <2>;
167*b97ee269SEmmanuel Vadot        #interrupt-cells = <1>;
168*b97ee269SEmmanuel Vadot        ranges = <0x02000000 0 0xee080000 0xee080000 0 0x00010000>;
169*b97ee269SEmmanuel Vadot        dma-ranges = <0x42000000 0 0x40000000 0x40000000 0 0x40000000>;
170*b97ee269SEmmanuel Vadot        interrupt-map-mask = <0xf800 0 0 0x7>;
171*b97ee269SEmmanuel Vadot        interrupt-map = <0x0000 0 0 1 &gic GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>,
172*b97ee269SEmmanuel Vadot                        <0x0800 0 0 1 &gic GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>,
173*b97ee269SEmmanuel Vadot                        <0x1000 0 0 2 &gic GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>;
174*b97ee269SEmmanuel Vadot
175*b97ee269SEmmanuel Vadot        usb@1,0 {
176*b97ee269SEmmanuel Vadot            reg = <0x800 0 0 0 0>;
177*b97ee269SEmmanuel Vadot            phys = <&usb0 0>;
178*b97ee269SEmmanuel Vadot            phy-names = "usb";
179*b97ee269SEmmanuel Vadot        };
180*b97ee269SEmmanuel Vadot
181*b97ee269SEmmanuel Vadot        usb@2,0 {
182*b97ee269SEmmanuel Vadot            reg = <0x1000 0 0 0 0>;
183*b97ee269SEmmanuel Vadot            phys = <&usb0 0>;
184*b97ee269SEmmanuel Vadot            phy-names = "usb";
185*b97ee269SEmmanuel Vadot        };
186*b97ee269SEmmanuel Vadot    };
187