1*a7352c84STomeu Vizoso# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2*a7352c84STomeu Vizoso%YAML 1.2 3*a7352c84STomeu Vizoso--- 4*a7352c84STomeu Vizoso$id: http://devicetree.org/schemas/npu/rockchip,rk3588-rknn-core.yaml# 5*a7352c84STomeu Vizoso$schema: http://devicetree.org/meta-schemas/core.yaml# 6*a7352c84STomeu Vizoso 7*a7352c84STomeu Vizosotitle: Neural Processing Unit IP from Rockchip 8*a7352c84STomeu Vizoso 9*a7352c84STomeu Vizosomaintainers: 10*a7352c84STomeu Vizoso - Tomeu Vizoso <tomeu@tomeuvizoso.net> 11*a7352c84STomeu Vizoso 12*a7352c84STomeu Vizosodescription: 13*a7352c84STomeu Vizoso Rockchip IP for accelerating inference of neural networks. 14*a7352c84STomeu Vizoso 15*a7352c84STomeu Vizoso There is to be a node per each NPU core in the SoC, and each core should reference all the 16*a7352c84STomeu Vizoso resources that it needs to function, such as clocks, power domains, and resets. 17*a7352c84STomeu Vizoso 18*a7352c84STomeu Vizosoproperties: 19*a7352c84STomeu Vizoso $nodename: 20*a7352c84STomeu Vizoso pattern: '^npu@[a-f0-9]+$' 21*a7352c84STomeu Vizoso 22*a7352c84STomeu Vizoso compatible: 23*a7352c84STomeu Vizoso enum: 24*a7352c84STomeu Vizoso - rockchip,rk3588-rknn-core 25*a7352c84STomeu Vizoso 26*a7352c84STomeu Vizoso reg: 27*a7352c84STomeu Vizoso maxItems: 3 28*a7352c84STomeu Vizoso 29*a7352c84STomeu Vizoso reg-names: 30*a7352c84STomeu Vizoso items: 31*a7352c84STomeu Vizoso - const: pc # Program Control-related registers 32*a7352c84STomeu Vizoso - const: cna # Convolution Neural Network Accelerator registers 33*a7352c84STomeu Vizoso - const: core # Main NPU core processing unit registers 34*a7352c84STomeu Vizoso 35*a7352c84STomeu Vizoso clocks: 36*a7352c84STomeu Vizoso maxItems: 4 37*a7352c84STomeu Vizoso 38*a7352c84STomeu Vizoso clock-names: 39*a7352c84STomeu Vizoso items: 40*a7352c84STomeu Vizoso - const: aclk 41*a7352c84STomeu Vizoso - const: hclk 42*a7352c84STomeu Vizoso - const: npu 43*a7352c84STomeu Vizoso - const: pclk 44*a7352c84STomeu Vizoso 45*a7352c84STomeu Vizoso interrupts: 46*a7352c84STomeu Vizoso maxItems: 1 47*a7352c84STomeu Vizoso 48*a7352c84STomeu Vizoso iommus: 49*a7352c84STomeu Vizoso maxItems: 1 50*a7352c84STomeu Vizoso 51*a7352c84STomeu Vizoso npu-supply: true 52*a7352c84STomeu Vizoso 53*a7352c84STomeu Vizoso power-domains: 54*a7352c84STomeu Vizoso maxItems: 1 55*a7352c84STomeu Vizoso 56*a7352c84STomeu Vizoso resets: 57*a7352c84STomeu Vizoso maxItems: 2 58*a7352c84STomeu Vizoso 59*a7352c84STomeu Vizoso reset-names: 60*a7352c84STomeu Vizoso items: 61*a7352c84STomeu Vizoso - const: srst_a 62*a7352c84STomeu Vizoso - const: srst_h 63*a7352c84STomeu Vizoso 64*a7352c84STomeu Vizoso sram-supply: true 65*a7352c84STomeu Vizoso 66*a7352c84STomeu Vizosorequired: 67*a7352c84STomeu Vizoso - compatible 68*a7352c84STomeu Vizoso - reg 69*a7352c84STomeu Vizoso - reg-names 70*a7352c84STomeu Vizoso - clocks 71*a7352c84STomeu Vizoso - clock-names 72*a7352c84STomeu Vizoso - interrupts 73*a7352c84STomeu Vizoso - iommus 74*a7352c84STomeu Vizoso - power-domains 75*a7352c84STomeu Vizoso - resets 76*a7352c84STomeu Vizoso - reset-names 77*a7352c84STomeu Vizoso - npu-supply 78*a7352c84STomeu Vizoso - sram-supply 79*a7352c84STomeu Vizoso 80*a7352c84STomeu VizosoadditionalProperties: false 81*a7352c84STomeu Vizoso 82*a7352c84STomeu Vizosoexamples: 83*a7352c84STomeu Vizoso - | 84*a7352c84STomeu Vizoso #include <dt-bindings/clock/rockchip,rk3588-cru.h> 85*a7352c84STomeu Vizoso #include <dt-bindings/interrupt-controller/irq.h> 86*a7352c84STomeu Vizoso #include <dt-bindings/interrupt-controller/arm-gic.h> 87*a7352c84STomeu Vizoso #include <dt-bindings/power/rk3588-power.h> 88*a7352c84STomeu Vizoso #include <dt-bindings/reset/rockchip,rk3588-cru.h> 89*a7352c84STomeu Vizoso 90*a7352c84STomeu Vizoso bus { 91*a7352c84STomeu Vizoso #address-cells = <2>; 92*a7352c84STomeu Vizoso #size-cells = <2>; 93*a7352c84STomeu Vizoso 94*a7352c84STomeu Vizoso npu@fdab0000 { 95*a7352c84STomeu Vizoso compatible = "rockchip,rk3588-rknn-core"; 96*a7352c84STomeu Vizoso reg = <0x0 0xfdab0000 0x0 0x1000>, 97*a7352c84STomeu Vizoso <0x0 0xfdab1000 0x0 0x1000>, 98*a7352c84STomeu Vizoso <0x0 0xfdab3000 0x0 0x1000>; 99*a7352c84STomeu Vizoso reg-names = "pc", "cna", "core"; 100*a7352c84STomeu Vizoso clocks = <&cru ACLK_NPU0>, <&cru HCLK_NPU0>, 101*a7352c84STomeu Vizoso <&scmi_clk SCMI_CLK_NPU>, <&cru PCLK_NPU_ROOT>; 102*a7352c84STomeu Vizoso clock-names = "aclk", "hclk", "npu", "pclk"; 103*a7352c84STomeu Vizoso interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH 0>; 104*a7352c84STomeu Vizoso iommus = <&rknn_mmu_0>; 105*a7352c84STomeu Vizoso npu-supply = <&vdd_npu_s0>; 106*a7352c84STomeu Vizoso power-domains = <&power RK3588_PD_NPUTOP>; 107*a7352c84STomeu Vizoso resets = <&cru SRST_A_RKNN0>, <&cru SRST_H_RKNN0>; 108*a7352c84STomeu Vizoso reset-names = "srst_a", "srst_h"; 109*a7352c84STomeu Vizoso sram-supply = <&vdd_npu_mem_s0>; 110*a7352c84STomeu Vizoso }; 111*a7352c84STomeu Vizoso }; 112*a7352c84STomeu Vizoso... 113