1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2# Copyright 2019 BayLibre, SAS
3%YAML 1.2
4---
5$id: "http://devicetree.org/schemas/media/amlogic,gx-vdec.yaml#"
6$schema: "http://devicetree.org/meta-schemas/core.yaml#"
7
8title: Amlogic Video Decoder
9
10maintainers:
11  - Neil Armstrong <narmstrong@baylibre.com>
12  - Maxime Jourdan <mjourdan@baylibre.com>
13
14description: |
15  The video decoding IP lies within the DOS memory region,
16  except for the hardware bitstream parser that makes use of an undocumented
17  region.
18
19  It makes use of the following blocks:
20  - ESPARSER is a bitstream parser that outputs to a VIFIFO. Further VDEC blocks
21    then feed from this VIFIFO.
22  - VDEC_1 can decode MPEG-1, MPEG-2, MPEG-4 part 2, MJPEG, H.263, H.264, VC-1.
23  - VDEC_HEVC can decode HEVC and VP9.
24
25  Both VDEC_1 and VDEC_HEVC share the "vdec" IRQ and as such cannot run
26  concurrently.
27
28properties:
29  compatible:
30    oneOf:
31      - items:
32        - enum:
33          - amlogic,gxbb-vdec # GXBB (S905)
34          - amlogic,gxl-vdec # GXL (S905X, S905D)
35          - amlogic,gxm-vdec # GXM (S912)
36        - const: amlogic,gx-vdec
37      - enum:
38        - amlogic,g12a-vdec # G12A (S905X2, S905D2)
39        - amlogic,sm1-vdec # SM1 (S905X3, S905D3)
40
41  interrupts:
42    minItems: 2
43
44  interrupt-names:
45    items:
46      - const: vdec
47      - const: esparser
48
49  reg:
50    minItems: 2
51
52  reg-names:
53    items:
54      - const: dos
55      - const: esparser
56
57  resets:
58    maxItems: 1
59
60  reset-names:
61    items:
62      - const: esparser
63
64  clocks:
65    minItems: 4
66    maxItems: 5
67
68  clock-names:
69    minItems: 4
70    maxItems: 5
71    items:
72      - const: dos_parser
73      - const: dos
74      - const: vdec_1
75      - const: vdec_hevc
76      - const: vdec_hevcf
77
78  amlogic,ao-sysctrl:
79    description: should point to the AOBUS sysctrl node
80    allOf:
81      - $ref: /schemas/types.yaml#/definitions/phandle
82
83  amlogic,canvas:
84    description: should point to a canvas provider node
85    allOf:
86      - $ref: /schemas/types.yaml#/definitions/phandle
87
88allOf:
89  - if:
90      properties:
91        compatible:
92          contains:
93            enum:
94              - amlogic,gx-vdec
95
96    then:
97      properties:
98        clock-names:
99          maxItems: 4
100
101  - if:
102      properties:
103        compatible:
104          contains:
105            enum:
106              - amlogic,g12a-vdec
107              - amlogic,sm1-vdec
108
109    then:
110      properties:
111        clock-names:
112          minItems: 5
113
114required:
115  - compatible
116  - reg
117  - reg-names
118  - interrupts
119  - interrupt-names
120  - clocks
121  - clock-names
122  - resets
123  - reset-names
124  - amlogic,ao-sysctrl
125  - amlogic,canvas
126
127examples:
128  - |
129    vdec: video-decoder@c8820000 {
130          compatible = "amlogic,gxl-vdec", "amlogic,gx-vdec";
131          reg = <0xc8820000 0x10000>, <0xc110a580 0xe4>;
132          reg-names = "dos", "esparser";
133          interrupts = <44>, <32>;
134          interrupt-names = "vdec", "esparser";
135          clocks = <&clk_dos_parser> ,<&clk_dos>, <&clk_vdec_1>, <&clk_vdec_hevc>;
136          clock-names = "dos_parser", "dos", "vdec_1", "vdec_hevc";
137          resets = <&reset_parser>;
138          reset-names = "esparser";
139          amlogic,ao-sysctrl = <&sysctrl_AO>;
140          amlogic,canvas = <&canvas>;
141    };
142