1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/sram/qcom,ocmem.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: On Chip Memory (OCMEM) that is present on some Qualcomm Snapdragon SoCs.
8
9maintainers:
10  - Brian Masney <masneyb@onstation.org>
11
12description: |
13  The On Chip Memory (OCMEM) is typically used by the GPU, camera/video, and
14  audio components on some Snapdragon SoCs.
15
16properties:
17  compatible:
18    enum:
19      - qcom,msm8226-ocmem  # v1.1.0
20      - qcom,msm8974-ocmem  # v1.4.0
21
22  reg:
23    items:
24      - description: Control registers
25      - description: OCMEM address range
26
27  reg-names:
28    items:
29      - const: ctrl
30      - const: mem
31
32  clocks:
33    minItems: 1
34    items:
35      - description: Core clock
36      - description: Interface clock
37
38  clock-names:
39    minItems: 1
40    items:
41      - const: core
42      - const: iface
43
44  '#address-cells':
45    const: 1
46
47  '#size-cells':
48    const: 1
49
50  ranges:
51    maxItems: 1
52
53required:
54  - compatible
55  - reg
56  - reg-names
57  - clocks
58  - clock-names
59  - '#address-cells'
60  - '#size-cells'
61  - ranges
62
63additionalProperties: false
64
65allOf:
66  - if:
67      properties:
68        compatible:
69          contains:
70            enum:
71              - qcom,msm8974-ocmem
72    then:
73      properties:
74        clocks:
75          minItems: 2
76        clock-names:
77          minItems: 2
78    else:
79      properties:
80        clocks:
81          minItems: 1
82        clock-names:
83          minItems: 1
84
85patternProperties:
86  "-sram@[0-9a-f]+$":
87    type: object
88    additionalProperties: false
89    description: A region of reserved memory.
90
91    properties:
92      reg:
93        maxItems: 1
94
95    required:
96      - reg
97
98examples:
99  - |
100    #include <dt-bindings/clock/qcom,rpmcc.h>
101    #include <dt-bindings/clock/qcom,mmcc-msm8974.h>
102
103    sram@fdd00000 {
104        compatible = "qcom,msm8974-ocmem";
105
106        reg = <0xfdd00000 0x2000>,
107              <0xfec00000 0x180000>;
108        reg-names = "ctrl",
109                    "mem";
110
111        clocks = <&rpmcc RPM_SMD_OCMEMGX_CLK>,
112                 <&mmcc OCMEMCX_OCMEMNOC_CLK>;
113        clock-names = "core",
114                      "iface";
115
116        #address-cells = <1>;
117        #size-cells = <1>;
118        ranges = <0 0xfec00000 0x100000>;
119
120        gmu-sram@0 {
121            reg = <0x0 0x100000>;
122        };
123    };
124