Documentation / devicetree / bindings / pci / nxp,s32g-pcie.yaml


Based on kernel version 6.19. Page generated on 2026-02-12 08:38 EST.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/pci/nxp,s32g-pcie.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: NXP S32G2xxx/S32G3xxx PCIe Root Complex controller

maintainers:
  - Bogdan Hamciuc <bogdan.hamciuc@nxp.com>
  - Ionut Vicovan <ionut.vicovan@nxp.com>

description:
  This PCIe controller is based on the Synopsys DesignWare PCIe IP.
  The S32G SoC family has two PCIe controllers, which can be configured as
  either Root Complex or Endpoint.

properties:
  compatible:
    oneOf:
      - enum:
          - nxp,s32g2-pcie
      - items:
          - const: nxp,s32g3-pcie
          - const: nxp,s32g2-pcie

  reg:
    maxItems: 6

  reg-names:
    items:
      - const: dbi
      - const: dbi2
      - const: atu
      - const: dma
      - const: ctrl
      - const: config

  interrupts:
    minItems: 1
    maxItems: 2

  interrupt-names:
    items:
      - const: msi
      - const: dma
    minItems: 1

  pcie@0:
    description:
      Describe the S32G Root Port.
    type: object
    $ref: /schemas/pci/pci-pci-bridge.yaml#

    properties:
      reg:
        maxItems: 1

      phys:
        maxItems: 1

    required:
      - reg
      - phys

    unevaluatedProperties: false

required:
  - compatible
  - reg
  - reg-names
  - interrupts
  - interrupt-names
  - ranges
  - pcie@0

allOf:
  - $ref: /schemas/pci/snps,dw-pcie.yaml#

unevaluatedProperties: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    #include <dt-bindings/phy/phy.h>
 
    bus {
        #address-cells = <2>;
        #size-cells = <2>;
 
        pcie@40400000 {
            compatible = "nxp,s32g3-pcie", "nxp,s32g2-pcie";
            reg = <0x00 0x40400000 0x0 0x00001000>,   /* dbi registers */
                  <0x00 0x40420000 0x0 0x00001000>,   /* dbi2 registers */
                  <0x00 0x40460000 0x0 0x00001000>,   /* atu registers */
                  <0x00 0x40470000 0x0 0x00001000>,   /* dma registers */
                  <0x00 0x40481000 0x0 0x000000f8>,   /* ctrl registers */
                  <0x5f 0xffffe000 0x0 0x00002000>;   /* config space */
            reg-names = "dbi", "dbi2", "atu", "dma", "ctrl", "config";
            dma-coherent;
            #address-cells = <3>;
            #size-cells = <2>;
            device_type = "pci";
            ranges =
                     <0x01000000 0x0 0x00000000 0x5f 0xfffe0000 0x0 0x00010000>,
                     <0x02000000 0x0 0x00000000 0x58 0x00000000 0x0 0x80000000>,
                     <0x02000000 0x1 0x00000000 0x59 0x00000000 0x6 0xfffe0000>;
 
            bus-range = <0x0 0xff>;
            interrupts = <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>,
                         <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>;
            interrupt-names = "msi", "dma";
            #interrupt-cells = <1>;
            interrupt-map-mask = <0 0 0 0x7>;
            interrupt-map = <0 0 0 1 &gic 0 0 GIC_SPI 128 IRQ_TYPE_LEVEL_HIGH>,
                            <0 0 0 2 &gic 0 0 GIC_SPI 129 IRQ_TYPE_LEVEL_HIGH>,
                            <0 0 0 3 &gic 0 0 GIC_SPI 130 IRQ_TYPE_LEVEL_HIGH>,
                            <0 0 0 4 &gic 0 0 GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>;
 
            pcie@0 {
                reg = <0x0 0x0 0x0 0x0 0x0>;
                #address-cells = <3>;
                #size-cells = <2>;
                ranges;
 
                device_type = "pci";
                phys = <&serdes0 PHY_TYPE_PCIE 0 0>;
            };
        };
    };