zephyr/dts/bindings/memory-controllers/st,stm32-fmc.yaml
Gerard Marull-Paretas e671d363b8 drivers: memc: stm32: initial support for stm32 FMC
This commit adds a new driver category for memory controller
peripherals. There is no API involved for now, as it has not been found
necessary for first implementation.

STM32 Flexible Memory Controller (FMC) is the only controller supported
for now. This peripheral allows to access multiple types of external
memories, e.g. SDRAM, NAND, NOR Flash...

The initial implementation adds support for the SDRAM controller only.
The HAL API is used, so the implementation should be portable to other
STM32 series. It has only been tested on H7 series, so for now it can
only be enabled when working on H7.

Linker facilities have also been added in order to allow applications to
easily define a variable in SDRAM.

Signed-off-by: Gerard Marull-Paretas <gerard@teslabs.com>
2020-11-24 16:33:17 +01:00

52 lines
1.5 KiB
YAML

# Copyright (c) 2020, Teslabs Engineering S.L.
# SPDX-License-Identifier: Apache-2.0
description: |
STM32 Flexible Memory Controller (FMC).
The FMC allows to interface with static-memory mapped external devices such as
SRAM, NOR Flash, NAND Flash, SDRAM...
All external memories share the addresses, data and control signals with the
controller. Each external device is accessed by means of a unique chip select.
The FMC performs only one access at a time to an external device.
The flexible memory controller includes three memory controllers:
- NOR/PSRAM memory controller
- NAND memory controller (some devices also support PC Card)
- Synchronous DRAM (SDRAM/Mobile LPSDR SDRAM) controller
Each memory controller is defined below the FMC DeviceTree node and is managed
by a separate Zephyr device. However, because signals are shared the FMC
device handles the signals and the peripheral clocks. FMC can be enabled
in your board DeviceTree file like this:
&fmc {
status = "okay";
pinctrl-0 = <&fmc_nbl0_pe0 &fmc_nbl1_pe1 &fmc_nbl2_pi4...>;
};
compatible: "st,stm32-fmc"
include: base.yaml
properties:
reg:
required: true
label:
required: true
clocks:
required: true
pinctrl-0:
type: phandles
required: false
description: |
GPIO pin configuration for FMC signals. We expect that the phandles
will reference pinctrl nodes, e.g.
pinctrl-0 = <&fmc_a0_pf0 &fmc_a1_pf1...>;