1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/mtd/st,stm32-fmc2-nand.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: STMicroelectronics Flexible Memory Controller 2 (FMC2)
8
9maintainers:
10  - Christophe Kerello <christophe.kerello@foss.st.com>
11
12properties:
13  compatible:
14    enum:
15      - st,stm32mp15-fmc2
16      - st,stm32mp1-fmc2-nfc
17
18  reg:
19    minItems: 6
20    maxItems: 7
21
22  interrupts:
23    maxItems: 1
24
25  dmas:
26    items:
27      - description: tx DMA channel
28      - description: rx DMA channel
29      - description: ecc DMA channel
30
31  dma-names:
32    items:
33      - const: tx
34      - const: rx
35      - const: ecc
36
37patternProperties:
38  "^nand@[a-f0-9]$":
39    type: object
40    $ref: raw-nand-chip.yaml
41    properties:
42      nand-ecc-step-size:
43        const: 512
44
45      nand-ecc-strength:
46        enum: [1, 4, 8]
47
48    unevaluatedProperties: false
49
50allOf:
51  - $ref: nand-controller.yaml#
52
53  - if:
54      properties:
55        compatible:
56          contains:
57            const: st,stm32mp15-fmc2
58    then:
59      properties:
60        reg:
61          items:
62            - description: Registers
63            - description: Chip select 0 data
64            - description: Chip select 0 command
65            - description: Chip select 0 address space
66            - description: Chip select 1 data
67            - description: Chip select 1 command
68            - description: Chip select 1 address space
69
70        clocks:
71          maxItems: 1
72
73        resets:
74          maxItems: 1
75
76      required:
77        - clocks
78
79  - if:
80      properties:
81        compatible:
82          contains:
83            const: st,stm32mp1-fmc2-nfc
84    then:
85      properties:
86        reg:
87          items:
88            - description: Chip select 0 data
89            - description: Chip select 0 command
90            - description: Chip select 0 address space
91            - description: Chip select 1 data
92            - description: Chip select 1 command
93            - description: Chip select 1 address space
94
95required:
96  - compatible
97  - reg
98  - interrupts
99
100unevaluatedProperties: false
101
102examples:
103  - |
104    #include <dt-bindings/interrupt-controller/arm-gic.h>
105    #include <dt-bindings/clock/stm32mp1-clks.h>
106    #include <dt-bindings/reset/stm32mp1-resets.h>
107
108    nand-controller@58002000 {
109        compatible = "st,stm32mp15-fmc2";
110        reg = <0x58002000 0x1000>,
111              <0x80000000 0x1000>,
112              <0x88010000 0x1000>,
113              <0x88020000 0x1000>,
114              <0x81000000 0x1000>,
115              <0x89010000 0x1000>,
116              <0x89020000 0x1000>;
117        interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
118        dmas = <&mdma1 20 0x2 0x12000a02 0x0 0x0>,
119               <&mdma1 20 0x2 0x12000a08 0x0 0x0>,
120               <&mdma1 21 0x2 0x12000a0a 0x0 0x0>;
121        dma-names = "tx", "rx", "ecc";
122        clocks = <&rcc FMC_K>;
123        resets = <&rcc FMC_R>;
124        #address-cells = <1>;
125        #size-cells = <0>;
126
127        nand@0 {
128            reg = <0>;
129            nand-on-flash-bbt;
130            #address-cells = <1>;
131            #size-cells = <1>;
132        };
133    };
134
135...
136