1*4882a593Smuzhiyun# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) 2*4882a593Smuzhiyun# Copyright 2019 BayLibre, SAS 3*4882a593Smuzhiyun%YAML 1.2 4*4882a593Smuzhiyun--- 5*4882a593Smuzhiyun$id: "http://devicetree.org/schemas/media/amlogic,gx-vdec.yaml#" 6*4882a593Smuzhiyun$schema: "http://devicetree.org/meta-schemas/core.yaml#" 7*4882a593Smuzhiyun 8*4882a593Smuzhiyuntitle: Amlogic Video Decoder 9*4882a593Smuzhiyun 10*4882a593Smuzhiyunmaintainers: 11*4882a593Smuzhiyun - Neil Armstrong <narmstrong@baylibre.com> 12*4882a593Smuzhiyun - Maxime Jourdan <mjourdan@baylibre.com> 13*4882a593Smuzhiyun 14*4882a593Smuzhiyundescription: | 15*4882a593Smuzhiyun The video decoding IP lies within the DOS memory region, 16*4882a593Smuzhiyun except for the hardware bitstream parser that makes use of an undocumented 17*4882a593Smuzhiyun region. 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun It makes use of the following blocks: 20*4882a593Smuzhiyun - ESPARSER is a bitstream parser that outputs to a VIFIFO. Further VDEC blocks 21*4882a593Smuzhiyun then feed from this VIFIFO. 22*4882a593Smuzhiyun - VDEC_1 can decode MPEG-1, MPEG-2, MPEG-4 part 2, MJPEG, H.263, H.264, VC-1. 23*4882a593Smuzhiyun - VDEC_HEVC can decode HEVC and VP9. 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun Both VDEC_1 and VDEC_HEVC share the "vdec" IRQ and as such cannot run 26*4882a593Smuzhiyun concurrently. 27*4882a593Smuzhiyun 28*4882a593Smuzhiyunproperties: 29*4882a593Smuzhiyun compatible: 30*4882a593Smuzhiyun oneOf: 31*4882a593Smuzhiyun - items: 32*4882a593Smuzhiyun - enum: 33*4882a593Smuzhiyun - amlogic,gxbb-vdec # GXBB (S905) 34*4882a593Smuzhiyun - amlogic,gxl-vdec # GXL (S905X, S905D) 35*4882a593Smuzhiyun - amlogic,gxm-vdec # GXM (S912) 36*4882a593Smuzhiyun - const: amlogic,gx-vdec 37*4882a593Smuzhiyun - enum: 38*4882a593Smuzhiyun - amlogic,g12a-vdec # G12A (S905X2, S905D2) 39*4882a593Smuzhiyun - amlogic,sm1-vdec # SM1 (S905X3, S905D3) 40*4882a593Smuzhiyun 41*4882a593Smuzhiyun interrupts: 42*4882a593Smuzhiyun minItems: 2 43*4882a593Smuzhiyun 44*4882a593Smuzhiyun interrupt-names: 45*4882a593Smuzhiyun items: 46*4882a593Smuzhiyun - const: vdec 47*4882a593Smuzhiyun - const: esparser 48*4882a593Smuzhiyun 49*4882a593Smuzhiyun reg: 50*4882a593Smuzhiyun minItems: 2 51*4882a593Smuzhiyun 52*4882a593Smuzhiyun reg-names: 53*4882a593Smuzhiyun items: 54*4882a593Smuzhiyun - const: dos 55*4882a593Smuzhiyun - const: esparser 56*4882a593Smuzhiyun 57*4882a593Smuzhiyun resets: 58*4882a593Smuzhiyun maxItems: 1 59*4882a593Smuzhiyun 60*4882a593Smuzhiyun reset-names: 61*4882a593Smuzhiyun items: 62*4882a593Smuzhiyun - const: esparser 63*4882a593Smuzhiyun 64*4882a593Smuzhiyun clocks: 65*4882a593Smuzhiyun minItems: 4 66*4882a593Smuzhiyun maxItems: 5 67*4882a593Smuzhiyun 68*4882a593Smuzhiyun clock-names: 69*4882a593Smuzhiyun minItems: 4 70*4882a593Smuzhiyun maxItems: 5 71*4882a593Smuzhiyun items: 72*4882a593Smuzhiyun - const: dos_parser 73*4882a593Smuzhiyun - const: dos 74*4882a593Smuzhiyun - const: vdec_1 75*4882a593Smuzhiyun - const: vdec_hevc 76*4882a593Smuzhiyun - const: vdec_hevcf 77*4882a593Smuzhiyun 78*4882a593Smuzhiyun amlogic,ao-sysctrl: 79*4882a593Smuzhiyun description: should point to the AOBUS sysctrl node 80*4882a593Smuzhiyun $ref: /schemas/types.yaml#/definitions/phandle 81*4882a593Smuzhiyun 82*4882a593Smuzhiyun amlogic,canvas: 83*4882a593Smuzhiyun description: should point to a canvas provider node 84*4882a593Smuzhiyun $ref: /schemas/types.yaml#/definitions/phandle 85*4882a593Smuzhiyun 86*4882a593SmuzhiyunallOf: 87*4882a593Smuzhiyun - if: 88*4882a593Smuzhiyun properties: 89*4882a593Smuzhiyun compatible: 90*4882a593Smuzhiyun contains: 91*4882a593Smuzhiyun enum: 92*4882a593Smuzhiyun - amlogic,gx-vdec 93*4882a593Smuzhiyun 94*4882a593Smuzhiyun then: 95*4882a593Smuzhiyun properties: 96*4882a593Smuzhiyun clock-names: 97*4882a593Smuzhiyun maxItems: 4 98*4882a593Smuzhiyun 99*4882a593Smuzhiyun - if: 100*4882a593Smuzhiyun properties: 101*4882a593Smuzhiyun compatible: 102*4882a593Smuzhiyun contains: 103*4882a593Smuzhiyun enum: 104*4882a593Smuzhiyun - amlogic,g12a-vdec 105*4882a593Smuzhiyun - amlogic,sm1-vdec 106*4882a593Smuzhiyun 107*4882a593Smuzhiyun then: 108*4882a593Smuzhiyun properties: 109*4882a593Smuzhiyun clock-names: 110*4882a593Smuzhiyun minItems: 5 111*4882a593Smuzhiyun 112*4882a593Smuzhiyunrequired: 113*4882a593Smuzhiyun - compatible 114*4882a593Smuzhiyun - reg 115*4882a593Smuzhiyun - reg-names 116*4882a593Smuzhiyun - interrupts 117*4882a593Smuzhiyun - interrupt-names 118*4882a593Smuzhiyun - clocks 119*4882a593Smuzhiyun - clock-names 120*4882a593Smuzhiyun - resets 121*4882a593Smuzhiyun - reset-names 122*4882a593Smuzhiyun - amlogic,ao-sysctrl 123*4882a593Smuzhiyun - amlogic,canvas 124*4882a593Smuzhiyun 125*4882a593SmuzhiyunadditionalProperties: false 126*4882a593Smuzhiyun 127*4882a593Smuzhiyunexamples: 128*4882a593Smuzhiyun - | 129*4882a593Smuzhiyun vdec: video-decoder@c8820000 { 130*4882a593Smuzhiyun compatible = "amlogic,gxl-vdec", "amlogic,gx-vdec"; 131*4882a593Smuzhiyun reg = <0xc8820000 0x10000>, <0xc110a580 0xe4>; 132*4882a593Smuzhiyun reg-names = "dos", "esparser"; 133*4882a593Smuzhiyun interrupts = <44>, <32>; 134*4882a593Smuzhiyun interrupt-names = "vdec", "esparser"; 135*4882a593Smuzhiyun clocks = <&clk_dos_parser> ,<&clk_dos>, <&clk_vdec_1>, <&clk_vdec_hevc>; 136*4882a593Smuzhiyun clock-names = "dos_parser", "dos", "vdec_1", "vdec_hevc"; 137*4882a593Smuzhiyun resets = <&reset_parser>; 138*4882a593Smuzhiyun reset-names = "esparser"; 139*4882a593Smuzhiyun amlogic,ao-sysctrl = <&sysctrl_AO>; 140*4882a593Smuzhiyun amlogic,canvas = <&canvas>; 141*4882a593Smuzhiyun }; 142