aboutsummaryrefslogtreecommitdiff
path: root/Documentation/devicetree/bindings/media/amlogic,gx-vdec.yaml
blob: 5044c4bb94e099750912b974f0a9c7a4d4b05e25 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
# Copyright 2019 BayLibre, SAS
%YAML 1.2
---
$id: "http://devicetree.org/schemas/media/amlogic,gx-vdec.yaml#"
$schema: "http://devicetree.org/meta-schemas/core.yaml#"

title: Amlogic Video Decoder

maintainers:
  - Neil Armstrong <narmstrong@baylibre.com>
  - Maxime Jourdan <mjourdan@baylibre.com>

description: |
  The video decoding IP lies within the DOS memory region,
  except for the hardware bitstream parser that makes use of an undocumented
  region.

  It makes use of the following blocks:
  - ESPARSER is a bitstream parser that outputs to a VIFIFO. Further VDEC blocks
    then feed from this VIFIFO.
  - VDEC_1 can decode MPEG-1, MPEG-2, MPEG-4 part 2, MJPEG, H.263, H.264, VC-1.
  - VDEC_HEVC can decode HEVC and VP9.

  Both VDEC_1 and VDEC_HEVC share the "vdec" IRQ and as such cannot run
  concurrently.

properties:
  compatible:
    oneOf:
      - items:
          - enum:
              - amlogic,gxbb-vdec # GXBB (S905)
              - amlogic,gxl-vdec # GXL (S905X, S905D)
              - amlogic,gxm-vdec # GXM (S912)
          - const: amlogic,gx-vdec
      - enum:
          - amlogic,g12a-vdec # G12A (S905X2, S905D2)
          - amlogic,sm1-vdec # SM1 (S905X3, S905D3)

  interrupts:
    minItems: 2

  interrupt-names:
    items:
      - const: vdec
      - const: esparser

  reg:
    minItems: 2

  reg-names:
    items:
      - const: dos
      - const: esparser

  resets:
    maxItems: 1

  reset-names:
    items:
      - const: esparser

  clocks:
    minItems: 4
    maxItems: 5

  clock-names:
    minItems: 4
    items:
      - const: dos_parser
      - const: dos
      - const: vdec_1
      - const: vdec_hevc
      - const: vdec_hevcf

  amlogic,ao-sysctrl:
    description: should point to the AOBUS sysctrl node
    $ref: /schemas/types.yaml#/definitions/phandle

  amlogic,canvas:
    description: should point to a canvas provider node
    $ref: /schemas/types.yaml#/definitions/phandle

allOf:
  - if:
      properties:
        compatible:
          contains:
            enum:
              - amlogic,gx-vdec

    then:
      properties:
        clock-names:
          maxItems: 4

  - if:
      properties:
        compatible:
          contains:
            enum:
              - amlogic,g12a-vdec
              - amlogic,sm1-vdec

    then:
      properties:
        clock-names:
          minItems: 5

required:
  - compatible
  - reg
  - reg-names
  - interrupts
  - interrupt-names
  - clocks
  - clock-names
  - resets
  - reset-names
  - amlogic,ao-sysctrl
  - amlogic,canvas

additionalProperties: false

examples:
  - |
    vdec: video-decoder@c8820000 {
          compatible = "amlogic,gxl-vdec", "amlogic,gx-vdec";
          reg = <0xc8820000 0x10000>, <0xc110a580 0xe4>;
          reg-names = "dos", "esparser";
          interrupts = <44>, <32>;
          interrupt-names = "vdec", "esparser";
          clocks = <&clk_dos_parser> ,<&clk_dos>, <&clk_vdec_1>, <&clk_vdec_hevc>;
          clock-names = "dos_parser", "dos", "vdec_1", "vdec_hevc";
          resets = <&reset_parser>;
          reset-names = "esparser";
          amlogic,ao-sysctrl = <&sysctrl_AO>;
          amlogic,canvas = <&canvas>;
    };