1# Copyright (c) 2025 Ambiq Micro Inc. <www.ambiq.com>
2# SPDX-License-Identifier: Apache-2.0
3
4menu "MSPI flash device driver"
5
6config FLASH_MSPI
7	bool
8	select FLASH_HAS_DRIVER_ENABLED
9	select MSPI
10	help
11	  MSPI flash drivers are enabled.
12
13config FLASH_MSPI_EMUL_DEVICE
14	bool "MSPI flash device emulator"
15	default y
16	depends on DT_HAS_ZEPHYR_MSPI_EMUL_FLASH_ENABLED
17	select FLASH_MSPI
18	select FLASH_HAS_PAGE_LAYOUT
19	select FLASH_HAS_EXPLICIT_ERASE
20
21config FLASH_MSPI_ATXP032
22	bool "MSPI ATXP032 driver"
23	default y
24	depends on DT_HAS_MSPI_ATXP032_ENABLED
25	select FLASH_MSPI
26	select FLASH_HAS_PAGE_LAYOUT
27	select FLASH_HAS_EXPLICIT_ERASE
28	select FLASH_JESD216
29	select MSPI_AMBIQ_CONTROLLER if SOC_FAMILY_AMBIQ
30
31config FLASH_MSPI_IS25XX0XX
32	bool "MSPI IS25L/WX064/032 driver"
33	default y
34	depends on DT_HAS_MSPI_IS25XX0XX_ENABLED
35	select FLASH_MSPI
36	select FLASH_HAS_PAGE_LAYOUT
37	select FLASH_HAS_EXPLICIT_ERASE
38	select FLASH_JESD216
39	select MSPI_AMBIQ_CONTROLLER if SOC_FAMILY_AMBIQ
40
41menuconfig FLASH_MSPI_NOR
42	bool "Generic MSPI NOR Flash"
43	default y
44	depends on DT_HAS_JEDEC_MSPI_NOR_ENABLED
45	select FLASH_MSPI
46	select FLASH_HAS_EXPLICIT_ERASE
47	select FLASH_JESD216
48	select GPIO if $(dt_compat_any_has_prop,$(DT_COMPAT_JEDEC_MSPI_NOR),reset-gpios)
49
50if FLASH_MSPI_NOR
51
52config FLASH_MSPI_NOR_LAYOUT_PAGE_SIZE
53	int "Page size to use for FLASH_LAYOUT feature"
54	depends on FLASH_PAGE_LAYOUT
55	default 65536
56	help
57	  When CONFIG_FLASH_PAGE_LAYOUT is used, this driver will support that
58	  API. By default the page size corresponds to the block size (65536).
59	  Other options include the 32K-byte erase size (32768), the sector
60	  size (4096), or any non-zero multiple of the sector size.
61
62endif # FLASH_MSPI_NOR
63
64endmenu
65
66if FLASH_MSPI
67
68config FLASH_MSPI_HANDLE_CACHE
69	bool "Turn on cache handling in flash peripheral drivers"
70	default y
71	depends on CACHE_MANAGEMENT && DCACHE
72	help
73	  Disable this if cache has been handled in upper layers.
74
75config FLASH_MSPI_RANGE_HANDLE_CACHE_SIZE
76	int "Threshold to do cache handling by range or in full, size in bytes"
77	default SOC_AMBIQ_DCACHE_SIZE if SOC_SERIES_APOLLO5X
78	default 0
79	help
80	  If size is larger than this number, it is uneconomical to handle cache in range.
81	  However, this is a number by experience and could be platform specific.
82
83config FLASH_MSPI_XIP_READ
84	bool "Turn on XIP read in flash_read"
85	depends on MSPI_XIP
86	help
87	  Enable this for those controllers that supports XIP and wishes to
88	  flash_read using XIP.
89
90endif # FLASH_MSPI
91