xref: /linux/Documentation/devicetree/bindings/media/amlogic,gx-vdec.yaml (revision 3a39d672e7f48b8d6b91a09afa4b55352773b4b5)
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 <neil.armstrong@linaro.org>
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 (S905D, S905W, S905X, S905Y)
35              - amlogic,gxlx-vdec # GXLX (S905L)
36              - amlogic,gxm-vdec # GXM (S912)
37          - const: amlogic,gx-vdec
38      - enum:
39          - amlogic,g12a-vdec # G12A (S905X2, S905D2)
40          - amlogic,sm1-vdec # SM1 (S905X3, S905D3)
41
42  interrupts:
43    minItems: 2
44
45  interrupt-names:
46    items:
47      - const: vdec
48      - const: esparser
49
50  reg:
51    minItems: 2
52
53  reg-names:
54    items:
55      - const: dos
56      - const: esparser
57
58  resets:
59    maxItems: 1
60
61  reset-names:
62    items:
63      - const: esparser
64
65  clocks:
66    minItems: 4
67    maxItems: 5
68
69  clock-names:
70    minItems: 4
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    $ref: /schemas/types.yaml#/definitions/phandle
81
82  amlogic,canvas:
83    description: should point to a canvas provider node
84    $ref: /schemas/types.yaml#/definitions/phandle
85
86allOf:
87  - if:
88      properties:
89        compatible:
90          contains:
91            enum:
92              - amlogic,gx-vdec
93
94    then:
95      properties:
96        clock-names:
97          maxItems: 4
98
99  - if:
100      properties:
101        compatible:
102          contains:
103            enum:
104              - amlogic,g12a-vdec
105              - amlogic,sm1-vdec
106
107    then:
108      properties:
109        clock-names:
110          minItems: 5
111
112required:
113  - compatible
114  - reg
115  - reg-names
116  - interrupts
117  - interrupt-names
118  - clocks
119  - clock-names
120  - resets
121  - reset-names
122  - amlogic,ao-sysctrl
123  - amlogic,canvas
124
125additionalProperties: false
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