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[] = {