# Copyright 2020-2023 NXP
# Copyright (c) 2021 Basalte bv
# Copyright (c) 2023, ithinx GmbH
# Copyright (c) 2023, Tonies GmbH
# SPDX-License-Identifier: Apache-2.0

if DT_HAS_NXP_IMX_FLEXSPI_ENABLED

config MEMC_MCUX_FLEXSPI_W956A8MBYA
	bool "MCUX FlexSPI Winbond W956A8MBYA HyperRAM driver"
	default y
	depends on DT_HAS_NXP_IMX_FLEXSPI_W956A8MBYA_ENABLED
	select MEMC_MCUX_FLEXSPI

config MEMC_MCUX_FLEXSPI_S27KS0641
	bool "MCUX FlexSPI Cypress S27KS0641 HyperRAM driver"
	default y
	depends on DT_HAS_NXP_IMX_FLEXSPI_S27KS0641_ENABLED
	select MEMC_MCUX_FLEXSPI

config MEMC_MCUX_FLEXSPI_APS6408L
	bool "MCUX FlexSPI AP Memory APS6408L pSRAM driver"
	default y
	depends on DT_HAS_NXP_IMX_FLEXSPI_APS6408L_ENABLED
	select MEMC_MCUX_FLEXSPI

config MEMC_MCUX_FLEXSPI
	bool
	select PINCTRL

endif # DT_HAS_NXP_IMX_FLEXSPI_ENABLED


if DT_HAS_NXP_FLEXRAM_ENABLED

config MEMC_NXP_FLEXRAM
	bool
	default y

config MEMC_NXP_FLEXRAM_MAGIC_ADDR_API
	bool "NXP FlexRAM magic addr API"
	help
	  Enable API to use flexRAM magic address functionality

config MEMC_NXP_FLEXRAM_ERROR_INTERRUPT
	bool "NXP FlexRAM error interrupt"
	help
	  Allow flexram to generate error interrupts

endif # DT_HAS_NXP_FLEXRAM_ENABLED
