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