# SPDX-License-Identifier: GPL-2.0-only
#
# Memory devices
#

menuconfig MEMORY
	bool "Memory Controller drivers"
	help
	  This option allows to enable specific memory controller drivers,
	  useful mostly on embedded systems.  These could be controllers
	  for DRAM (SDR, DDR), ROM, SRAM and others.  The drivers features
	  vary from memory tuning and frequency scaling to enabling
	  access to attached peripherals through memory bus.

if MEMORY

config DDR
	bool
	help
	  Data from JEDEC specs for DDR SDRAM memories,
	  particularly the AC timing parameters and addressing
	  information. This data is useful for drivers handling
	  DDR SDRAM controllers.

config ARM_PL172_MPMC
	tristate "ARM PL172 MPMC driver"
	depends on ARM_AMBA && OF
	help
	  This selects the ARM PrimeCell PL172 MultiPort Memory Controller.
	  If you have an embedded system with an AMBA bus and a PL172
	  controller, say Y or M here.

config ATMEL_EBI
	bool "Atmel EBI driver"
	default ARCH_AT91
	depends on ARCH_AT91 || COMPILE_TEST
	depends on OF
	select MFD_SYSCON
	select MFD_ATMEL_SMC
	help
	  Driver for Atmel EBI controller.
	  Used to configure the EBI (external bus interface) when the device-
	  tree is used. This bus supports NANDs, external ethernet controller,
	  SRAMs, ATA devices, etc.

config BRCMSTB_DPFE
	tristate "Broadcom STB DPFE driver"
	default ARCH_BRCMSTB
	depends on ARCH_BRCMSTB || COMPILE_TEST
	help
	  This driver provides access to the DPFE interface of Broadcom
	  STB SoCs. The firmware running on the DCPU inside the DDR PHY can
	  provide current information about the system's RAM, for instance
	  the DRAM refresh rate. This can be used as an indirect indicator
	  for the DRAM's temperature. Slower refresh rate means cooler RAM,
	  higher refresh rate means hotter RAM.

config BRCMSTB_MEMC
	tristate "Broadcom STB MEMC driver"
	default ARCH_BRCMSTB
	depends on ARCH_BRCMSTB || COMPILE_TEST
	help
	  This driver provides a way to configure the Broadcom STB memory
	  controller and specifically control the Self Refresh Power Down
	  (SRPD) inactivity timeout.

config BT1_L2_CTL
	bool "Baikal-T1 CM2 L2-RAM Cache Control Block"
	depends on MIPS_BAIKAL_T1 || COMPILE_TEST
	select MFD_SYSCON
	help
	  Baikal-T1 CPU is based on the MIPS P5600 Warrior IP-core. The CPU
	  resides Coherency Manager v2 with embedded 1MB L2-cache. It's
	  possible to tune the L2 cache performance up by setting the data,
	  tags and way-select latencies of RAM access. This driver provides a
	  dt properties-based and sysfs interface for it.

config TI_AEMIF
	tristate "Texas Instruments AEMIF driver"
	depends on ARCH_DAVINCI || ARCH_KEYSTONE || COMPILE_TEST
	depends on OF
	help
	  This driver is for the AEMIF module available in Texas Instruments
	  SoCs. AEMIF stands for Asynchronous External Memory Interface and
	  is intended to provide a glue-less interface to a variety of
	  asynchronuous memory devices like ASRAM, NOR and NAND memory. A total
	  of 256M bytes of any of these memories can be accessed at a given
	  time via four chip selects with 64M byte access per chip select.

config TI_EMIF
	tristate "Texas Instruments EMIF driver"
	depends on ARCH_OMAP2PLUS || COMPILE_TEST
	select DDR
	help
	  This driver is for the EMIF module available in Texas Instruments
	  SoCs. EMIF is an SDRAM controller that, based on its revision,
	  supports one or more of DDR2, DDR3, and LPDDR2 SDRAM protocols.
	  This driver takes care of only LPDDR2 memories presently. The
	  functions of the driver includes re-configuring AC timing
	  parameters and other settings during frequency, voltage and
	  temperature changes

config OMAP_GPMC
	tristate "Texas Instruments OMAP SoC GPMC driver"
	depends on OF_ADDRESS
	depends on ARCH_OMAP2PLUS || ARCH_KEYSTONE || ARCH_K3 || COMPILE_TEST
	select GPIOLIB
	help
	  This driver is for the General Purpose Memory Controller (GPMC)
	  present on Texas Instruments SoCs (e.g. OMAP2+). GPMC allows
	  interfacing to a variety of asynchronous as well as synchronous
	  memory drives like NOR, NAND, OneNAND, SRAM.

config OMAP_GPMC_DEBUG
	bool "Enable GPMC debug output and skip reset of GPMC during init"
	depends on OMAP_GPMC
	help
	  Enables verbose debugging mostly to decode the bootloader provided
	  timings. To preserve the bootloader provided timings, the reset
	  of GPMC is skipped during init. Enable this during development to
	  configure devices connected to the GPMC bus.

	  NOTE: In addition to matching the register setup with the bootloader
	  you also need to match the GPMC FCLK frequency used by the
	  bootloader or else the GPMC timings won't be identical with the
	  bootloader timings.

