diff --git a/arch/arm64/boot/dts/rockchip/rk3576.dtsi b/arch/arm64/boot/dts/rockchip/rk3576.dtsi
index b9ca58a697808d09321c5dbe2354713ac460a195..01a0b1be389e071629ad6790e7e396a064dfcc0c 100644
--- a/arch/arm64/boot/dts/rockchip/rk3576.dtsi
+++ b/arch/arm64/boot/dts/rockchip/rk3576.dtsi
@@ -1653,6 +1653,60 @@ gpio4: gpio@2ae40000 {
 			#interrupt-cells = <2>;
 		};
 	};
+
+        mpp_srv: mpp-srv {
+                compatible = "rockchip,mpp-service";
+                rockchip,taskqueue-count = <6>;
+                rockchip,resetgroup-count = <2>;
+//                status = "disabled";
+        };
+
+        rkvdec: rkvdec@27b00000 {
+                compatible = "rockchip,rkv-decoder-rk3576", "rockchip,rkv-decoder-v383";
+                reg = <0x0 0x27b00100 0x0 0x600>, <0x0 0x27b00000 0x0 0x100>;
+                reg-names = "regs", "link";
+                interrupts = <GIC_SPI 308 IRQ_TYPE_LEVEL_HIGH>;
+                interrupt-names = "irq_rkvdec";
+                clocks = <&cru ACLK_RKVDEC_ROOT>, <&cru HCLK_RKVDEC>,
+                         <&cru CLK_RKVDEC_CORE>, <&cru ACLK_RKVDEC_ROOT_BAK>,
+                         <&cru CLK_RKVDEC_HEVC_CA>;
+                clock-names = "aclk_vcodec", "hclk_vcodec",
+                              "clk_core", "clk_cabac",
+                              "clk_hevc_cabac";
+                resets = <&cru SRST_A_RKVDEC_BIU >, <&cru SRST_H_RKVDEC_BIU>,
+                         <&cru SRST_RKVDEC_CORE>, <&cru SRST_RKVDEC_HEVC_CA>;
+                reset-names = "video_a","video_h", "video_core", "video_hevc_cabac";
+                rockchip,normal-rates = <600000000>, <0>, <600000000>, <500000000>, <1000000000>;
+                assigned-clocks = <&cru ACLK_RKVDEC_ROOT>, <&cru CLK_RKVDEC_CORE>,
+                                  <&cru ACLK_RKVDEC_ROOT_BAK>, <&cru CLK_RKVDEC_HEVC_CA>;
+                assigned-clock-rates = <600000000>,<600000000>, <500000000>, <1000000000>;
+                iommus = <&rkvdec_mmu>;
+                rockchip,srv = <&mpp_srv>;
+                rockchip,task-capacity = <1>;
+                rockchip,taskqueue-node = <1>;
+                rockchip,sram = <&rkvdec_sram>;
+                rockchip,rcb-iova = <0x10000000 0x78000>;
+                rockchip,rcb-min-width = <512>;
+                power-domains = <&power RK3576_PD_VDEC>;
+//                status = "disabled";
+        };
+
+        rkvdec_mmu: iommu@27b00800 {
+                compatible = "rockchip,iommu-v2";
+                reg = <0x0 0x27b00800 0x0 0x40>, <0x0 0x27b00900 0x0 0x40>;
+                interrupts = <GIC_SPI 309 IRQ_TYPE_LEVEL_HIGH>;
+                interrupt-names = "irq_rkvdec_mmu";
+                clocks = <&cru ACLK_RKVDEC_ROOT>, <&cru HCLK_RKVDEC>,
+                         <&cru CLK_RKVDEC_CORE>, <&cru ACLK_RKVDEC_ROOT_BAK>;
+                clock-names = "aclk", "iface",
+                              "iface_c", "iface_b";
+                rockchip,disable-mmu-reset;
+                rockchip,enable-cmd-retry;
+                rockchip,shootdown-entire;
+                #iommu-cells = <0>;
+                power-domains = <&power RK3576_PD_VDEC>;
+//                status = "disabled";
+        };
 };
 
 #include "rk3576-pinctrl.dtsi"
diff --git a/arch/arm64/boot/dts/rockchip/rk3588-rock-5b.dts b/arch/arm64/boot/dts/rockchip/rk3588-rock-5b.dts
index 64044757373aff234a851f5da31c793f6ba086ff..966bbc582d89b89c0c4847132ce789d6af1cb847 100644
--- a/arch/arm64/boot/dts/rockchip/rk3588-rock-5b.dts
+++ b/arch/arm64/boot/dts/rockchip/rk3588-rock-5b.dts
@@ -398,22 +398,6 @@ &pwm1 {
 	status = "okay";
 };
 
-&rkvdec_ccu {
-	status = "okay";
-};
-
-&rkvdec0 {
-	status = "okay";
-};
-
-&rkvdec0_mmu {
-	status = "okay";
-};
-
-&mpp_srv {
-	status = "okay";
-};
-
 &saradc {
 	vref-supply = <&avcc_1v8_s0>;
 	status = "okay";
diff --git a/drivers/video/rockchip/mpp/mpp_rkvdec2.c b/drivers/video/rockchip/mpp/mpp_rkvdec2.c
index 1558362a4c89b48c91abab963d6342ec6cd3322c..218499f7a6e9a5610a59bd03277bbbdb1e0fc26b 100644
--- a/drivers/video/rockchip/mpp/mpp_rkvdec2.c
+++ b/drivers/video/rockchip/mpp/mpp_rkvdec2.c
@@ -1285,7 +1285,7 @@ static int rkvdec2_free_rcbbuf(struct platform_device *pdev, struct rkvdec2_dev
 	return 0;
 }
 
-static int rkvdec2_remove(struct platform_device *pdev)
+static void rkvdec2_remove(struct platform_device *pdev)
 {
 	struct device *dev = &pdev->dev;
 
@@ -1306,8 +1306,6 @@ static int rkvdec2_remove(struct platform_device *pdev)
 		rkvdec2_procfs_remove(mpp);
 		rkvdec2_link_remove(mpp, dec->link_dec);
 	}
-
-	return 0;
 }
 
 static void rkvdec2_shutdown(struct platform_device *pdev)
diff --git a/drivers/video/rockchip/mpp/mpp_service.c b/drivers/video/rockchip/mpp/mpp_service.c
index 8b1e12dcbfd8622fa5ff2ef3f1ad76cac311c4cf..e8045a8c81d0449b96492b9270d6ff60e1290bc5 100644
--- a/drivers/video/rockchip/mpp/mpp_service.c
+++ b/drivers/video/rockchip/mpp/mpp_service.c
@@ -446,7 +446,7 @@ static int mpp_service_probe(struct platform_device *pdev)
 	return ret;
 }
 
-static int mpp_service_remove(struct platform_device *pdev)
+static void mpp_service_remove(struct platform_device *pdev)
 {
 	struct mpp_taskqueue *queue;
 	struct device *dev = &pdev->dev;
@@ -471,8 +471,6 @@ static int mpp_service_remove(struct platform_device *pdev)
 	mpp_remove_service(srv);
 	class_destroy(srv->cls);
 	mpp_procfs_remove(srv);
-
-	return 0;
 }
 
 static const struct of_device_id mpp_dt_ids[] = {