xref: /linux/Documentation/devicetree/bindings/npu/rockchip,rk3588-rknn-core.yaml (revision f39b6c468c52745dbca9a842d91c8373fda208ab)
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