1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2# Copyright (c) 2020 MediaTek Inc.
3%YAML 1.2
4---
5$id: http://devicetree.org/schemas/memory-controllers/mediatek,smi-larb.yaml#
6$schema: http://devicetree.org/meta-schemas/core.yaml#
7
8title: SMI (Smart Multimedia Interface) Local Arbiter
9
10maintainers:
11  - Yong Wu <yong.wu@mediatek.com>
12
13description: |
14  The hardware block diagram please check bindings/iommu/mediatek,iommu.yaml
15
16properties:
17  compatible:
18    oneOf:
19      - enum:
20          - mediatek,mt2701-smi-larb
21          - mediatek,mt2712-smi-larb
22          - mediatek,mt6779-smi-larb
23          - mediatek,mt6795-smi-larb
24          - mediatek,mt8167-smi-larb
25          - mediatek,mt8173-smi-larb
26          - mediatek,mt8183-smi-larb
27          - mediatek,mt8186-smi-larb
28          - mediatek,mt8188-smi-larb
29          - mediatek,mt8192-smi-larb
30          - mediatek,mt8195-smi-larb
31
32      - description: for mt7623
33        items:
34          - const: mediatek,mt7623-smi-larb
35          - const: mediatek,mt2701-smi-larb
36
37      - items:
38          - const: mediatek,mt8365-smi-larb
39          - const: mediatek,mt8186-smi-larb
40
41  reg:
42    maxItems: 1
43
44  clocks:
45    description: |
46      apb and smi are mandatory. gals(global async local sync) is optional.
47    minItems: 2
48    items:
49      - description: apb is Advanced Peripheral Bus clock, It's the clock for
50          setting the register.
51      - description: smi is the clock for transfer data and command.
52      - description: the clock for gals.
53
54  clock-names:
55    minItems: 2
56    maxItems: 3
57
58  power-domains:
59    maxItems: 1
60
61  mediatek,smi:
62    $ref: /schemas/types.yaml#/definitions/phandle
63    description: a phandle to the smi_common node.
64
65  mediatek,larb-id:
66    $ref: /schemas/types.yaml#/definitions/uint32
67    minimum: 0
68    maximum: 31
69    description: the hardware id of this larb. It's only required when this
70      hardware id is not consecutive from its M4U point of view.
71
72required:
73  - compatible
74  - reg
75  - clocks
76  - clock-names
77  - power-domains
78
79allOf:
80  - if:  # HW has gals
81      properties:
82        compatible:
83          enum:
84            - mediatek,mt8183-smi-larb
85            - mediatek,mt8186-smi-larb
86            - mediatek,mt8188-smi-larb
87            - mediatek,mt8195-smi-larb
88
89    then:
90      properties:
91        clocks:
92          minItems: 2
93          maxItems: 3
94        clock-names:
95          minItems: 2
96          items:
97            - const: apb
98            - const: smi
99            - const: gals
100
101    else:
102      properties:
103        clocks:
104          minItems: 2
105          maxItems: 2
106        clock-names:
107          items:
108            - const: apb
109            - const: smi
110
111  - if:
112      properties:
113        compatible:
114          contains:
115            enum:
116              - mediatek,mt2701-smi-larb
117              - mediatek,mt2712-smi-larb
118              - mediatek,mt6779-smi-larb
119              - mediatek,mt8186-smi-larb
120              - mediatek,mt8188-smi-larb
121              - mediatek,mt8192-smi-larb
122              - mediatek,mt8195-smi-larb
123
124    then:
125      required:
126        - mediatek,larb-id
127
128additionalProperties: false
129
130examples:
131  - |+
132    #include <dt-bindings/clock/mt8173-clk.h>
133    #include <dt-bindings/power/mt8173-power.h>
134
135    larb1: larb@16010000 {
136      compatible = "mediatek,mt8173-smi-larb";
137      reg = <0x16010000 0x1000>;
138      mediatek,smi = <&smi_common>;
139      power-domains = <&scpsys MT8173_POWER_DOMAIN_VDEC>;
140      clocks = <&vdecsys CLK_VDEC_CKEN>,
141               <&vdecsys CLK_VDEC_LARB_CKEN>;
142      clock-names = "apb", "smi";
143    };
144