hc
2024-10-12 a5969cabbb4660eab42b6ef0412cbbd1200cf14d
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
141
# 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
    maxItems: 5
    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>;
    };