diff --git a/arch/arm/boot/dts/rk3036.dtsi b/arch/arm/boot/dts/rk3036.dtsi index 5e0e07698ae3..e3f4da4d38be 100644 --- a/arch/arm/boot/dts/rk3036.dtsi +++ b/arch/arm/boot/dts/rk3036.dtsi @@ -186,12 +186,62 @@ status = "disabled"; }; + vpu_service: vpu-service@10108400 { + compatible = "rockchip,sub"; + reg = <0x10108400 0x400>; + dev_mode = <0>; + interrupts = ; + interrupt-names = "irq_dec"; + iommus = <&vpu_mmu>; + allocator = <1>; + }; + vpu_mmu: iommu@10108800 { compatible = "rockchip,iommu"; reg = <0x10108800 0x100>; interrupts = ; interrupt-names = "vpu_mmu"; #iommu-cells = <0>; + status = "disabled"; + }; + + hevc_service: hevc-service@1010c000 { + compatible = "rockchip,sub"; + reg = <0x1010c000 0x400>; + dev_mode = <1>; + interrupts = ; + interrupt-names = "irq_dec"; + allocator = <1>; + iommus = <&hevc_mmu>; + }; + + hevc_mmu: iommu@1010c440 { + compatible = "rockchip,iommu"; + reg = <0x1010c440 0x40>, <0x1010c480 0x40>; + interrupts = ; + interrupt-names = "hevc_mmu"; + #iommu-cells = <0>; + status = "disabled"; + }; + + vpu_combo: vpu-combo { + compatible = "rockchip,vpu_combo"; + rockchip,grf = <&grf>; + subcnt = <2>; + rockchip,sub = <&hevc_service>, <&vpu_service>; + mode_bit = <3>; + mode_ctrl = <0x144>; + clocks = <&cru ACLK_VCODEC>, <&cru HCLK_VCODEC>, + <&cru ACLK_HEVC>; + clock-names = "aclk_vcodec", "hclk_vcodec", "clk_core"; + /* RK3036's vpu could not run higher than 300M */ + assigned-clocks = <&cru ACLK_VCODEC>; + assigned-clock-rates = <297000000>; + assigned-clock-parents = <&cru PLL_GPLL>; + resets = <&cru SRST_VCODEC_A>, <&cru SRST_VCODEC_H>, + <&cru SRST_HEVC>; + reset-names = "video_a", "video_h", "video"; + status = "disabled"; }; vop: vop@10118000 {