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