summaryrefslogtreecommitdiffstats
path: root/Documentation/devicetree/bindings/memory-controllers/mediatek,smi-larb.yaml
blob: 5f4ac3609887f2975b5ed8cf0d6fb73da114aed7 (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
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
# Copyright (c) 2020 MediaTek Inc.
%YAML 1.2
---
$id: http://devicetree.org/schemas/memory-controllers/mediatek,smi-larb.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: SMI (Smart Multimedia Interface) Local Arbiter

maintainers:
  - Yong Wu <yong.wu@mediatek.com>

description: |
  The hardware block diagram please check bindings/iommu/mediatek,iommu.yaml

properties:
  compatible:
    oneOf:
      - enum:
          - mediatek,mt2701-smi-larb
          - mediatek,mt2712-smi-larb
          - mediatek,mt6779-smi-larb
          - mediatek,mt6795-smi-larb
          - mediatek,mt8167-smi-larb
          - mediatek,mt8173-smi-larb
          - mediatek,mt8183-smi-larb
          - mediatek,mt8186-smi-larb
          - mediatek,mt8188-smi-larb
          - mediatek,mt8192-smi-larb
          - mediatek,mt8195-smi-larb

      - description: for mt7623
        items:
          - const: mediatek,mt7623-smi-larb
          - const: mediatek,mt2701-smi-larb

  reg:
    maxItems: 1

  clocks:
    description: |
      apb and smi are mandatory. gals(global async local sync) is optional.
    minItems: 2
    items:
      - description: apb is Advanced Peripheral Bus clock, It's the clock for
          setting the register.
      - description: smi is the clock for transfer data and command.
      - description: the clock for gals.

  clock-names:
    minItems: 2
    maxItems: 3

  power-domains:
    maxItems: 1

  mediatek,smi:
    $ref: /schemas/types.yaml#/definitions/phandle
    description: a phandle to the smi_common node.

  mediatek,larb-id:
    $ref: /schemas/types.yaml#/definitions/uint32
    minimum: 0
    maximum: 31
    description: the hardware id of this larb. It's only required when this
      hardward id is not consecutive from its M4U point of view.

required:
  - compatible
  - reg
  - clocks
  - clock-names
  - power-domains

allOf:
  - if:  # HW has gals
      properties:
        compatible:
          enum:
            - mediatek,mt8183-smi-larb
            - mediatek,mt8186-smi-larb
            - mediatek,mt8188-smi-larb
            - mediatek,mt8195-smi-larb

    then:
      properties:
        clocks:
          minItems: 2
          maxItems: 3
        clock-names:
          minItems: 2
          items:
            - const: apb
            - const: smi
            - const: gals

    else:
      properties:
        clocks:
          minItems: 2
          maxItems: 2
        clock-names:
          items:
            - const: apb
            - const: smi

  - if:
      properties:
        compatible:
          contains:
            enum:
              - mediatek,mt2701-smi-larb
              - mediatek,mt2712-smi-larb
              - mediatek,mt6779-smi-larb
              - mediatek,mt8186-smi-larb
              - mediatek,mt8188-smi-larb
              - mediatek,mt8192-smi-larb
              - mediatek,mt8195-smi-larb

    then:
      required:
        - mediatek,larb-id

additionalProperties: false

examples:
  - |+
    #include <dt-bindings/clock/mt8173-clk.h>
    #include <dt-bindings/power/mt8173-power.h>

    larb1: larb@16010000 {
      compatible = "mediatek,mt8173-smi-larb";
      reg = <0x16010000 0x1000>;
      mediatek,smi = <&smi_common>;
      power-domains = <&scpsys MT8173_POWER_DOMAIN_VDEC>;
      clocks = <&vdecsys CLK_VDEC_CKEN>,
               <&vdecsys CLK_VDEC_LARB_CKEN>;
      clock-names = "apb", "smi";
    };