summaryrefslogtreecommitdiffstats
path: root/Documentation/devicetree/bindings/media/rockchip,vdec.yaml
blob: 4f38a0ef29d842ba996a2efd58938c2fed7a8736 (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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/media/rockchip,vdec.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Rockchip Video Decoder (VDec)

maintainers:
  - Heiko Stuebner <heiko@sntech.de>

description: |-
  Rockchip SoCs have variants of the same stateless Video Decoder that can
  decodes H.264, HEVC, VP9 and AV1 streams, depending on the variant.

properties:
  compatible:
    oneOf:
      - const: rockchip,rk3288-vdec
      - const: rockchip,rk3399-vdec
      - const: rockchip,rk3576-vdec
      - const: rockchip,rk3588-vdec
      - items:
          - enum:
              - rockchip,rk3228-vdec
              - rockchip,rk3328-vdec
          - const: rockchip,rk3399-vdec

  reg:
    minItems: 1
    maxItems: 3

  reg-names:
    oneOf:
      - items:
          - const: link
          - const: function
          - const: cache
      - items:
          - const: function
          - const: link
          - const: cache
        deprecated: true
        description: Use link,function,cache block order instead.

  interrupts:
    maxItems: 1

  clocks:
    minItems: 4
    items:
      - description: The Video Decoder AXI interface clock
      - description: The Video Decoder AHB interface clock
      - description: The Video Decoded CABAC clock
      - description: The Video Decoder core clock
      - description: The Video decoder HEVC CABAC clock

  clock-names:
    minItems: 4
    items:
      - const: axi
      - const: ahb
      - const: cabac
      - const: core
      - const: hevc_cabac

  assigned-clocks: true

  assigned-clock-rates: true

  resets:
    items:
      - description: The Video Decoder AXI interface reset
      - description: The Video Decoder AHB interface reset
      - description: The Video Decoded CABAC reset
      - description: The Video Decoder core reset
      - description: The Video decoder HEVC CABAC reset

  reset-names:
    items:
      - const: axi
      - const: ahb
      - const: cabac
      - const: core
      - const: hevc_cabac

  power-domains:
    maxItems: 1

  iommus:
    maxItems: 1

  sram:
    maxItems: 1
    description:
      Some SoCs, like rk3588 provide on-chip SRAM to store temporary
      buffers during decoding.

required:
  - compatible
  - reg
  - interrupts
  - clocks
  - clock-names
  - power-domains

allOf:
  - if:
      properties:
        compatible:
          contains:
            enum:
              - rockchip,rk3576-vdec
              - rockchip,rk3588-vdec
    then:
      properties:
        reg:
          minItems: 3
        reg-names:
          minItems: 3
        clocks:
          minItems: 5
        clock-names:
          minItems: 5
        resets:
          minItems: 5
        reset-names:
          minItems: 5
      required:
        - reg-names
    else:
      properties:
        reg:
          maxItems: 1
        reg-names: false
        clocks:
          maxItems: 4
        clock-names:
          maxItems: 4
        resets: false
        reset-names: false
        sram: false

additionalProperties: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    #include <dt-bindings/clock/rk3399-cru.h>
    #include <dt-bindings/power/rk3399-power.h>

    vdec: video-codec@ff660000 {
        compatible = "rockchip,rk3399-vdec";
        reg = <0xff660000 0x400>;
        interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH 0>;
        clocks = <&cru ACLK_VDU>, <&cru HCLK_VDU>,
                 <&cru SCLK_VDU_CA>, <&cru SCLK_VDU_CORE>;
        clock-names = "axi", "ahb", "cabac", "core";
        power-domains = <&power RK3399_PD_VDU>;
        iommus = <&vdec_mmu>;
    };

...