# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)

%YAML 1.2
---
$id: "http://devicetree.org/schemas/media/mediatek,vcodec-subdev-decoder.yaml#"
$schema: "http://devicetree.org/meta-schemas/core.yaml#"

title: Mediatek Video Decode Accelerator With Multi Hardware

maintainers:
  - Yunfei Dong <yunfei.dong@mediatek.com>

description: |
  Mediatek Video Decode is the video decode hardware present in Mediatek
  SoCs which supports high resolution decoding functionalities. Required
  parent and child device node.

  About the Decoder Hardware Block Diagram, please check below:

    +------------------------------------------------+-------------------------------------+
    |                                                |                                     |
    |  input -> lat soc HW -> lat HW -> lat buffer --|--> lat buffer -> core HW -> output  |
    |            ||             ||                   |                     ||              |
    +------------||-------------||-------------------+---------------------||--------------+
                 ||     lat     ||                   |               core workqueue  <parent>
    -------------||-------------||-------------------|---------------------||---------------
                 ||<------------||----------------HW index---------------->||        <child>
                 \/             \/                                         \/
               +-------------------------------------------------------------+
               |                          enable/disable                     |
               |                 clk     power    irq    iommu               |
               |                   (lat/lat soc/core0/core1)                 |
               +-------------------------------------------------------------+

  As above, there are parent and child devices, child mean each hardware. The child device
  controls the information of each hardware independent which include clk/power/irq.

  There are two workqueues in parent device: lat workqueue and core workqueue. They are used
  to lat and core hardware deocder. Lat workqueue need to get input bitstream and lat buffer,
  then enable lat to decode, writing the result to lat buffer, dislabe hardware when lat decode
  done. Core workqueue need to get lat buffer and output buffer, then enable core to decode,
  writing the result to output buffer, disable hardware when core decode done. These two
  hardwares will decode each frame cyclically.

  For the smi common may not the same for each hardware, can't combine all hardware in one node,
  or leading to iommu fault when access dram data.

  Lat soc is a hardware which is related with some larb(local arbiter) ports. For mt8195
  platform, there are some ports like RDMA, UFO in lat soc larb, need to enable its power and
  clock when lat start to work, don't have interrupt.

  mt8195: lat soc HW + lat HW + core HW
  mt8192: lat HW + core HW

properties:
  compatible:
    enum:
      - mediatek,mt8192-vcodec-dec
      - mediatek,mt8186-vcodec-dec
      - mediatek,mt8188-vcodec-dec
      - mediatek,mt8195-vcodec-dec

  reg:
    maxItems: 1

  iommus:
    minItems: 1
    maxItems: 32
    description: |
      List of the hardware port in respective IOMMU block for current Socs.
      Refer to bindings/iommu/mediatek,iommu.yaml.

  mediatek,scp:
    $ref: /schemas/types.yaml#/definitions/phandle
    description: |
      The node of system control processor (SCP), using
      the remoteproc & rpmsg framework.

  dma-ranges:
    maxItems: 1
    description: |
      Describes the physical address space of IOMMU maps to memory.

  "#address-cells":
    const: 2

  "#size-cells":
    const: 2

  ranges: true

# Required child node:
patternProperties:
  '^vcodec-lat@[0-9a-f]+$':
    type: object

    properties:
      compatible:
        enum:
          - mediatek,mtk-vcodec-lat
          - mediatek,mtk-vcodec-lat-soc

      reg:
        maxItems: 1

      interrupts:
        maxItems: 1

      iommus:
        minItems: 1
        maxItems: 32
        description: |
          List of the hardware port in respective IOMMU block for current Socs.
          Refer to bindings/iommu/mediatek,iommu.yaml.

      clocks:
        maxItems: 5

      clock-names:
        items:
          - const: sel
          - const: soc-vdec
          - const: soc-lat
          - const: vdec
          - const: top

      assigned-clocks:
        maxItems: 1

      assigned-clock-parents:
        maxItems: 1

      power-domains:
        maxItems: 1

    required:
      - compatible
      - reg
      - iommus
      - clocks
      - clock-names
      - assigned-clocks
      - assigned-clock-parents
      - power-domains

    additionalProperties: false

  '^vcodec-core@[0-9a-f]+$':
    type: object

    properties:
      compatible:
        const: mediatek,mtk-vcodec-core

      reg:
        maxItems: 1

      interrupts:
        maxItems: 1

      iommus:
        minItems: 1
        maxItems: 32
        description: |
          List of the hardware port in respective IOMMU block for current Socs.
          Refer to bindings/iommu/mediatek,iommu.yaml.

      clocks:
        maxItems: 5

      clock-names:
        items:
          - const: sel
          - const: soc-vdec
          - const: soc-lat
          - const: vdec
          - const: top

      assigned-clocks:
        maxItems: 1

      assigned-clock-parents:
        maxItems: 1

      power-domains:
        maxItems: 1

    required:
      - compatible
      - reg
      - interrupts
      - iommus
      - clocks
      - clock-names
      - assigned-clocks
      - assigned-clock-parents
      - power-domains

    additionalProperties: false

