Documentation / devicetree / bindings / memory-controllers / mediatek,smi-larb.yaml


Based on kernel version 6.11. Page generated on 2024-09-24 08:21 EST.

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 140 141 142 143
# 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

      - items:
          - const: mediatek,mt8365-smi-larb
          - const: mediatek,mt8186-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
      hardware 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";
    };