1c66ec88fSEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2c66ec88fSEmmanuel Vadot%YAML 1.2
3c66ec88fSEmmanuel Vadot---
4c66ec88fSEmmanuel Vadot$id: http://devicetree.org/schemas/memory-controllers/st,stm32-fmc2-ebi.yaml#
5c66ec88fSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6c66ec88fSEmmanuel Vadot
78bab661aSEmmanuel Vadottitle: STMicroelectronics Flexible Memory Controller 2 (FMC2)
8c66ec88fSEmmanuel Vadot
9c66ec88fSEmmanuel Vadotdescription: |
10c66ec88fSEmmanuel Vadot  The FMC2 functional block makes the interface with: synchronous and
11c66ec88fSEmmanuel Vadot  asynchronous static devices (such as PSNOR, PSRAM or other memory-mapped
12c66ec88fSEmmanuel Vadot  peripherals) and NAND flash memories.
13c66ec88fSEmmanuel Vadot  Its main purposes are:
14c66ec88fSEmmanuel Vadot    - to translate AXI transactions into the appropriate external device
15c66ec88fSEmmanuel Vadot      protocol
16c66ec88fSEmmanuel Vadot    - to meet the access time requirements of the external devices
17c66ec88fSEmmanuel Vadot  All external devices share the addresses, data and control signals with the
18c66ec88fSEmmanuel Vadot  controller. Each external device is accessed by means of a unique Chip
19c66ec88fSEmmanuel Vadot  Select. The FMC2 performs only one access at a time to an external device.
20c66ec88fSEmmanuel Vadot
21c66ec88fSEmmanuel Vadotmaintainers:
228cc087a1SEmmanuel Vadot  - Christophe Kerello <christophe.kerello@foss.st.com>
23c66ec88fSEmmanuel Vadot
24c66ec88fSEmmanuel Vadotproperties:
25c66ec88fSEmmanuel Vadot  compatible:
26c66ec88fSEmmanuel Vadot    const: st,stm32mp1-fmc2-ebi
27c66ec88fSEmmanuel Vadot
28c66ec88fSEmmanuel Vadot  reg:
29c66ec88fSEmmanuel Vadot    maxItems: 1
30c66ec88fSEmmanuel Vadot
31c66ec88fSEmmanuel Vadot  clocks:
32c66ec88fSEmmanuel Vadot    maxItems: 1
33c66ec88fSEmmanuel Vadot
34c66ec88fSEmmanuel Vadot  resets:
35c66ec88fSEmmanuel Vadot    maxItems: 1
36c66ec88fSEmmanuel Vadot
37c66ec88fSEmmanuel Vadot  "#address-cells":
38c66ec88fSEmmanuel Vadot    const: 2
39c66ec88fSEmmanuel Vadot
40c66ec88fSEmmanuel Vadot  "#size-cells":
41c66ec88fSEmmanuel Vadot    const: 1
42c66ec88fSEmmanuel Vadot
43c66ec88fSEmmanuel Vadot  ranges:
44c66ec88fSEmmanuel Vadot    description: |
45c66ec88fSEmmanuel Vadot      Reflects the memory layout with four integer values per bank. Format:
46c66ec88fSEmmanuel Vadot      <bank-number> 0 <address of the bank> <size>
47c66ec88fSEmmanuel Vadot
48c66ec88fSEmmanuel VadotpatternProperties:
49c66ec88fSEmmanuel Vadot  "^.*@[0-4],[a-f0-9]+$":
50*fac71e4eSEmmanuel Vadot    additionalProperties: true
51c66ec88fSEmmanuel Vadot    type: object
528bab661aSEmmanuel Vadot    $ref: mc-peripheral-props.yaml#
53c66ec88fSEmmanuel Vadot
54c66ec88fSEmmanuel Vadotrequired:
55c66ec88fSEmmanuel Vadot  - "#address-cells"
56c66ec88fSEmmanuel Vadot  - "#size-cells"
57c66ec88fSEmmanuel Vadot  - compatible
58c66ec88fSEmmanuel Vadot  - reg
59c66ec88fSEmmanuel Vadot  - clocks
60c66ec88fSEmmanuel Vadot  - ranges
61c66ec88fSEmmanuel Vadot
626be33864SEmmanuel VadotadditionalProperties: false
636be33864SEmmanuel Vadot
64c66ec88fSEmmanuel Vadotexamples:
65c66ec88fSEmmanuel Vadot  - |
66c66ec88fSEmmanuel Vadot    #include <dt-bindings/interrupt-controller/arm-gic.h>
67c66ec88fSEmmanuel Vadot    #include <dt-bindings/clock/stm32mp1-clks.h>
68c66ec88fSEmmanuel Vadot    #include <dt-bindings/reset/stm32mp1-resets.h>
69c66ec88fSEmmanuel Vadot    memory-controller@58002000 {
70c66ec88fSEmmanuel Vadot      #address-cells = <2>;
71c66ec88fSEmmanuel Vadot      #size-cells = <1>;
72c66ec88fSEmmanuel Vadot      compatible = "st,stm32mp1-fmc2-ebi";
73c66ec88fSEmmanuel Vadot      reg = <0x58002000 0x1000>;
74c66ec88fSEmmanuel Vadot      clocks = <&rcc FMC_K>;
75c66ec88fSEmmanuel Vadot      resets = <&rcc FMC_R>;
76c66ec88fSEmmanuel Vadot
77c66ec88fSEmmanuel Vadot      ranges = <0 0 0x60000000 0x04000000>, /* EBI CS 1 */
78c66ec88fSEmmanuel Vadot               <1 0 0x64000000 0x04000000>, /* EBI CS 2 */
79c66ec88fSEmmanuel Vadot               <2 0 0x68000000 0x04000000>, /* EBI CS 3 */
80c66ec88fSEmmanuel Vadot               <3 0 0x6c000000 0x04000000>, /* EBI CS 4 */
81c66ec88fSEmmanuel Vadot               <4 0 0x80000000 0x10000000>; /* NAND */
82c66ec88fSEmmanuel Vadot
83c66ec88fSEmmanuel Vadot      psram@0,0 {
84c66ec88fSEmmanuel Vadot        compatible = "mtd-ram";
85c66ec88fSEmmanuel Vadot        reg = <0 0x00000000 0x100000>;
86c66ec88fSEmmanuel Vadot        bank-width = <2>;
87c66ec88fSEmmanuel Vadot
88c66ec88fSEmmanuel Vadot        st,fmc2-ebi-cs-transaction-type = <1>;
89c66ec88fSEmmanuel Vadot        st,fmc2-ebi-cs-address-setup-ns = <60>;
90c66ec88fSEmmanuel Vadot        st,fmc2-ebi-cs-data-setup-ns = <30>;
91c66ec88fSEmmanuel Vadot        st,fmc2-ebi-cs-bus-turnaround-ns = <5>;
92c66ec88fSEmmanuel Vadot      };
93c66ec88fSEmmanuel Vadot
94c66ec88fSEmmanuel Vadot      nand-controller@4,0 {
95c66ec88fSEmmanuel Vadot        #address-cells = <1>;
96c66ec88fSEmmanuel Vadot        #size-cells = <0>;
97c66ec88fSEmmanuel Vadot        compatible = "st,stm32mp1-fmc2-nfc";
98c66ec88fSEmmanuel Vadot        reg = <4 0x00000000 0x1000>,
99c66ec88fSEmmanuel Vadot              <4 0x08010000 0x1000>,
100c66ec88fSEmmanuel Vadot              <4 0x08020000 0x1000>,
101c66ec88fSEmmanuel Vadot              <4 0x01000000 0x1000>,
102c66ec88fSEmmanuel Vadot              <4 0x09010000 0x1000>,
103c66ec88fSEmmanuel Vadot              <4 0x09020000 0x1000>;
104c66ec88fSEmmanuel Vadot        interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
105c66ec88fSEmmanuel Vadot        dmas = <&mdma1 20 0x2 0x12000a02 0x0 0x0>,
106c66ec88fSEmmanuel Vadot               <&mdma1 20 0x2 0x12000a08 0x0 0x0>,
107c66ec88fSEmmanuel Vadot               <&mdma1 21 0x2 0x12000a0a 0x0 0x0>;
108c66ec88fSEmmanuel Vadot        dma-names = "tx", "rx", "ecc";
109c66ec88fSEmmanuel Vadot
110c66ec88fSEmmanuel Vadot        nand@0 {
111c66ec88fSEmmanuel Vadot          reg = <0>;
112c66ec88fSEmmanuel Vadot          nand-on-flash-bbt;
113c66ec88fSEmmanuel Vadot          #address-cells = <1>;
114c66ec88fSEmmanuel Vadot          #size-cells = <1>;
115c66ec88fSEmmanuel Vadot        };
116c66ec88fSEmmanuel Vadot      };
117c66ec88fSEmmanuel Vadot    };
118c66ec88fSEmmanuel Vadot
119c66ec88fSEmmanuel Vadot...
120