1# SPDX-License-Identifier: GPL-2.0
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/crypto/allwinner,sun8i-ce.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Allwinner Crypto Engine driver
8
9maintainers:
10  - Corentin Labbe <clabbe.montjoie@gmail.com>
11
12properties:
13  compatible:
14    enum:
15      - allwinner,sun8i-h3-crypto
16      - allwinner,sun8i-r40-crypto
17      - allwinner,sun20i-d1-crypto
18      - allwinner,sun50i-a64-crypto
19      - allwinner,sun50i-h5-crypto
20      - allwinner,sun50i-h6-crypto
21      - allwinner,sun50i-h616-crypto
22
23  reg:
24    maxItems: 1
25
26  interrupts:
27    maxItems: 1
28
29  clocks:
30    items:
31      - description: Bus clock
32      - description: Module clock
33      - description: MBus clock
34      - description: TRNG clock (RC oscillator)
35    minItems: 2
36
37  clock-names:
38    items:
39      - const: bus
40      - const: mod
41      - const: ram
42      - const: trng
43    minItems: 2
44
45  resets:
46    maxItems: 1
47
48if:
49  properties:
50    compatible:
51      enum:
52        - allwinner,sun20i-d1-crypto
53        - allwinner,sun50i-h616-crypto
54then:
55  properties:
56    clocks:
57      minItems: 4
58    clock-names:
59      minItems: 4
60else:
61  if:
62    properties:
63      compatible:
64        const: allwinner,sun50i-h6-crypto
65  then:
66    properties:
67      clocks:
68        minItems: 3
69        maxItems: 3
70      clock-names:
71        minItems: 3
72        maxItems: 3
73  else:
74    properties:
75      clocks:
76        maxItems: 2
77      clock-names:
78        maxItems: 2
79
80required:
81  - compatible
82  - reg
83  - interrupts
84  - clocks
85  - clock-names
86  - resets
87
88additionalProperties: false
89
90examples:
91  - |
92    #include <dt-bindings/interrupt-controller/arm-gic.h>
93    #include <dt-bindings/clock/sun50i-a64-ccu.h>
94    #include <dt-bindings/reset/sun50i-a64-ccu.h>
95
96    crypto: crypto@1c15000 {
97      compatible = "allwinner,sun8i-h3-crypto";
98      reg = <0x01c15000 0x1000>;
99      interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;
100      clocks = <&ccu CLK_BUS_CE>, <&ccu CLK_CE>;
101      clock-names = "bus", "mod";
102      resets = <&ccu RST_BUS_CE>;
103    };
104