required:
  - compatible
  - reg
  - iommus
  - mediatek,scp
  - dma-ranges
  - ranges

if:
  properties:
    compatible:
      contains:
        enum:
          - mediatek,mtk-vcodec-lat

then:
  required:
    - interrupts

additionalProperties: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    #include <dt-bindings/memory/mt8192-larb-port.h>
    #include <dt-bindings/interrupt-controller/irq.h>
    #include <dt-bindings/clock/mt8192-clk.h>
    #include <dt-bindings/power/mt8192-power.h>

    bus@16000000 {
        #address-cells = <2>;
        #size-cells = <2>;
        ranges = <0 0x16000000 0x16000000 0 0x40000>;

        video-codec@16000000 {
            compatible = "mediatek,mt8192-vcodec-dec";
            mediatek,scp = <&scp>;
            iommus = <&iommu0 M4U_PORT_L4_VDEC_MC_EXT>;
            dma-ranges = <0x1 0x0 0x0 0x40000000 0x0 0xfff00000>;
            #address-cells = <2>;
            #size-cells = <2>;
            ranges = <0 0 0 0x16000000 0 0x40000>;
            reg = <0 0x16000000 0 0x1000>;		/* VDEC_SYS */
            vcodec-lat@10000 {
                compatible = "mediatek,mtk-vcodec-lat";
                reg = <0 0x10000 0 0x800>;
                interrupts = <GIC_SPI 426 IRQ_TYPE_LEVEL_HIGH 0>;
                iommus = <&iommu0 M4U_PORT_L5_VDEC_LAT0_VLD_EXT>,
                    <&iommu0 M4U_PORT_L5_VDEC_LAT0_VLD2_EXT>,
                    <&iommu0 M4U_PORT_L5_VDEC_LAT0_AVC_MV_EXT>,
                    <&iommu0 M4U_PORT_L5_VDEC_LAT0_PRED_RD_EXT>,
                    <&iommu0 M4U_PORT_L5_VDEC_LAT0_TILE_EXT>,
                    <&iommu0 M4U_PORT_L5_VDEC_LAT0_WDMA_EXT>,
                    <&iommu0 M4U_PORT_L5_VDEC_LAT0_RG_CTRL_DMA_EXT>,
                    <&iommu0 M4U_PORT_L5_VDEC_UFO_ENC_EXT>;
                clocks = <&topckgen CLK_TOP_VDEC_SEL>,
                    <&vdecsys_soc CLK_VDEC_SOC_VDEC>,
                    <&vdecsys_soc CLK_VDEC_SOC_LAT>,
                    <&vdecsys_soc CLK_VDEC_SOC_LARB1>,
                    <&topckgen CLK_TOP_MAINPLL_D4>;
                clock-names = "sel", "soc-vdec", "soc-lat", "vdec", "top";
                assigned-clocks = <&topckgen CLK_TOP_VDEC_SEL>;
                assigned-clock-parents = <&topckgen CLK_TOP_MAINPLL_D4>;
                power-domains = <&spm MT8192_POWER_DOMAIN_VDEC>;
            };

            vcodec-core@25000 {
                compatible = "mediatek,mtk-vcodec-core";
                reg = <0 0x25000 0 0x1000>;
                interrupts = <GIC_SPI 425 IRQ_TYPE_LEVEL_HIGH 0>;
                iommus = <&iommu0 M4U_PORT_L4_VDEC_MC_EXT>,
                    <&iommu0 M4U_PORT_L4_VDEC_UFO_EXT>,
                    <&iommu0 M4U_PORT_L4_VDEC_PP_EXT>,
                    <&iommu0 M4U_PORT_L4_VDEC_PRED_RD_EXT>,
                    <&iommu0 M4U_PORT_L4_VDEC_PRED_WR_EXT>,
                    <&iommu0 M4U_PORT_L4_VDEC_PPWRAP_EXT>,
                    <&iommu0 M4U_PORT_L4_VDEC_TILE_EXT>,
                    <&iommu0 M4U_PORT_L4_VDEC_VLD_EXT>,
                    <&iommu0 M4U_PORT_L4_VDEC_VLD2_EXT>,
                    <&iommu0 M4U_PORT_L4_VDEC_AVC_MV_EXT>,
                    <&iommu0 M4U_PORT_L4_VDEC_RG_CTRL_DMA_EXT>;
                clocks = <&topckgen CLK_TOP_VDEC_SEL>,
                    <&vdecsys CLK_VDEC_VDEC>,
                    <&vdecsys CLK_VDEC_LAT>,
                    <&vdecsys CLK_VDEC_LARB1>,
                    <&topckgen CLK_TOP_MAINPLL_D4>;
                clock-names = "sel", "soc-vdec", "soc-lat", "vdec", "top";
                assigned-clocks = <&topckgen CLK_TOP_VDEC_SEL>;
                assigned-clock-parents = <&topckgen CLK_TOP_MAINPLL_D4>;
                power-domains = <&spm MT8192_POWER_DOMAIN_VDEC2>;
            };
        };
    };
