summaryrefslogtreecommitdiff
path: root/Documentation/devicetree/bindings/interconnect/qcom,shikra.yaml
blob: a0c26de94ccf7027729871804dd88b312f732621 (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
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/interconnect/qcom,shikra.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Qualcomm Shikra Network-On-Chip interconnect

maintainers:
  - Raviteja Laggyshetty <raviteja.laggyshetty@oss.qualcomm.com>

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

properties:
  compatible:
    enum:
      - qcom,shikra-config-noc
      - qcom,shikra-mem-noc-core
      - qcom,shikra-sys-noc

  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,shikra-clk-virt
          - qcom,shikra-mc-virt
          - qcom,shikra-mmrt-virt
          - qcom,shikra-mmnrt-virt

    required:
      - compatible

    unevaluatedProperties: false

required:
  - compatible
  - reg

allOf:
  - $ref: qcom,rpm-common.yaml#
  - if:
      properties:
        compatible:
          const: qcom,shikra-mem-noc-core

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

        clock-names:
          items:
            - const: gpu_axi
      patternProperties:
        '^interconnect-[a-z0-9]+$': false

  - if:
      properties:
        compatible:
          const: qcom,shikra-sys-noc

    then:
      properties:
        clocks:
          items:
            - description: EMAC0-NoC AXI clock.
            - description: EMAC1-NoC AXI clock.
            - description: USB2-NoC AXI clock.
            - description: USB3-NoC AXI clock.

        clock-names:
          items:
            - const: emac0_axi
            - const: emac1_axi
            - const: usb2_axi
            - const: usb3_axi

  - if:
      properties:
        compatible:
          const: qcom,shikra-config-noc

    then:
      properties:
        clocks: false
        clock-names: false
      patternProperties:
        '^interconnect-[a-z0-9]+$': false

unevaluatedProperties: false

examples:
  - |
    interconnect@1880000 {
        compatible = "qcom,shikra-sys-noc";
        reg = <0x01880000 0x6a080>;
        #interconnect-cells = <2>;
        clocks = <&gcc_emac0_axi_sys_noc_clk>,
                 <&gcc_emac1_axi_sys_noc_clk>,
                 <&gcc_sys_noc_usb2_prim_axi_clk>,
                 <&gcc_sys_noc_usb3_prim_axi_clk>;
        clock-names = "emac0_axi",
                      "emac1_axi",
                      "usb2_axi",
                      "usb3_axi";

        interconnect-clk {
            compatible = "qcom,shikra-clk-virt";
            #interconnect-cells = <2>;
        };
    };