summaryrefslogtreecommitdiff
path: root/Documentation/devicetree/bindings/interconnect/qcom,sm6115.yaml
blob: 14b1a0b08e736ea78d6883656266d66574b72329 (plain)
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>;
    };