xref: /openbmc/linux/Documentation/devicetree/bindings/media/mediatek,vcodec-encoder.yaml (revision 9cdd70ceb6faf1adfad1cc7b434c19143b08226e)
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-encoder.yaml#
6*9cdd70ceSYunfei Dong$schema: http://devicetree.org/meta-schemas/core.yaml#
7*9cdd70ceSYunfei Dong
8*9cdd70ceSYunfei Dongtitle: Mediatek Video Encode 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 Encode is the video encode hardware present in Mediatek
15*9cdd70ceSYunfei Dong  SoCs which supports high resolution encoding functionalities.
16*9cdd70ceSYunfei Dong
17*9cdd70ceSYunfei Dongproperties:
18*9cdd70ceSYunfei Dong  compatible:
19*9cdd70ceSYunfei Dong    enum:
20*9cdd70ceSYunfei Dong      - mediatek,mt8173-vcodec-enc-vp8
21*9cdd70ceSYunfei Dong      - mediatek,mt8173-vcodec-enc
22*9cdd70ceSYunfei Dong      - mediatek,mt8183-vcodec-enc
23*9cdd70ceSYunfei Dong      - mediatek,mt8192-vcodec-enc
24*9cdd70ceSYunfei Dong      - mediatek,mt8195-vcodec-enc
25*9cdd70ceSYunfei Dong
26*9cdd70ceSYunfei Dong  reg:
27*9cdd70ceSYunfei Dong    maxItems: 1
28*9cdd70ceSYunfei Dong
29*9cdd70ceSYunfei Dong  interrupts:
30*9cdd70ceSYunfei Dong    maxItems: 1
31*9cdd70ceSYunfei Dong
32*9cdd70ceSYunfei Dong  clocks:
33*9cdd70ceSYunfei Dong    minItems: 1
34*9cdd70ceSYunfei Dong    maxItems: 5
35*9cdd70ceSYunfei Dong
36*9cdd70ceSYunfei Dong  clock-names:
37*9cdd70ceSYunfei Dong    minItems: 1
38*9cdd70ceSYunfei Dong    maxItems: 5
39*9cdd70ceSYunfei Dong
40*9cdd70ceSYunfei Dong  assigned-clocks: true
41*9cdd70ceSYunfei Dong
42*9cdd70ceSYunfei Dong  assigned-clock-parents: true
43*9cdd70ceSYunfei Dong
44*9cdd70ceSYunfei Dong  iommus:
45*9cdd70ceSYunfei Dong    minItems: 1
46*9cdd70ceSYunfei Dong    maxItems: 32
47*9cdd70ceSYunfei Dong    description: |
48*9cdd70ceSYunfei Dong      List of the hardware port in respective IOMMU block for current Socs.
49*9cdd70ceSYunfei Dong      Refer to bindings/iommu/mediatek,iommu.yaml.
50*9cdd70ceSYunfei Dong
51*9cdd70ceSYunfei Dong  dma-ranges:
52*9cdd70ceSYunfei Dong    maxItems: 1
53*9cdd70ceSYunfei Dong    description: |
54*9cdd70ceSYunfei Dong      Describes the physical address space of IOMMU maps to memory.
55*9cdd70ceSYunfei Dong
56*9cdd70ceSYunfei Dong  mediatek,larb:
57*9cdd70ceSYunfei Dong    $ref: /schemas/types.yaml#/definitions/phandle
58*9cdd70ceSYunfei Dong    maxItems: 1
59*9cdd70ceSYunfei Dong    description: |
60*9cdd70ceSYunfei Dong      Must contain the local arbiters in the current Socs.
61*9cdd70ceSYunfei Dong
62*9cdd70ceSYunfei Dong  mediatek,vpu:
63*9cdd70ceSYunfei Dong    $ref: /schemas/types.yaml#/definitions/phandle
64*9cdd70ceSYunfei Dong    maxItems: 1
65*9cdd70ceSYunfei Dong    description:
66*9cdd70ceSYunfei Dong      Describes point to vpu.
67*9cdd70ceSYunfei Dong
68*9cdd70ceSYunfei Dong  mediatek,scp:
69*9cdd70ceSYunfei Dong    $ref: /schemas/types.yaml#/definitions/phandle
70*9cdd70ceSYunfei Dong    maxItems: 1
71*9cdd70ceSYunfei Dong    description:
72*9cdd70ceSYunfei Dong      Describes point to scp.
73*9cdd70ceSYunfei Dong
74*9cdd70ceSYunfei Dongrequired:
75*9cdd70ceSYunfei Dong  - compatible
76*9cdd70ceSYunfei Dong  - reg
77*9cdd70ceSYunfei Dong  - interrupts
78*9cdd70ceSYunfei Dong  - clocks
79*9cdd70ceSYunfei Dong  - clock-names
80*9cdd70ceSYunfei Dong  - iommus
81*9cdd70ceSYunfei Dong  - assigned-clocks
82*9cdd70ceSYunfei Dong  - assigned-clock-parents
83*9cdd70ceSYunfei Dong
84*9cdd70ceSYunfei DongallOf:
85*9cdd70ceSYunfei Dong  - if:
86*9cdd70ceSYunfei Dong      properties:
87*9cdd70ceSYunfei Dong        compatible:
88*9cdd70ceSYunfei Dong          contains:
89*9cdd70ceSYunfei Dong            enum:
90*9cdd70ceSYunfei Dong              - mediatek,mt8183-vcodec-enc
91*9cdd70ceSYunfei Dong              - mediatek,mt8192-vcodec-enc
92*9cdd70ceSYunfei Dong
93*9cdd70ceSYunfei Dong    then:
94*9cdd70ceSYunfei Dong      required:
95*9cdd70ceSYunfei Dong        - mediatek,scp
96*9cdd70ceSYunfei Dong
97*9cdd70ceSYunfei Dong  - if:
98*9cdd70ceSYunfei Dong      properties:
99*9cdd70ceSYunfei Dong        compatible:
100*9cdd70ceSYunfei Dong          contains:
101*9cdd70ceSYunfei Dong            enum:
102*9cdd70ceSYunfei Dong              - mediatek,mt8173-vcodec-enc-vp8
103*9cdd70ceSYunfei Dong              - mediatek,mt8173-vcodec-enc
104*9cdd70ceSYunfei Dong
105*9cdd70ceSYunfei Dong    then:
106*9cdd70ceSYunfei Dong      required:
107*9cdd70ceSYunfei Dong        - mediatek,vpu
108*9cdd70ceSYunfei Dong
109*9cdd70ceSYunfei Dong  - if:
110*9cdd70ceSYunfei Dong      properties:
111*9cdd70ceSYunfei Dong        compatible:
112*9cdd70ceSYunfei Dong          enum:
113*9cdd70ceSYunfei Dong            - mediatek,mt8173-vcodec-enc
114*9cdd70ceSYunfei Dong            - mediatek,mt8192-vcodec-enc
115*9cdd70ceSYunfei Dong            - mediatek,mt8173-vcodec-enc
116*9cdd70ceSYunfei Dong
117*9cdd70ceSYunfei Dong    then:
118*9cdd70ceSYunfei Dong      properties:
119*9cdd70ceSYunfei Dong        clock:
120*9cdd70ceSYunfei Dong          items:
121*9cdd70ceSYunfei Dong            minItems: 1
122*9cdd70ceSYunfei Dong            maxItems: 1
123*9cdd70ceSYunfei Dong        clock-names:
124*9cdd70ceSYunfei Dong          items:
125*9cdd70ceSYunfei Dong            - const: venc_sel
126*9cdd70ceSYunfei Dong    else:  # for vp8 hw decoder
127*9cdd70ceSYunfei Dong      properties:
128*9cdd70ceSYunfei Dong        clock:
129*9cdd70ceSYunfei Dong          items:
130*9cdd70ceSYunfei Dong            minItems: 1
131*9cdd70ceSYunfei Dong            maxItems: 1
132*9cdd70ceSYunfei Dong        clock-names:
133*9cdd70ceSYunfei Dong          items:
134*9cdd70ceSYunfei Dong            - const: venc_lt_sel
135*9cdd70ceSYunfei Dong
136*9cdd70ceSYunfei DongadditionalProperties: false
137*9cdd70ceSYunfei Dong
138*9cdd70ceSYunfei Dongexamples:
139*9cdd70ceSYunfei Dong  - |
140*9cdd70ceSYunfei Dong    #include <dt-bindings/interrupt-controller/arm-gic.h>
141*9cdd70ceSYunfei Dong    #include <dt-bindings/clock/mt8173-clk.h>
142*9cdd70ceSYunfei Dong    #include <dt-bindings/memory/mt8173-larb-port.h>
143*9cdd70ceSYunfei Dong    #include <dt-bindings/interrupt-controller/irq.h>
144*9cdd70ceSYunfei Dong
145*9cdd70ceSYunfei Dong    vcodec_enc_avc: vcodec@18002000 {
146*9cdd70ceSYunfei Dong      compatible = "mediatek,mt8173-vcodec-enc";
147*9cdd70ceSYunfei Dong      reg = <0x18002000 0x1000>;
148*9cdd70ceSYunfei Dong      interrupts = <GIC_SPI 198 IRQ_TYPE_LEVEL_LOW>;
149*9cdd70ceSYunfei Dong      iommus = <&iommu M4U_PORT_VENC_RCPU>,
150*9cdd70ceSYunfei Dong             <&iommu M4U_PORT_VENC_REC>,
151*9cdd70ceSYunfei Dong             <&iommu M4U_PORT_VENC_BSDMA>,
152*9cdd70ceSYunfei Dong             <&iommu M4U_PORT_VENC_SV_COMV>,
153*9cdd70ceSYunfei Dong             <&iommu M4U_PORT_VENC_RD_COMV>,
154*9cdd70ceSYunfei Dong             <&iommu M4U_PORT_VENC_CUR_LUMA>,
155*9cdd70ceSYunfei Dong             <&iommu M4U_PORT_VENC_CUR_CHROMA>,
156*9cdd70ceSYunfei Dong             <&iommu M4U_PORT_VENC_REF_LUMA>,
157*9cdd70ceSYunfei Dong             <&iommu M4U_PORT_VENC_REF_CHROMA>,
158*9cdd70ceSYunfei Dong             <&iommu M4U_PORT_VENC_NBM_RDMA>,
159*9cdd70ceSYunfei Dong             <&iommu M4U_PORT_VENC_NBM_WDMA>;
160*9cdd70ceSYunfei Dong      mediatek,larb = <&larb3>;
161*9cdd70ceSYunfei Dong      mediatek,vpu = <&vpu>;
162*9cdd70ceSYunfei Dong      clocks = <&topckgen CLK_TOP_VENC_SEL>;
163*9cdd70ceSYunfei Dong      clock-names = "venc_sel";
164*9cdd70ceSYunfei Dong      assigned-clocks = <&topckgen CLK_TOP_VENC_SEL>;
165*9cdd70ceSYunfei Dong      assigned-clock-parents = <&topckgen CLK_TOP_VCODECPLL>;
166*9cdd70ceSYunfei Dong    };
167*9cdd70ceSYunfei Dong
168*9cdd70ceSYunfei Dong    vcodec_enc_vp8: vcodec@19002000 {
169*9cdd70ceSYunfei Dong      compatible = "mediatek,mt8173-vcodec-enc-vp8";
170*9cdd70ceSYunfei Dong      reg =  <0x19002000 0x1000>;	/* VENC_LT_SYS */
171*9cdd70ceSYunfei Dong      interrupts = <GIC_SPI 202 IRQ_TYPE_LEVEL_LOW>;
172*9cdd70ceSYunfei Dong      iommus = <&iommu M4U_PORT_VENC_RCPU_SET2>,
173*9cdd70ceSYunfei Dong             <&iommu M4U_PORT_VENC_REC_FRM_SET2>,
174*9cdd70ceSYunfei Dong             <&iommu M4U_PORT_VENC_BSDMA_SET2>,
175*9cdd70ceSYunfei Dong             <&iommu M4U_PORT_VENC_SV_COMA_SET2>,
176*9cdd70ceSYunfei Dong             <&iommu M4U_PORT_VENC_RD_COMA_SET2>,
177*9cdd70ceSYunfei Dong             <&iommu M4U_PORT_VENC_CUR_LUMA_SET2>,
178*9cdd70ceSYunfei Dong             <&iommu M4U_PORT_VENC_CUR_CHROMA_SET2>,
179*9cdd70ceSYunfei Dong             <&iommu M4U_PORT_VENC_REF_LUMA_SET2>,
180*9cdd70ceSYunfei Dong             <&iommu M4U_PORT_VENC_REC_CHROMA_SET2>;
181*9cdd70ceSYunfei Dong      mediatek,larb = <&larb5>;
182*9cdd70ceSYunfei Dong      mediatek,vpu = <&vpu>;
183*9cdd70ceSYunfei Dong      clocks = <&topckgen CLK_TOP_VENC_LT_SEL>;
184*9cdd70ceSYunfei Dong      clock-names = "venc_lt_sel";
185*9cdd70ceSYunfei Dong      assigned-clocks = <&topckgen CLK_TOP_VENC_LT_SEL>;
186*9cdd70ceSYunfei Dong      assigned-clock-parents = <&topckgen CLK_TOP_VCODECPLL_370P5>;
187*9cdd70ceSYunfei Dong    };
188