162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/pci/renesas,pci-rcar-gen2.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Renesas AHB to PCI bridge
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Marek Vasut <marek.vasut+renesas@gmail.com>
1162306a36Sopenharmony_ci  - Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_cidescription: |
1462306a36Sopenharmony_ci  This is the bridge used internally to connect the USB controllers to the
1562306a36Sopenharmony_ci  AHB. There is one bridge instance per USB port connected to the internal
1662306a36Sopenharmony_ci  OHCI and EHCI controllers.
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ciproperties:
1962306a36Sopenharmony_ci  compatible:
2062306a36Sopenharmony_ci    oneOf:
2162306a36Sopenharmony_ci      - items:
2262306a36Sopenharmony_ci          - enum:
2362306a36Sopenharmony_ci              - renesas,pci-r8a7742      # RZ/G1H
2462306a36Sopenharmony_ci              - renesas,pci-r8a7743      # RZ/G1M
2562306a36Sopenharmony_ci              - renesas,pci-r8a7744      # RZ/G1N
2662306a36Sopenharmony_ci              - renesas,pci-r8a7745      # RZ/G1E
2762306a36Sopenharmony_ci              - renesas,pci-r8a7790      # R-Car H2
2862306a36Sopenharmony_ci              - renesas,pci-r8a7791      # R-Car M2-W
2962306a36Sopenharmony_ci              - renesas,pci-r8a7793      # R-Car M2-N
3062306a36Sopenharmony_ci              - renesas,pci-r8a7794      # R-Car E2
3162306a36Sopenharmony_ci          - const: renesas,pci-rcar-gen2 # R-Car Gen2 and RZ/G1
3262306a36Sopenharmony_ci      - items:
3362306a36Sopenharmony_ci          - enum:
3462306a36Sopenharmony_ci              - renesas,pci-r9a06g032     # RZ/N1D
3562306a36Sopenharmony_ci          - const: renesas,pci-rzn1       # RZ/N1
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ci  reg:
3862306a36Sopenharmony_ci    items:
3962306a36Sopenharmony_ci      - description: Operational registers for the OHCI/EHCI controllers.
4062306a36Sopenharmony_ci      - description: Bridge configuration and control registers.
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci  interrupts:
4362306a36Sopenharmony_ci    maxItems: 1
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_ci  clocks: true
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_ci  clock-names: true
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ci  resets:
5062306a36Sopenharmony_ci    maxItems: 1
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ci  power-domains:
5362306a36Sopenharmony_ci    maxItems: 1
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ci  bus-range:
5662306a36Sopenharmony_ci    description: |
5762306a36Sopenharmony_ci      The PCI bus number range; as this is a single bus, the range
5862306a36Sopenharmony_ci      should be specified as the same value twice.
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_ci  dma-ranges:
6162306a36Sopenharmony_ci    description: |
6262306a36Sopenharmony_ci      A single range for the inbound memory region. If not supplied,
6362306a36Sopenharmony_ci      defaults to 1GiB at 0x40000000. Note there are hardware restrictions on
6462306a36Sopenharmony_ci      the allowed combinations of address and size.
6562306a36Sopenharmony_ci    maxItems: 1
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_cipatternProperties:
6862306a36Sopenharmony_ci  '^usb@[0-1],0$':
6962306a36Sopenharmony_ci    type: object
7062306a36Sopenharmony_ci
7162306a36Sopenharmony_ci    description:
7262306a36Sopenharmony_ci      This a USB controller PCI device
7362306a36Sopenharmony_ci
7462306a36Sopenharmony_ci    properties:
7562306a36Sopenharmony_ci      reg:
7662306a36Sopenharmony_ci        description:
7762306a36Sopenharmony_ci          Identify the correct bus, device and function number in the
7862306a36Sopenharmony_ci          form <bdf 0 0 0 0>.
7962306a36Sopenharmony_ci
8062306a36Sopenharmony_ci        items:
8162306a36Sopenharmony_ci          minItems: 5
8262306a36Sopenharmony_ci          maxItems: 5
8362306a36Sopenharmony_ci
8462306a36Sopenharmony_ci      phys:
8562306a36Sopenharmony_ci        description:
8662306a36Sopenharmony_ci          Reference to the USB phy
8762306a36Sopenharmony_ci        maxItems: 1
8862306a36Sopenharmony_ci
8962306a36Sopenharmony_ci      phy-names:
9062306a36Sopenharmony_ci        maxItems: 1
9162306a36Sopenharmony_ci
9262306a36Sopenharmony_ci    required:
9362306a36Sopenharmony_ci      - reg
9462306a36Sopenharmony_ci      - phys
9562306a36Sopenharmony_ci      - phy-names
9662306a36Sopenharmony_ci
9762306a36Sopenharmony_ci    unevaluatedProperties: false
9862306a36Sopenharmony_ci
9962306a36Sopenharmony_cirequired:
10062306a36Sopenharmony_ci  - compatible
10162306a36Sopenharmony_ci  - reg
10262306a36Sopenharmony_ci  - interrupts
10362306a36Sopenharmony_ci  - interrupt-map
10462306a36Sopenharmony_ci  - interrupt-map-mask
10562306a36Sopenharmony_ci  - clocks
10662306a36Sopenharmony_ci  - power-domains
10762306a36Sopenharmony_ci  - bus-range
10862306a36Sopenharmony_ci  - "#address-cells"
10962306a36Sopenharmony_ci  - "#size-cells"
11062306a36Sopenharmony_ci  - "#interrupt-cells"
11162306a36Sopenharmony_ci
11262306a36Sopenharmony_ciallOf:
11362306a36Sopenharmony_ci  - $ref: /schemas/pci/pci-bus.yaml#
11462306a36Sopenharmony_ci
11562306a36Sopenharmony_ci  - if:
11662306a36Sopenharmony_ci      properties:
11762306a36Sopenharmony_ci        compatible:
11862306a36Sopenharmony_ci          contains:
11962306a36Sopenharmony_ci            enum:
12062306a36Sopenharmony_ci              - renesas,pci-rzn1
12162306a36Sopenharmony_ci    then:
12262306a36Sopenharmony_ci      properties:
12362306a36Sopenharmony_ci        clocks:
12462306a36Sopenharmony_ci          items:
12562306a36Sopenharmony_ci            - description: Internal bus clock (AHB) for HOST
12662306a36Sopenharmony_ci            - description: Internal bus clock (AHB) Power Management
12762306a36Sopenharmony_ci            - description: PCI clock for USB subsystem
12862306a36Sopenharmony_ci        clock-names:
12962306a36Sopenharmony_ci          items:
13062306a36Sopenharmony_ci            - const: hclkh
13162306a36Sopenharmony_ci            - const: hclkpm
13262306a36Sopenharmony_ci            - const: pciclk
13362306a36Sopenharmony_ci      required:
13462306a36Sopenharmony_ci        - clock-names
13562306a36Sopenharmony_ci    else:
13662306a36Sopenharmony_ci      properties:
13762306a36Sopenharmony_ci        clocks:
13862306a36Sopenharmony_ci          items:
13962306a36Sopenharmony_ci            - description: Device clock
14062306a36Sopenharmony_ci        clock-names:
14162306a36Sopenharmony_ci          items:
14262306a36Sopenharmony_ci            - const: pclk
14362306a36Sopenharmony_ci      required:
14462306a36Sopenharmony_ci        - resets
14562306a36Sopenharmony_ci
14662306a36Sopenharmony_ciunevaluatedProperties: false
14762306a36Sopenharmony_ci
14862306a36Sopenharmony_ciexamples:
14962306a36Sopenharmony_ci  - |
15062306a36Sopenharmony_ci    #include <dt-bindings/interrupt-controller/arm-gic.h>
15162306a36Sopenharmony_ci    #include <dt-bindings/clock/r8a7790-cpg-mssr.h>
15262306a36Sopenharmony_ci    #include <dt-bindings/power/r8a7790-sysc.h>
15362306a36Sopenharmony_ci
15462306a36Sopenharmony_ci    pci@ee090000  {
15562306a36Sopenharmony_ci        compatible = "renesas,pci-r8a7790", "renesas,pci-rcar-gen2";
15662306a36Sopenharmony_ci        device_type = "pci";
15762306a36Sopenharmony_ci        reg = <0xee090000 0xc00>,
15862306a36Sopenharmony_ci              <0xee080000 0x1100>;
15962306a36Sopenharmony_ci        clocks = <&cpg CPG_MOD 703>;
16062306a36Sopenharmony_ci        power-domains = <&sysc R8A7790_PD_ALWAYS_ON>;
16162306a36Sopenharmony_ci        resets = <&cpg 703>;
16262306a36Sopenharmony_ci        interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>;
16362306a36Sopenharmony_ci
16462306a36Sopenharmony_ci        bus-range = <0 0>;
16562306a36Sopenharmony_ci        #address-cells = <3>;
16662306a36Sopenharmony_ci        #size-cells = <2>;
16762306a36Sopenharmony_ci        #interrupt-cells = <1>;
16862306a36Sopenharmony_ci        ranges = <0x02000000 0 0xee080000 0xee080000 0 0x00010000>;
16962306a36Sopenharmony_ci        dma-ranges = <0x42000000 0 0x40000000 0x40000000 0 0x40000000>;
17062306a36Sopenharmony_ci        interrupt-map-mask = <0xf800 0 0 0x7>;
17162306a36Sopenharmony_ci        interrupt-map = <0x0000 0 0 1 &gic GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>,
17262306a36Sopenharmony_ci                        <0x0800 0 0 1 &gic GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>,
17362306a36Sopenharmony_ci                        <0x1000 0 0 2 &gic GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>;
17462306a36Sopenharmony_ci
17562306a36Sopenharmony_ci        usb@1,0 {
17662306a36Sopenharmony_ci            reg = <0x800 0 0 0 0>;
17762306a36Sopenharmony_ci            phys = <&usb0 0>;
17862306a36Sopenharmony_ci            phy-names = "usb";
17962306a36Sopenharmony_ci        };
18062306a36Sopenharmony_ci
18162306a36Sopenharmony_ci        usb@2,0 {
18262306a36Sopenharmony_ci            reg = <0x1000 0 0 0 0>;
18362306a36Sopenharmony_ci            phys = <&usb0 0>;
18462306a36Sopenharmony_ci            phy-names = "usb";
18562306a36Sopenharmony_ci        };
18662306a36Sopenharmony_ci    };
187