Documentation / devicetree / bindings / media / rockchip,vdec.yaml


Based on kernel version 6.17. Page generated on 2025-10-03 10:04 EST.

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
# 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,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
    items:
      - description: The function configuration registers base
      - description: The link table configuration registers base
      - description: The cache configuration registers base

  reg-names:
    items:
      - const: function
      - const: link
      - const: cache

  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:
    $ref: /schemas/types.yaml#/definitions/phandle
    description: |
      phandle to a reserved on-chip SRAM regions.
      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
    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>;
    };

...