mirror of
https://github.com/zephyrproject-rtos/zephyr
synced 2025-08-06 01:15:14 +00:00
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>
52 lines
1.5 KiB
YAML
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...>;
|