1*9cdd70ceSYunfei Dong# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*9cdd70ceSYunfei Dong
3*9cdd70ceSYunfei Dong%YAML 1.2
4*9cdd70ceSYunfei Dong---
5*9cdd70ceSYunfei Dong$id: http://devicetree.org/schemas/media/mediatek,vcodec-decoder.yaml#
6*9cdd70ceSYunfei Dong$schema: http://devicetree.org/meta-schemas/core.yaml#
7*9cdd70ceSYunfei Dong
8*9cdd70ceSYunfei Dongtitle: Mediatek Video Decode Accelerator
9*9cdd70ceSYunfei Dong
10*9cdd70ceSYunfei Dongmaintainers:
11*9cdd70ceSYunfei Dong  - Yunfei Dong <yunfei.dong@mediatek.com>
12*9cdd70ceSYunfei Dong
13*9cdd70ceSYunfei Dongdescription: |+
14*9cdd70ceSYunfei Dong  Mediatek Video Decode is the video decode hardware present in Mediatek
15*9cdd70ceSYunfei Dong  SoCs which supports high resolution decoding functionalities.
16*9cdd70ceSYunfei Dong
17*9cdd70ceSYunfei Dongproperties:
18*9cdd70ceSYunfei Dong  compatible:
19*9cdd70ceSYunfei Dong    enum:
20*9cdd70ceSYunfei Dong      - mediatek,mt8173-vcodec-dec
21*9cdd70ceSYunfei Dong      - mediatek,mt8183-vcodec-dec
22*9cdd70ceSYunfei Dong
23*9cdd70ceSYunfei Dong  reg:
24*9cdd70ceSYunfei Dong    maxItems: 12
25*9cdd70ceSYunfei Dong
26*9cdd70ceSYunfei Dong  interrupts:
27*9cdd70ceSYunfei Dong    maxItems: 1
28*9cdd70ceSYunfei Dong
29*9cdd70ceSYunfei Dong  clocks:
30*9cdd70ceSYunfei Dong    maxItems: 8
31*9cdd70ceSYunfei Dong
32*9cdd70ceSYunfei Dong  clock-names:
33*9cdd70ceSYunfei Dong    items:
34*9cdd70ceSYunfei Dong      - const: vcodecpll
35*9cdd70ceSYunfei Dong      - const: univpll_d2
36*9cdd70ceSYunfei Dong      - const: clk_cci400_sel
37*9cdd70ceSYunfei Dong      - const: vdec_sel
38*9cdd70ceSYunfei Dong      - const: vdecpll
39*9cdd70ceSYunfei Dong      - const: vencpll
40*9cdd70ceSYunfei Dong      - const: venc_lt_sel
41*9cdd70ceSYunfei Dong      - const: vdec_bus_clk_src
42*9cdd70ceSYunfei Dong
43*9cdd70ceSYunfei Dong  assigned-clocks: true
44*9cdd70ceSYunfei Dong
45*9cdd70ceSYunfei Dong  assigned-clock-parents: true
46*9cdd70ceSYunfei Dong
47*9cdd70ceSYunfei Dong  assigned-clock-rates: true
48*9cdd70ceSYunfei Dong
49*9cdd70ceSYunfei Dong  power-domains:
50*9cdd70ceSYunfei Dong    maxItems: 1
51*9cdd70ceSYunfei Dong
52*9cdd70ceSYunfei Dong  iommus:
53*9cdd70ceSYunfei Dong    minItems: 1
54*9cdd70ceSYunfei Dong    maxItems: 32
55*9cdd70ceSYunfei Dong    description: |
56*9cdd70ceSYunfei Dong      List of the hardware port in respective IOMMU block for current Socs.
57*9cdd70ceSYunfei Dong      Refer to bindings/iommu/mediatek,iommu.yaml.
58*9cdd70ceSYunfei Dong
59*9cdd70ceSYunfei Dong  dma-ranges:
60*9cdd70ceSYunfei Dong    maxItems: 1
61*9cdd70ceSYunfei Dong    description: |
62*9cdd70ceSYunfei Dong      Describes the physical address space of IOMMU maps to memory.
63*9cdd70ceSYunfei Dong
64*9cdd70ceSYunfei Dong  mediatek,larb:
65*9cdd70ceSYunfei Dong    $ref: /schemas/types.yaml#/definitions/phandle
66*9cdd70ceSYunfei Dong    maxItems: 1
67*9cdd70ceSYunfei Dong    description: |
68*9cdd70ceSYunfei Dong      Must contain the local arbiters in the current Socs.
69*9cdd70ceSYunfei Dong
70*9cdd70ceSYunfei Dong  mediatek,vpu:
71*9cdd70ceSYunfei Dong    $ref: /schemas/types.yaml#/definitions/phandle
72*9cdd70ceSYunfei Dong    maxItems: 1
73*9cdd70ceSYunfei Dong    description:
74*9cdd70ceSYunfei Dong      Describes point to vpu.
75*9cdd70ceSYunfei Dong
76*9cdd70ceSYunfei Dong  mediatek,scp:
77*9cdd70ceSYunfei Dong    $ref: /schemas/types.yaml#/definitions/phandle
78*9cdd70ceSYunfei Dong    maxItems: 1
79*9cdd70ceSYunfei Dong    description:
80*9cdd70ceSYunfei Dong      Describes point to scp.
81*9cdd70ceSYunfei Dong
82*9cdd70ceSYunfei Dongrequired:
83*9cdd70ceSYunfei Dong  - compatible
84*9cdd70ceSYunfei Dong  - reg
85*9cdd70ceSYunfei Dong  - interrupts
86*9cdd70ceSYunfei Dong  - clocks
87*9cdd70ceSYunfei Dong  - clock-names
88*9cdd70ceSYunfei Dong  - iommus
89*9cdd70ceSYunfei Dong  - assigned-clocks
90*9cdd70ceSYunfei Dong  - assigned-clock-parents
91*9cdd70ceSYunfei Dong
92*9cdd70ceSYunfei DongallOf:
93*9cdd70ceSYunfei Dong  - if:
94*9cdd70ceSYunfei Dong      properties:
95*9cdd70ceSYunfei Dong        compatible:
96*9cdd70ceSYunfei Dong          contains:
97*9cdd70ceSYunfei Dong            enum:
98*9cdd70ceSYunfei Dong              - mediatek,mt8183-vcodec-dec
99*9cdd70ceSYunfei Dong
100*9cdd70ceSYunfei Dong    then:
101*9cdd70ceSYunfei Dong      required:
102*9cdd70ceSYunfei Dong        - mediatek,scp
103*9cdd70ceSYunfei Dong
104*9cdd70ceSYunfei Dong  - if:
105*9cdd70ceSYunfei Dong      properties:
106*9cdd70ceSYunfei Dong        compatible:
107*9cdd70ceSYunfei Dong          contains:
108*9cdd70ceSYunfei Dong            enum:
109*9cdd70ceSYunfei Dong              - mediatek,mt8173-vcodec-dec
110*9cdd70ceSYunfei Dong
111*9cdd70ceSYunfei Dong    then:
112*9cdd70ceSYunfei Dong      required:
113*9cdd70ceSYunfei Dong        - mediatek,vpu
114*9cdd70ceSYunfei Dong
115*9cdd70ceSYunfei DongadditionalProperties: false
116*9cdd70ceSYunfei Dong
117*9cdd70ceSYunfei Dongexamples:
118*9cdd70ceSYunfei Dong  - |
119*9cdd70ceSYunfei Dong    #include <dt-bindings/interrupt-controller/arm-gic.h>
120*9cdd70ceSYunfei Dong    #include <dt-bindings/clock/mt8173-clk.h>
121*9cdd70ceSYunfei Dong    #include <dt-bindings/memory/mt8173-larb-port.h>
122*9cdd70ceSYunfei Dong    #include <dt-bindings/interrupt-controller/irq.h>
123*9cdd70ceSYunfei Dong    #include <dt-bindings/power/mt8173-power.h>
124*9cdd70ceSYunfei Dong
125*9cdd70ceSYunfei Dong    vcodec_dec: vcodec@16000000 {
126*9cdd70ceSYunfei Dong      compatible = "mediatek,mt8173-vcodec-dec";
127*9cdd70ceSYunfei Dong      reg = <0x16000000 0x100>,   /*VDEC_SYS*/
128*9cdd70ceSYunfei Dong          <0x16020000 0x1000>,  /*VDEC_MISC*/
129*9cdd70ceSYunfei Dong          <0x16021000 0x800>,   /*VDEC_LD*/
130*9cdd70ceSYunfei Dong          <0x16021800 0x800>,   /*VDEC_TOP*/
131*9cdd70ceSYunfei Dong          <0x16022000 0x1000>,  /*VDEC_CM*/
132*9cdd70ceSYunfei Dong          <0x16023000 0x1000>,  /*VDEC_AD*/
133*9cdd70ceSYunfei Dong          <0x16024000 0x1000>,  /*VDEC_AV*/
134*9cdd70ceSYunfei Dong          <0x16025000 0x1000>,  /*VDEC_PP*/
135*9cdd70ceSYunfei Dong          <0x16026800 0x800>,   /*VP8_VD*/
136*9cdd70ceSYunfei Dong          <0x16027000 0x800>,   /*VP6_VD*/
137*9cdd70ceSYunfei Dong          <0x16027800 0x800>,   /*VP8_VL*/
138*9cdd70ceSYunfei Dong          <0x16028400 0x400>;   /*VP9_VD*/
139*9cdd70ceSYunfei Dong      interrupts = <GIC_SPI 204 IRQ_TYPE_LEVEL_LOW>;
140*9cdd70ceSYunfei Dong      mediatek,larb = <&larb1>;
141*9cdd70ceSYunfei Dong      iommus = <&iommu M4U_PORT_HW_VDEC_MC_EXT>,
142*9cdd70ceSYunfei Dong             <&iommu M4U_PORT_HW_VDEC_PP_EXT>,
143*9cdd70ceSYunfei Dong             <&iommu M4U_PORT_HW_VDEC_AVC_MV_EXT>,
144*9cdd70ceSYunfei Dong             <&iommu M4U_PORT_HW_VDEC_PRED_RD_EXT>,
145*9cdd70ceSYunfei Dong             <&iommu M4U_PORT_HW_VDEC_PRED_WR_EXT>,
146*9cdd70ceSYunfei Dong             <&iommu M4U_PORT_HW_VDEC_UFO_EXT>,
147*9cdd70ceSYunfei Dong             <&iommu M4U_PORT_HW_VDEC_VLD_EXT>,
148*9cdd70ceSYunfei Dong             <&iommu M4U_PORT_HW_VDEC_VLD2_EXT>;
149*9cdd70ceSYunfei Dong      mediatek,vpu = <&vpu>;
150*9cdd70ceSYunfei Dong      power-domains = <&scpsys MT8173_POWER_DOMAIN_VDEC>;
151*9cdd70ceSYunfei Dong      clocks = <&apmixedsys CLK_APMIXED_VCODECPLL>,
152*9cdd70ceSYunfei Dong             <&topckgen CLK_TOP_UNIVPLL_D2>,
153*9cdd70ceSYunfei Dong             <&topckgen CLK_TOP_CCI400_SEL>,
154*9cdd70ceSYunfei Dong             <&topckgen CLK_TOP_VDEC_SEL>,
155*9cdd70ceSYunfei Dong             <&topckgen CLK_TOP_VCODECPLL>,
156*9cdd70ceSYunfei Dong             <&apmixedsys CLK_APMIXED_VENCPLL>,
157*9cdd70ceSYunfei Dong             <&topckgen CLK_TOP_VENC_LT_SEL>,
158*9cdd70ceSYunfei Dong             <&topckgen CLK_TOP_VCODECPLL_370P5>;
159*9cdd70ceSYunfei Dong      clock-names = "vcodecpll",
160*9cdd70ceSYunfei Dong                  "univpll_d2",
161*9cdd70ceSYunfei Dong                  "clk_cci400_sel",
162*9cdd70ceSYunfei Dong                  "vdec_sel",
163*9cdd70ceSYunfei Dong                  "vdecpll",
164*9cdd70ceSYunfei Dong                  "vencpll",
165*9cdd70ceSYunfei Dong                  "venc_lt_sel",
166*9cdd70ceSYunfei Dong                  "vdec_bus_clk_src";
167*9cdd70ceSYunfei Dong      assigned-clocks = <&topckgen CLK_TOP_VENC_LT_SEL>,
168*9cdd70ceSYunfei Dong                      <&topckgen CLK_TOP_CCI400_SEL>,
169*9cdd70ceSYunfei Dong                      <&topckgen CLK_TOP_VDEC_SEL>,
170*9cdd70ceSYunfei Dong                      <&apmixedsys CLK_APMIXED_VCODECPLL>,
171*9cdd70ceSYunfei Dong                      <&apmixedsys CLK_APMIXED_VENCPLL>;
172*9cdd70ceSYunfei Dong      assigned-clock-parents = <&topckgen CLK_TOP_VCODECPLL_370P5>,
173*9cdd70ceSYunfei Dong                             <&topckgen CLK_TOP_UNIVPLL_D2>,
174*9cdd70ceSYunfei Dong                             <&topckgen CLK_TOP_VCODECPLL>;
175*9cdd70ceSYunfei Dong      assigned-clock-rates = <0>, <0>, <0>, <1482000000>, <800000000>;
176*9cdd70ceSYunfei Dong    };
177