[PATCH v8 08/10] arm64: dts: rockchip: Add nodes for NPU and its MMU to rk3588-base

Heiko Stübner heiko at sntech.de
Wed Jul 16 14:58:38 UTC 2025


Am Sonntag, 13. Juli 2025, 10:38:58 Mitteleuropäische Sommerzeit schrieb Tomeu Vizoso:
> See Chapter 36 "RKNN" from the RK3588 TRM (Part 1).
> 
> The IP is divided in three cores, programmed independently. The first
> core though is special, being able to delegate work to the other cores.
> 
> The IOMMU of the first core is also special in that it has two subunits
> (read/write?) that need to be programmed in sync.
> 
> v2:
> - Have one device for each NPU core (Sebastian Reichel)
> - Have one device for each IOMMU (Sebastian Reichel)
> - Correctly sort nodes (Diederik de Haas)
> - Add rockchip,iommu compatible to IOMMU nodes (Sebastian Reichel)
> 
> v3:
> - Adapt to a split of the register block in the DT bindings (Nicolas
>   Frattaroli)
> 
> v4:
> - Adapt to changes in bindings
> 
> v6:
> - pclk and npu clocks are needed by all clocks (Rob Herring)
> 
> v8:
> - Remove notion of top core (Robin Murphy)
> 
> Tested-by: Heiko Stuebner <heiko at sntech.de>
> Signed-off-by: Tomeu Vizoso <tomeu at tomeuvizoso.net>
> ---
>  arch/arm64/boot/dts/rockchip/rk3588-base.dtsi | 91 +++++++++++++++++++++++++++
>  1 file changed, 91 insertions(+)
> 
> diff --git a/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi b/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi
> index 1eddc69fd9c9ed95cdc810ba48d9683e3f82489a..dbd472feaa8b3f8c14597a48a4f5afbe3cb45b6a 100644
> --- a/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi
> +++ b/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi
> @@ -1140,6 +1140,97 @@ power-domain at RK3588_PD_SDMMC {
>  		};
>  	};
>  
> +	rknn_core_0: npu at fdab0000 {
> +		compatible = "rockchip,rk3588-rknn-core";
> +		reg = <0x0 0xfdab0000 0x0 0x1000>,
> +		      <0x0 0xfdab1000 0x0 0x1000>,
> +		      <0x0 0xfdab3000 0x0 0x1000>;
> +		reg-names = "pc", "cna", "core";
> +		interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH 0>;
> +		clocks = <&cru ACLK_NPU0>, <&cru HCLK_NPU0>,
> +			 <&scmi_clk SCMI_CLK_NPU>, <&cru PCLK_NPU_ROOT>;
> +		clock-names = "aclk", "hclk", "npu", "pclk";
> +		assigned-clocks = <&scmi_clk SCMI_CLK_NPU>;
> +		assigned-clock-rates = <200000000>;
> +		resets = <&cru SRST_A_RKNN0>, <&cru SRST_H_RKNN0>;
> +		reset-names = "srst_a", "srst_h";
> +		power-domains = <&power RK3588_PD_NPUTOP>;
> +		iommus = <&rknn_mmu_top>;
> +		status = "disabled";
> +	};
> +
> +	rknn_mmu_top: iommu at fdab9000 {

nit: phandle for the mmu should probably also follow the naming change?
I.e. become rknn_mmu_0 ?

> +		compatible = "rockchip,rk3588-iommu", "rockchip,rk3568-iommu";
> +		reg = <0x0 0xfdab9000 0x0 0x100>,
> +		      <0x0 0xfdaba000 0x0 0x100>;
> +		interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH 0>;
> +		clocks = <&cru ACLK_NPU0>, <&cru HCLK_NPU0>;
> +		clock-names = "aclk", "iface";
> +		#iommu-cells = <0>;
> +		power-domains = <&power RK3588_PD_NPUTOP>;
> +		status = "disabled";
> +	};





More information about the dri-devel mailing list