1*4882a593SmuzhiyunMediatek Video Codec 2*4882a593Smuzhiyun 3*4882a593SmuzhiyunMediatek Video Codec is the video codec hw present in Mediatek SoCs which 4*4882a593Smuzhiyunsupports high resolution encoding and decoding functionalities. 5*4882a593Smuzhiyun 6*4882a593SmuzhiyunRequired properties: 7*4882a593Smuzhiyun- compatible : "mediatek,mt8173-vcodec-enc" for MT8173 encoder 8*4882a593Smuzhiyun "mediatek,mt8183-vcodec-enc" for MT8183 encoder. 9*4882a593Smuzhiyun "mediatek,mt8173-vcodec-dec" for MT8173 decoder. 10*4882a593Smuzhiyun- reg : Physical base address of the video codec registers and length of 11*4882a593Smuzhiyun memory mapped region. 12*4882a593Smuzhiyun- interrupts : interrupt number to the cpu. 13*4882a593Smuzhiyun- mediatek,larb : must contain the local arbiters in the current Socs. 14*4882a593Smuzhiyun- clocks : list of clock specifiers, corresponding to entries in 15*4882a593Smuzhiyun the clock-names property. 16*4882a593Smuzhiyun- clock-names: encoder must contain "venc_sel_src", "venc_sel",, 17*4882a593Smuzhiyun "venc_lt_sel_src", "venc_lt_sel", decoder must contain "vcodecpll", 18*4882a593Smuzhiyun "univpll_d2", "clk_cci400_sel", "vdec_sel", "vdecpll", "vencpll", 19*4882a593Smuzhiyun "venc_lt_sel", "vdec_bus_clk_src". 20*4882a593Smuzhiyun- iommus : should point to the respective IOMMU block with master port as 21*4882a593Smuzhiyun argument, see Documentation/devicetree/bindings/iommu/mediatek,iommu.yaml 22*4882a593Smuzhiyun for details. 23*4882a593SmuzhiyunOne of the two following nodes: 24*4882a593Smuzhiyun- mediatek,vpu : the node of the video processor unit, if using VPU. 25*4882a593Smuzhiyun- mediatek,scp : the node of the SCP unit, if using SCP. 26*4882a593Smuzhiyun 27*4882a593Smuzhiyun 28*4882a593SmuzhiyunExample: 29*4882a593Smuzhiyun 30*4882a593Smuzhiyunvcodec_dec: vcodec@16000000 { 31*4882a593Smuzhiyun compatible = "mediatek,mt8173-vcodec-dec"; 32*4882a593Smuzhiyun reg = <0 0x16000000 0 0x100>, /*VDEC_SYS*/ 33*4882a593Smuzhiyun <0 0x16020000 0 0x1000>, /*VDEC_MISC*/ 34*4882a593Smuzhiyun <0 0x16021000 0 0x800>, /*VDEC_LD*/ 35*4882a593Smuzhiyun <0 0x16021800 0 0x800>, /*VDEC_TOP*/ 36*4882a593Smuzhiyun <0 0x16022000 0 0x1000>, /*VDEC_CM*/ 37*4882a593Smuzhiyun <0 0x16023000 0 0x1000>, /*VDEC_AD*/ 38*4882a593Smuzhiyun <0 0x16024000 0 0x1000>, /*VDEC_AV*/ 39*4882a593Smuzhiyun <0 0x16025000 0 0x1000>, /*VDEC_PP*/ 40*4882a593Smuzhiyun <0 0x16026800 0 0x800>, /*VP8_VD*/ 41*4882a593Smuzhiyun <0 0x16027000 0 0x800>, /*VP6_VD*/ 42*4882a593Smuzhiyun <0 0x16027800 0 0x800>, /*VP8_VL*/ 43*4882a593Smuzhiyun <0 0x16028400 0 0x400>; /*VP9_VD*/ 44*4882a593Smuzhiyun interrupts = <GIC_SPI 204 IRQ_TYPE_LEVEL_LOW>; 45*4882a593Smuzhiyun mediatek,larb = <&larb1>; 46*4882a593Smuzhiyun iommus = <&iommu M4U_PORT_HW_VDEC_MC_EXT>, 47*4882a593Smuzhiyun <&iommu M4U_PORT_HW_VDEC_PP_EXT>, 48*4882a593Smuzhiyun <&iommu M4U_PORT_HW_VDEC_AVC_MV_EXT>, 49*4882a593Smuzhiyun <&iommu M4U_PORT_HW_VDEC_PRED_RD_EXT>, 50*4882a593Smuzhiyun <&iommu M4U_PORT_HW_VDEC_PRED_WR_EXT>, 51*4882a593Smuzhiyun <&iommu M4U_PORT_HW_VDEC_UFO_EXT>, 52*4882a593Smuzhiyun <&iommu M4U_PORT_HW_VDEC_VLD_EXT>, 53*4882a593Smuzhiyun <&iommu M4U_PORT_HW_VDEC_VLD2_EXT>; 54*4882a593Smuzhiyun mediatek,vpu = <&vpu>; 55*4882a593Smuzhiyun power-domains = <&scpsys MT8173_POWER_DOMAIN_VDEC>; 56*4882a593Smuzhiyun clocks = <&apmixedsys CLK_APMIXED_VCODECPLL>, 57*4882a593Smuzhiyun <&topckgen CLK_TOP_UNIVPLL_D2>, 58*4882a593Smuzhiyun <&topckgen CLK_TOP_CCI400_SEL>, 59*4882a593Smuzhiyun <&topckgen CLK_TOP_VDEC_SEL>, 60*4882a593Smuzhiyun <&topckgen CLK_TOP_VCODECPLL>, 61*4882a593Smuzhiyun <&apmixedsys CLK_APMIXED_VENCPLL>, 62*4882a593Smuzhiyun <&topckgen CLK_TOP_VENC_LT_SEL>, 63*4882a593Smuzhiyun <&topckgen CLK_TOP_VCODECPLL_370P5>; 64*4882a593Smuzhiyun clock-names = "vcodecpll", 65*4882a593Smuzhiyun "univpll_d2", 66*4882a593Smuzhiyun "clk_cci400_sel", 67*4882a593Smuzhiyun "vdec_sel", 68*4882a593Smuzhiyun "vdecpll", 69*4882a593Smuzhiyun "vencpll", 70*4882a593Smuzhiyun "venc_lt_sel", 71*4882a593Smuzhiyun "vdec_bus_clk_src"; 72*4882a593Smuzhiyun assigned-clocks = <&topckgen CLK_TOP_VENC_LT_SEL>, 73*4882a593Smuzhiyun <&topckgen CLK_TOP_CCI400_SEL>, 74*4882a593Smuzhiyun <&topckgen CLK_TOP_VDEC_SEL>, 75*4882a593Smuzhiyun <&apmixedsys CLK_APMIXED_VCODECPLL>, 76*4882a593Smuzhiyun <&apmixedsys CLK_APMIXED_VENCPLL>; 77*4882a593Smuzhiyun assigned-clock-parents = <&topckgen CLK_TOP_VCODECPLL_370P5>, 78*4882a593Smuzhiyun <&topckgen CLK_TOP_UNIVPLL_D2>, 79*4882a593Smuzhiyun <&topckgen CLK_TOP_VCODECPLL>; 80*4882a593Smuzhiyun assigned-clock-rates = <0>, <0>, <0>, <1482000000>, <800000000>; 81*4882a593Smuzhiyun }; 82*4882a593Smuzhiyun 83*4882a593Smuzhiyun vcodec_enc: vcodec@18002000 { 84*4882a593Smuzhiyun compatible = "mediatek,mt8173-vcodec-enc"; 85*4882a593Smuzhiyun reg = <0 0x18002000 0 0x1000>, /*VENC_SYS*/ 86*4882a593Smuzhiyun <0 0x19002000 0 0x1000>; /*VENC_LT_SYS*/ 87*4882a593Smuzhiyun interrupts = <GIC_SPI 198 IRQ_TYPE_LEVEL_LOW>, 88*4882a593Smuzhiyun <GIC_SPI 202 IRQ_TYPE_LEVEL_LOW>; 89*4882a593Smuzhiyun mediatek,larb = <&larb3>, 90*4882a593Smuzhiyun <&larb5>; 91*4882a593Smuzhiyun iommus = <&iommu M4U_PORT_VENC_RCPU>, 92*4882a593Smuzhiyun <&iommu M4U_PORT_VENC_REC>, 93*4882a593Smuzhiyun <&iommu M4U_PORT_VENC_BSDMA>, 94*4882a593Smuzhiyun <&iommu M4U_PORT_VENC_SV_COMV>, 95*4882a593Smuzhiyun <&iommu M4U_PORT_VENC_RD_COMV>, 96*4882a593Smuzhiyun <&iommu M4U_PORT_VENC_CUR_LUMA>, 97*4882a593Smuzhiyun <&iommu M4U_PORT_VENC_CUR_CHROMA>, 98*4882a593Smuzhiyun <&iommu M4U_PORT_VENC_REF_LUMA>, 99*4882a593Smuzhiyun <&iommu M4U_PORT_VENC_REF_CHROMA>, 100*4882a593Smuzhiyun <&iommu M4U_PORT_VENC_NBM_RDMA>, 101*4882a593Smuzhiyun <&iommu M4U_PORT_VENC_NBM_WDMA>, 102*4882a593Smuzhiyun <&iommu M4U_PORT_VENC_RCPU_SET2>, 103*4882a593Smuzhiyun <&iommu M4U_PORT_VENC_REC_FRM_SET2>, 104*4882a593Smuzhiyun <&iommu M4U_PORT_VENC_BSDMA_SET2>, 105*4882a593Smuzhiyun <&iommu M4U_PORT_VENC_SV_COMA_SET2>, 106*4882a593Smuzhiyun <&iommu M4U_PORT_VENC_RD_COMA_SET2>, 107*4882a593Smuzhiyun <&iommu M4U_PORT_VENC_CUR_LUMA_SET2>, 108*4882a593Smuzhiyun <&iommu M4U_PORT_VENC_CUR_CHROMA_SET2>, 109*4882a593Smuzhiyun <&iommu M4U_PORT_VENC_REF_LUMA_SET2>, 110*4882a593Smuzhiyun <&iommu M4U_PORT_VENC_REC_CHROMA_SET2>; 111*4882a593Smuzhiyun mediatek,vpu = <&vpu>; 112*4882a593Smuzhiyun clocks = <&topckgen CLK_TOP_VENCPLL_D2>, 113*4882a593Smuzhiyun <&topckgen CLK_TOP_VENC_SEL>, 114*4882a593Smuzhiyun <&topckgen CLK_TOP_UNIVPLL1_D2>, 115*4882a593Smuzhiyun <&topckgen CLK_TOP_VENC_LT_SEL>; 116*4882a593Smuzhiyun clock-names = "venc_sel_src", 117*4882a593Smuzhiyun "venc_sel", 118*4882a593Smuzhiyun "venc_lt_sel_src", 119*4882a593Smuzhiyun "venc_lt_sel"; 120*4882a593Smuzhiyun assigned-clocks = <&topckgen CLK_TOP_VENC_SEL>, 121*4882a593Smuzhiyun <&topckgen CLK_TOP_VENC_LT_SEL>; 122*4882a593Smuzhiyun assigned-clock-parents = <&topckgen CLK_TOP_VENCPLL_D2>, 123*4882a593Smuzhiyun <&topckgen CLK_TOP_UNIVPLL1_D2>; 124*4882a593Smuzhiyun }; 125