# Copyright (c) 2022 Georgij Cernysiov
# 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,stm32h7-fmc"

include: ["st,stm32-fmc.yaml"]

properties:
    st,mem-swap:
      type: string
      default: "disable" # reset state
      enum:
        - "disable"
        - "sdram-sram"
        - "sdramb2"
      description: |
        The FMC bank mapping configuration (BMAP bits of FMC_BCR1).

        * disable    - Default mapping.
        * sdram-sram - Swap the NOR/PSRAM bank with SDRAM.
        * sdramb2    - Remaps the SDRAM bank2.

        If absent, then default mapping (disable) is used (reset state).
