diff --git a/arch/arm64/boot/dts/rockchip/rk3328.dtsi b/arch/arm64/boot/dts/rockchip/rk3328.dtsi index a0eefe9efdb9..9dd66891e048 100644 --- a/arch/arm64/boot/dts/rockchip/rk3328.dtsi +++ b/arch/arm64/boot/dts/rockchip/rk3328.dtsi @@ -640,19 +640,17 @@ compatible = "rockchip,mpp_service"; }; - vpu_service: vpu-service@ff350000 { - compatible = "rockchip,vpu_service"; + vdpu: vpu_service@ff350000 { + compatible = "vpu,sub"; + iommu_enabled = <1>; + iommus = <&vpu_mmu>; + allocator = <1>; reg = <0x0 0xff350000 0x0 0x800>; interrupts = ; interrupt-names = "irq_dec"; - resets = <&cru SRST_VCODEC_A>, <&cru SRST_VCODEC_H>; - reset-names = "video_a", "video_h"; - clocks = <&cru ACLK_VPU>, <&cru HCLK_VPU>; - clock-names = "aclk_vcodec", "hclk_vcodec"; - rockchip,grf = <&grf>; - iommus = <&vpu_mmu>; - allocator = <1>; - status = "disabled"; + dev_mode = <0>; + power-domains = <&power RK3328_PD_VPU>; + name = "vpu_service"; }; vpu_mmu: iommu@ff350800 { @@ -662,9 +660,39 @@ interrupt-names = "vpu_mmu"; clock-names = "aclk", "hclk"; clocks = <&cru ACLK_VPU>, <&cru HCLK_VPU>; + power-domains = <&power RK3328_PD_VPU>; #iommu-cells = <0>; }; + avsd: avsd@ff351000 { + compatible = "vpu,sub"; + iommu_enabled = <1>; + iommus = <&vpu_mmu>; + allocator = <1>; + reg = <0x0 0xff351000 0x0 0x200>; + interrupts = ; + interrupt-names = "irq_dec"; + power-domains = <&power RK3328_PD_VPU>; + dev_mode = <0>; + name = "avsd"; + }; + + vpu_service: vpu_combo { + compatible = "rockchip,rk3328-vpu-combo", "rockchip,vpu_combo"; + rockchip,grf = <&grf>; + subcnt = <2>; + rockchip,sub = <&vdpu>, <&avsd>; + clocks = <&cru ACLK_VPU>, <&cru HCLK_VPU>; + clock-names = "aclk_vcodec", "hclk_vcodec"; + resets = <&cru SRST_VCODEC_A>, <&cru SRST_VCODEC_H>; + reset-names = "video_a", "video_h"; + mode_bit = <0>; + mode_ctrl = <0>; + name = "vpu_combo"; + power-domains = <&power RK3328_PD_VPU>; + status = "disabled"; + }; + rkvdec: rkvdec@ff36000 { compatible = "rockchip,rkvdec"; reg = <0x0 0xff360000 0x0 0x400>;