| # 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>; |
| }; |