config TI_EMIF_SRAM
	tristate "Texas Instruments EMIF SRAM driver"
	depends on SOC_AM33XX || SOC_AM43XX || (ARM && CPU_V7 && COMPILE_TEST)
	depends on SRAM
	help
	  This driver is for the EMIF module available on Texas Instruments
	  AM33XX and AM43XX SoCs and is required for PM. Certain parts of
	  the EMIF PM code must run from on-chip SRAM late in the suspend
	  sequence so this driver provides several relocatable PM functions
	  for the SoC PM code to use.

config FPGA_DFL_EMIF
	tristate "FPGA DFL EMIF Driver"
	depends on FPGA_DFL && HAS_IOMEM
	help
	  This driver is for the EMIF private feature implemented under
	  FPGA Device Feature List (DFL) framework. It is used to expose
	  memory interface status information as well as memory clearing
	  control.

config MVEBU_DEVBUS
	bool "Marvell EBU Device Bus Controller"
	default PLAT_ORION
	depends on PLAT_ORION || COMPILE_TEST
	depends on OF
	help
	  This driver is for the Device Bus controller available in some
	  Marvell EBU SoCs such as Discovery (mv78xx0), Orion (88f5xxx) and
	  Armada 370 and Armada XP. This controller allows to handle flash
	  devices such as NOR, NAND, SRAM, and FPGA.

config FSL_CORENET_CF
	tristate "Freescale CoreNet Error Reporting"
	depends on FSL_SOC_BOOKE || COMPILE_TEST
	help
	  Say Y for reporting of errors from the Freescale CoreNet
	  Coherency Fabric.  Errors reported include accesses to
	  physical addresses that mapped by no local access window
	  (LAW) or an invalid LAW, as well as bad cache state that
	  represents a coherency violation.

config FSL_IFC
	bool "Freescale IFC driver"
	depends on FSL_SOC || ARCH_LAYERSCAPE || SOC_LS1021A || COMPILE_TEST
	depends on HAS_IOMEM

config JZ4780_NEMC
	bool "Ingenic JZ4780 SoC NEMC driver"
	depends on MIPS || COMPILE_TEST
	depends on HAS_IOMEM && OF
	help
	  This driver is for the NAND/External Memory Controller (NEMC) in
	  the Ingenic JZ4780. This controller is used to handle external
	  memory devices such as NAND and SRAM.

config MTK_SMI
	tristate "MediaTek SoC Memory Controller driver" if COMPILE_TEST
	depends on ARCH_MEDIATEK || COMPILE_TEST
	help
	  This driver is for the Memory Controller module in MediaTek SoCs,
	  mainly help enable/disable iommu and control the power domain and
	  clocks for each local arbiter.

config DA8XX_DDRCTL
	bool "Texas Instruments da8xx DDR2/mDDR driver"
	depends on ARCH_DAVINCI_DA8XX || COMPILE_TEST
	help
	  This driver is for the DDR2/mDDR Memory Controller present on
	  Texas Instruments da8xx SoCs. It's used to tweak various memory
	  controller configuration options.

config PL353_SMC
	tristate "ARM PL35X Static Memory Controller(SMC) driver"
	default ARM
	depends on ARM || COMPILE_TEST
	depends on ARM_AMBA
	help
	  This driver is for the ARM PL351/PL353 Static Memory
	  Controller(SMC) module.

config RENESAS_RPCIF
	tristate "Renesas RPC-IF driver"
	depends on ARCH_RENESAS || COMPILE_TEST
	select REGMAP_MMIO
	select RESET_CONTROLLER
	help
	  This supports Renesas R-Car Gen3 or RZ/G2 RPC-IF which provides
	  either SPI host or HyperFlash. You'll have to select individual
	  components under the corresponding menu.

config STM32_FMC2_EBI
	tristate "Support for FMC2 External Bus Interface on STM32MP SoCs"
	depends on ARCH_STM32 || COMPILE_TEST
	select MFD_SYSCON
	help
	  Select this option to enable the STM32 FMC2 External Bus Interface
	  controller. This driver configures the transactions with external
	  devices (like SRAM, ethernet adapters, FPGAs, LCD displays, ...) on
	  SOCs containing the FMC2 External Bus Interface.

config STM32_OMM
	tristate "STM32 Octo Memory Manager"
	depends on SPI_STM32_OSPI || COMPILE_TEST
	help
	  This driver manages the muxing between the 2 OSPI busses and
	  the 2 output ports. There are 4 possible muxing configurations:
	  - direct mode (no multiplexing): OSPI1 output is on port 1 and OSPI2
	       output is on port 2
	  - OSPI1 and OSPI2 are multiplexed over the same output port 1
	  - swapped mode (no multiplexing), OSPI1 output is on port 2,
	       OSPI2 output is on port 1
	  - OSPI1 and OSPI2 are multiplexed over the same output port 2
	  It also manages :
	    - the split of the memory area shared between the 2 OSPI instances.
	    - chip select selection override.
	    - the time between 2 transactions in multiplexed mode.

source "drivers/memory/samsung/Kconfig"
source "drivers/memory/tegra/Kconfig"

endif
