1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/nvmem/rockchip,otp.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Rockchip internal OTP (One Time Programmable) memory
8
9maintainers:
10  - Heiko Stuebner <heiko@sntech.de>
11
12properties:
13  compatible:
14    enum:
15      - rockchip,px30-otp
16      - rockchip,rk3308-otp
17      - rockchip,rk3588-otp
18
19  reg:
20    maxItems: 1
21
22  clocks:
23    minItems: 3
24    maxItems: 4
25
26  clock-names:
27    minItems: 3
28    items:
29      - const: otp
30      - const: apb_pclk
31      - const: phy
32      - const: arb
33
34  resets:
35    minItems: 1
36    maxItems: 3
37
38  reset-names:
39    minItems: 1
40    maxItems: 3
41
42required:
43  - compatible
44  - reg
45  - clocks
46  - clock-names
47  - resets
48  - reset-names
49
50allOf:
51  - $ref: nvmem.yaml#
52
53  - if:
54      properties:
55        compatible:
56          contains:
57            enum:
58              - rockchip,px30-otp
59              - rockchip,rk3308-otp
60    then:
61      properties:
62        clocks:
63          maxItems: 3
64        resets:
65          maxItems: 1
66        reset-names:
67          items:
68            - const: phy
69
70  - if:
71      properties:
72        compatible:
73          contains:
74            enum:
75              - rockchip,rk3588-otp
76    then:
77      properties:
78        clocks:
79          minItems: 4
80        resets:
81          minItems: 3
82        reset-names:
83          items:
84            - const: otp
85            - const: apb
86            - const: arb
87
88unevaluatedProperties: false
89
90examples:
91  - |
92    #include <dt-bindings/clock/px30-cru.h>
93
94    soc {
95        #address-cells = <2>;
96        #size-cells = <2>;
97
98        otp: efuse@ff290000 {
99            compatible = "rockchip,px30-otp";
100            reg = <0x0 0xff290000 0x0 0x4000>;
101            clocks = <&cru SCLK_OTP_USR>, <&cru PCLK_OTP_NS>,
102                     <&cru PCLK_OTP_PHY>;
103            clock-names = "otp", "apb_pclk", "phy";
104            resets = <&cru SRST_OTP_PHY>;
105            reset-names = "phy";
106            #address-cells = <1>;
107            #size-cells = <1>;
108
109            cpu_id: id@7 {
110                reg = <0x07 0x10>;
111            };
112
113            cpu_leakage: cpu-leakage@17 {
114                reg = <0x17 0x1>;
115            };
116
117            performance: performance@1e {
118                reg = <0x1e 0x1>;
119                bits = <4 3>;
120            };
121        };
122    };
123