# Copyright (c) 2024, Ambiq Micro Inc. <www.ambiq.com>
# SPDX-License-Identifier: Apache-2.0

config MSPI_AMBIQ_AP3
	bool "Ambiq Apollo3 series MSPI driver"
	default y
	depends on DT_HAS_AMBIQ_MSPI_CONTROLLER_ENABLED
	select AMBIQ_HAL
	select AMBIQ_HAL_USE_MSPI
	select MSPI_XIP
	select MSPI_SCRAMBLE
	select MSPI_TIMING
	select GPIO
	help
	  Enable driver for Ambiq MSPI.

config MSPI_AMBIQ_BUFF_RAM_LOCATION
	hex "byte offset to SRAM_BASE_ADDRESS"
	default 0x50000
	help
	  This option specifies the mspi buffer/heap start address

config MSPI_AMBIQ_BUFF_ALIGNMENT
	int "byte alignment of the MSPI buffer"
	default 8 if MSPI_AMBIQ_AP3
	default 4
	help
	  This option specifies the mspi buffer alignment
