Documentation / devicetree / bindings / interconnect / qcom,sm6115.yaml


Based on kernel version 6.8. Page generated on 2024-03-11 21:26 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 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/interconnect/qcom,sm6115.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Qualcomm SM6115 Network-On-Chip interconnect

maintainers:
  - Konrad Dybcio <konradybcio@kernel.org>

description:
  The Qualcomm SM6115 interconnect providers support adjusting the
  bandwidth requirements between the various NoC fabrics.

properties:
  compatible:
    enum:
      - qcom,sm6115-bimc
      - qcom,sm6115-cnoc
      - qcom,sm6115-snoc

  reg:
    maxItems: 1

  clocks:
    minItems: 1
    maxItems: 4

  clock-names:
    minItems: 1
    maxItems: 4
 
# Child node's properties
patternProperties:
  '^interconnect-[a-z0-9]+$':
    type: object
    description:
      The interconnect providers do not have a separate QoS register space,
      but share parent's space.

    $ref: qcom,rpm-common.yaml#

    properties:
      compatible:
        enum:
          - qcom,sm6115-clk-virt
          - qcom,sm6115-mmrt-virt
          - qcom,sm6115-mmnrt-virt

    required:
      - compatible

    unevaluatedProperties: false

required:
  - compatible
  - reg

allOf:
  - $ref: qcom,rpm-common.yaml#
  - if:
      properties:
        compatible:
          const: qcom,sm6115-cnoc

    then:
      properties:
        clocks:
          items:
            - description: USB-NoC AXI clock

        clock-names:
          items:
            - const: usb_axi

  - if:
      properties:
        compatible:
          const: qcom,sm6115-snoc

    then:
      properties:
        clocks:
          items:
            - description: CPU-NoC AXI clock.
            - description: UFS-NoC AXI clock.
            - description: USB-NoC AXI clock.
            - description: IPA clock.

        clock-names:
          items:
            - const: cpu_axi
            - const: ufs_axi
            - const: usb_axi
            - const: ipa

  - if:
      properties:
        compatible:
          enum:
            - qcom,sm6115-bimc
            - qcom,sm6115-clk-virt
            - qcom,sm6115-mmrt-virt
            - qcom,sm6115-mmnrt-virt

    then:
      properties:
        clocks: false
        clock-names: false

unevaluatedProperties: false

examples:
  - |
    #include <dt-bindings/clock/qcom,gcc-sm6115.h>
    #include <dt-bindings/clock/qcom,rpmcc.h>
 
    snoc: interconnect@1880000 {
        compatible = "qcom,sm6115-snoc";
        reg = <0x01880000 0x60200>;
        clocks = <&gcc GCC_SYS_NOC_CPUSS_AHB_CLK>,
                 <&gcc GCC_SYS_NOC_UFS_PHY_AXI_CLK>,
                 <&gcc GCC_SYS_NOC_USB3_PRIM_AXI_CLK>,
                 <&rpmcc RPM_SMD_IPA_CLK>;
        clock-names = "cpu_axi",
                      "ufs_axi",
                      "usb_axi",
                      "ipa";
        #interconnect-cells = <1>;
 
        qup_virt: interconnect-clk {
            compatible = "qcom,sm6115-clk-virt";
            #interconnect-cells = <1>;
        };
 
        mmnrt_virt: interconnect-mmnrt {
            compatible = "qcom,sm6115-mmnrt-virt";
            #interconnect-cells = <1>;
        };
 
        mmrt_virt: interconnect-mmrt {
            compatible = "qcom,sm6115-mmrt-virt";
            #interconnect-cells = <1>;
        };
    };
 
    cnoc: interconnect@1900000 {
        compatible = "qcom,sm6115-cnoc";
        reg = <0x01900000 0x8200>;
        #interconnect-cells = <1>;
    };