Documentation / devicetree / bindings / media / mediatek,mdp3-rdma.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 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/media/mediatek,mdp3-rdma.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: MediaTek Read Direct Memory Access

maintainers:
  - Matthias Brugger <matthias.bgg@gmail.com>
  - Moudy Ho <moudy.ho@mediatek.com>

description: |
  MediaTek Read Direct Memory Access(RDMA) component used to do read DMA.
  It contains one line buffer to store the sufficient pixel data, and
  must be siblings to the central MMSYS_CONFIG node.
  For a description of the MMSYS_CONFIG binding, see
  Documentation/devicetree/bindings/arm/mediatek/mediatek,mmsys.yaml
  for details.

properties:
  compatible:
    oneOf:
      - enum:
          - mediatek,mt8183-mdp3-rdma
          - mediatek,mt8188-mdp3-rdma
          - mediatek,mt8195-mdp3-rdma
          - mediatek,mt8195-vdo1-rdma
      - items:
          - const: mediatek,mt8188-vdo1-rdma
          - const: mediatek,mt8195-vdo1-rdma

  reg:
    maxItems: 1

  mediatek,gce-client-reg:
    $ref: /schemas/types.yaml#/definitions/phandle-array
    items:
      items:
        - description: phandle of GCE
        - description: GCE subsys id
        - description: register offset
        - description: register size
    description: The register of client driver can be configured by gce with
      4 arguments defined in this property. Each GCE subsys id is mapping to
      a client defined in the header include/dt-bindings/gce/<chip>-gce.h.

  mediatek,gce-events:
    description:
      The event id which is mapping to the specific hardware event signal
      to gce. The event id is defined in the gce header
      include/dt-bindings/gce/<chip>-gce.h of each chips.
    $ref: /schemas/types.yaml#/definitions/uint32-array

  mediatek,scp:
    $ref: /schemas/types.yaml#/definitions/phandle
    description:
      Phandle to the System Control Processor (SCP) used for initializing
      and stopping the MDP3, for sending frame data locations to the MDP3's
      VPU and to install Inter-Processor Interrupt handlers to control
      processing states.

  power-domains:
    maxItems: 1

  clocks:
    items:
      - description: RDMA clock
      - description: RSZ clock
    minItems: 1

  iommus:
    maxItems: 1

  mboxes:
    items:
      - description: used for 1st data pipe from RDMA
      - description: used for 2nd data pipe from RDMA
      - description: used for 3rd data pipe from RDMA
      - description: used for 4th data pipe from RDMA
      - description: used for the data pipe from SPLIT
    minItems: 1

  interrupts:
    maxItems: 1
 
  '#dma-cells':
    const: 1

required:
  - compatible
  - reg
  - mediatek,gce-client-reg
  - power-domains
  - clocks
  - iommus
  - '#dma-cells'

allOf:
  - if:
      properties:
        compatible:
          contains:
            const: mediatek,mt8183-mdp3-rdma

    then:
      properties:
        clocks:
          minItems: 2

        mboxes:
          minItems: 2

      required:
        - mboxes
        - mediatek,gce-events

  - if:
      properties:
        compatible:
          contains:
            const: mediatek,mt8195-mdp3-rdma

    then:
      properties:
        clocks:
          maxItems: 1

        mboxes:
          minItems: 5

      required:
        - mediatek,gce-events

  - if:
      properties:
        compatible:
          contains:
            const: mediatek,mt8195-vdo1-rdma

    then:
      properties:
        clocks:
          maxItems: 1

additionalProperties: false

examples:
  - |
    #include <dt-bindings/clock/mt8183-clk.h>
    #include <dt-bindings/gce/mt8183-gce.h>
    #include <dt-bindings/power/mt8183-power.h>
    #include <dt-bindings/memory/mt8183-larb-port.h>
 
    dma-controller@14001000 {
        compatible = "mediatek,mt8183-mdp3-rdma";
        reg = <0x14001000 0x1000>;
        mediatek,gce-client-reg = <&gce SUBSYS_1400XXXX 0x1000 0x1000>;
        mediatek,gce-events = <CMDQ_EVENT_MDP_RDMA0_SOF>,
                              <CMDQ_EVENT_MDP_RDMA0_EOF>;
        power-domains = <&spm MT8183_POWER_DOMAIN_DISP>;
        clocks = <&mmsys CLK_MM_MDP_RDMA0>,
                 <&mmsys CLK_MM_MDP_RSZ1>;
        iommus = <&iommu>;
        mboxes = <&gce 20 CMDQ_THR_PRIO_LOWEST>,
                 <&gce 21 CMDQ_THR_PRIO_LOWEST>;
        #dma-cells = <1>;
    };