18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
28c2ecf20Sopenharmony_ci# Copyright 2019 BayLibre, SAS
38c2ecf20Sopenharmony_ci%YAML 1.2
48c2ecf20Sopenharmony_ci---
58c2ecf20Sopenharmony_ci$id: "http://devicetree.org/schemas/media/amlogic,gx-vdec.yaml#"
68c2ecf20Sopenharmony_ci$schema: "http://devicetree.org/meta-schemas/core.yaml#"
78c2ecf20Sopenharmony_ci
88c2ecf20Sopenharmony_cititle: Amlogic Video Decoder
98c2ecf20Sopenharmony_ci
108c2ecf20Sopenharmony_cimaintainers:
118c2ecf20Sopenharmony_ci  - Neil Armstrong <narmstrong@baylibre.com>
128c2ecf20Sopenharmony_ci  - Maxime Jourdan <mjourdan@baylibre.com>
138c2ecf20Sopenharmony_ci
148c2ecf20Sopenharmony_cidescription: |
158c2ecf20Sopenharmony_ci  The video decoding IP lies within the DOS memory region,
168c2ecf20Sopenharmony_ci  except for the hardware bitstream parser that makes use of an undocumented
178c2ecf20Sopenharmony_ci  region.
188c2ecf20Sopenharmony_ci
198c2ecf20Sopenharmony_ci  It makes use of the following blocks:
208c2ecf20Sopenharmony_ci  - ESPARSER is a bitstream parser that outputs to a VIFIFO. Further VDEC blocks
218c2ecf20Sopenharmony_ci    then feed from this VIFIFO.
228c2ecf20Sopenharmony_ci  - VDEC_1 can decode MPEG-1, MPEG-2, MPEG-4 part 2, MJPEG, H.263, H.264, VC-1.
238c2ecf20Sopenharmony_ci  - VDEC_HEVC can decode HEVC and VP9.
248c2ecf20Sopenharmony_ci
258c2ecf20Sopenharmony_ci  Both VDEC_1 and VDEC_HEVC share the "vdec" IRQ and as such cannot run
268c2ecf20Sopenharmony_ci  concurrently.
278c2ecf20Sopenharmony_ci
288c2ecf20Sopenharmony_ciproperties:
298c2ecf20Sopenharmony_ci  compatible:
308c2ecf20Sopenharmony_ci    oneOf:
318c2ecf20Sopenharmony_ci      - items:
328c2ecf20Sopenharmony_ci          - enum:
338c2ecf20Sopenharmony_ci              - amlogic,gxbb-vdec # GXBB (S905)
348c2ecf20Sopenharmony_ci              - amlogic,gxl-vdec # GXL (S905X, S905D)
358c2ecf20Sopenharmony_ci              - amlogic,gxm-vdec # GXM (S912)
368c2ecf20Sopenharmony_ci          - const: amlogic,gx-vdec
378c2ecf20Sopenharmony_ci      - enum:
388c2ecf20Sopenharmony_ci          - amlogic,g12a-vdec # G12A (S905X2, S905D2)
398c2ecf20Sopenharmony_ci          - amlogic,sm1-vdec # SM1 (S905X3, S905D3)
408c2ecf20Sopenharmony_ci
418c2ecf20Sopenharmony_ci  interrupts:
428c2ecf20Sopenharmony_ci    minItems: 2
438c2ecf20Sopenharmony_ci
448c2ecf20Sopenharmony_ci  interrupt-names:
458c2ecf20Sopenharmony_ci    items:
468c2ecf20Sopenharmony_ci      - const: vdec
478c2ecf20Sopenharmony_ci      - const: esparser
488c2ecf20Sopenharmony_ci
498c2ecf20Sopenharmony_ci  reg:
508c2ecf20Sopenharmony_ci    minItems: 2
518c2ecf20Sopenharmony_ci
528c2ecf20Sopenharmony_ci  reg-names:
538c2ecf20Sopenharmony_ci    items:
548c2ecf20Sopenharmony_ci      - const: dos
558c2ecf20Sopenharmony_ci      - const: esparser
568c2ecf20Sopenharmony_ci
578c2ecf20Sopenharmony_ci  resets:
588c2ecf20Sopenharmony_ci    maxItems: 1
598c2ecf20Sopenharmony_ci
608c2ecf20Sopenharmony_ci  reset-names:
618c2ecf20Sopenharmony_ci    items:
628c2ecf20Sopenharmony_ci      - const: esparser
638c2ecf20Sopenharmony_ci
648c2ecf20Sopenharmony_ci  clocks:
658c2ecf20Sopenharmony_ci    minItems: 4
668c2ecf20Sopenharmony_ci    maxItems: 5
678c2ecf20Sopenharmony_ci
688c2ecf20Sopenharmony_ci  clock-names:
698c2ecf20Sopenharmony_ci    minItems: 4
708c2ecf20Sopenharmony_ci    maxItems: 5
718c2ecf20Sopenharmony_ci    items:
728c2ecf20Sopenharmony_ci      - const: dos_parser
738c2ecf20Sopenharmony_ci      - const: dos
748c2ecf20Sopenharmony_ci      - const: vdec_1
758c2ecf20Sopenharmony_ci      - const: vdec_hevc
768c2ecf20Sopenharmony_ci      - const: vdec_hevcf
778c2ecf20Sopenharmony_ci
788c2ecf20Sopenharmony_ci  amlogic,ao-sysctrl:
798c2ecf20Sopenharmony_ci    description: should point to the AOBUS sysctrl node
808c2ecf20Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/phandle
818c2ecf20Sopenharmony_ci
828c2ecf20Sopenharmony_ci  amlogic,canvas:
838c2ecf20Sopenharmony_ci    description: should point to a canvas provider node
848c2ecf20Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/phandle
858c2ecf20Sopenharmony_ci
868c2ecf20Sopenharmony_ciallOf:
878c2ecf20Sopenharmony_ci  - if:
888c2ecf20Sopenharmony_ci      properties:
898c2ecf20Sopenharmony_ci        compatible:
908c2ecf20Sopenharmony_ci          contains:
918c2ecf20Sopenharmony_ci            enum:
928c2ecf20Sopenharmony_ci              - amlogic,gx-vdec
938c2ecf20Sopenharmony_ci
948c2ecf20Sopenharmony_ci    then:
958c2ecf20Sopenharmony_ci      properties:
968c2ecf20Sopenharmony_ci        clock-names:
978c2ecf20Sopenharmony_ci          maxItems: 4
988c2ecf20Sopenharmony_ci
998c2ecf20Sopenharmony_ci  - if:
1008c2ecf20Sopenharmony_ci      properties:
1018c2ecf20Sopenharmony_ci        compatible:
1028c2ecf20Sopenharmony_ci          contains:
1038c2ecf20Sopenharmony_ci            enum:
1048c2ecf20Sopenharmony_ci              - amlogic,g12a-vdec
1058c2ecf20Sopenharmony_ci              - amlogic,sm1-vdec
1068c2ecf20Sopenharmony_ci
1078c2ecf20Sopenharmony_ci    then:
1088c2ecf20Sopenharmony_ci      properties:
1098c2ecf20Sopenharmony_ci        clock-names:
1108c2ecf20Sopenharmony_ci          minItems: 5
1118c2ecf20Sopenharmony_ci
1128c2ecf20Sopenharmony_cirequired:
1138c2ecf20Sopenharmony_ci  - compatible
1148c2ecf20Sopenharmony_ci  - reg
1158c2ecf20Sopenharmony_ci  - reg-names
1168c2ecf20Sopenharmony_ci  - interrupts
1178c2ecf20Sopenharmony_ci  - interrupt-names
1188c2ecf20Sopenharmony_ci  - clocks
1198c2ecf20Sopenharmony_ci  - clock-names
1208c2ecf20Sopenharmony_ci  - resets
1218c2ecf20Sopenharmony_ci  - reset-names
1228c2ecf20Sopenharmony_ci  - amlogic,ao-sysctrl
1238c2ecf20Sopenharmony_ci  - amlogic,canvas
1248c2ecf20Sopenharmony_ci
1258c2ecf20Sopenharmony_ciadditionalProperties: false
1268c2ecf20Sopenharmony_ci
1278c2ecf20Sopenharmony_ciexamples:
1288c2ecf20Sopenharmony_ci  - |
1298c2ecf20Sopenharmony_ci    vdec: video-decoder@c8820000 {
1308c2ecf20Sopenharmony_ci          compatible = "amlogic,gxl-vdec", "amlogic,gx-vdec";
1318c2ecf20Sopenharmony_ci          reg = <0xc8820000 0x10000>, <0xc110a580 0xe4>;
1328c2ecf20Sopenharmony_ci          reg-names = "dos", "esparser";
1338c2ecf20Sopenharmony_ci          interrupts = <44>, <32>;
1348c2ecf20Sopenharmony_ci          interrupt-names = "vdec", "esparser";
1358c2ecf20Sopenharmony_ci          clocks = <&clk_dos_parser> ,<&clk_dos>, <&clk_vdec_1>, <&clk_vdec_hevc>;
1368c2ecf20Sopenharmony_ci          clock-names = "dos_parser", "dos", "vdec_1", "vdec_hevc";
1378c2ecf20Sopenharmony_ci          resets = <&reset_parser>;
1388c2ecf20Sopenharmony_ci          reset-names = "esparser";
1398c2ecf20Sopenharmony_ci          amlogic,ao-sysctrl = <&sysctrl_AO>;
1408c2ecf20Sopenharmony_ci          amlogic,canvas = <&canvas>;
1418c2ecf20Sopenharmony_ci    };
142