Documentation / devicetree / bindings / media / amlogic,gx-vdec.yaml


Based on kernel version 6.11. Page generated on 2024-09-24 08:21 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
# 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 <neil.armstrong@linaro.org>
  - 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>;
    };