1menu "MTD Support"
2
3config MTD_PARTITIONS
4	bool
5	select PARTITIONS
6
7config MTD
8	bool "Enable MTD layer"
9	help
10	  Enable the MTD stack, necessary to interact with NAND, NOR,
11	  SPI-NOR, SPI-NAND, OneNAND, etc.
12
13if MTD
14
15config DM_MTD
16	bool "Enable Driver Model for MTD drivers"
17	depends on DM
18	help
19	  Enable driver model for Memory Technology Devices (MTD), such as
20	  flash, RAM and similar chips, often used for solid state file
21	  systems on embedded devices.
22
23config MTD_NOR_FLASH
24	bool "Enable parallel NOR flash support"
25	help
26	  Enable support for parallel NOR flash.
27
28config MTD_CONCAT
29	bool "Enable MTD device concatenation"
30	help
31	  Enable support for concatenating multiple physical MTD devices
32	  into a single logical device. The larger logical device can then
33	  be partitioned.
34
35config MTD_BLOCK
36	bool "Enable block device access to MTD devices"
37	select BLK
38	help
39	  Enable support for block device access to MTD devices
40	  using blk_ops abstraction.
41
42config SYS_MTDPARTS_RUNTIME
43	bool "Allow MTDPARTS to be configured at runtime"
44	help
45	  This option allows to call the function board_mtdparts_default to
46	  dynamically build the variables mtdids and mtdparts at runtime.
47
48config FLASH_CFI_DRIVER
49	bool "Enable CFI Flash driver"
50	select USE_SYS_MAX_FLASH_BANKS
51	help
52	  The Common Flash Interface specification was developed by Intel,
53	  AMD and other flash manufactures. It provides a universal method
54	  for probing the capabilities of flash devices. If you wish to
55	  support any device that is CFI-compliant, you need to enable this
56	  option. Visit <http://www.amd.com/products/nvd/overview/cfi.html>
57	  for more information on CFI.
58
59choice
60	prompt "Data-width of the flash device"
61	depends on FLASH_CFI_DRIVER
62	default SYS_FLASH_CFI_WIDTH_8BIT
63
64config SYS_FLASH_CFI_WIDTH_8BIT
65	bool "Data-width of the device is 8-bit"
66
67config SYS_FLASH_CFI_WIDTH_16BIT
68	bool "Data-width of the device is 16-bit"
69
70config SYS_FLASH_CFI_WIDTH_32BIT
71	bool "Data-width of the device is 32-bit"
72
73config SYS_FLASH_CFI_WIDTH_64BIT
74	bool "Data-width of the device is 64-bit"
75
76endchoice
77
78config SYS_FLASH_CFI_WIDTH
79	hex
80	depends on FLASH_CFI_DRIVER
81	default 0x1 if SYS_FLASH_CFI_WIDTH_8BIT
82	default 0x2 if SYS_FLASH_CFI_WIDTH_16BIT
83	default 0x4 if SYS_FLASH_CFI_WIDTH_32BIT
84	default 0x8 if SYS_FLASH_CFI_WIDTH_64BIT
85	help
86	  This must be kept in sync with the table in include/flash.h
87
88config FLASH_SHOW_PROGRESS
89	int "Print out a countdown durinng writes"
90	depends on FLASH_CFI_DRIVER
91	default 45
92	help
93	  If set to a non-zero value, print out countdown digits and dots.
94	  Recommended value: 45 (9..1) for 80 column displays, 15 (3..1) for 40
95	  column displays.
96
97config CFI_FLASH
98	bool "Enable Driver Model for CFI Flash driver"
99	depends on DM_MTD
100	select FLASH_CFI_DRIVER
101	help
102	  The Common Flash Interface specification was developed by Intel,
103	  AMD and other flash manufactures. It provides a universal method
104	  for probing the capabilities of flash devices. If you wish to
105	  support any device that is CFI-compliant, you need to enable this
106	  option. Visit <http://www.amd.com/products/nvd/overview/cfi.html>
107	  for more information on CFI.
108
109config CFI_FLASH_USE_WEAK_ACCESSORS
110	bool "Allow read/write functions to be overridden"
111	depends on FLASH_CFI_DRIVER
112	help
113	  Enable this option to allow for the flash_{read,write}{8,16,32,64}
114	  functions to be overridden by the platform.
115
116config SYS_CFI_FLASH_STATUS_POLL
117	bool "Poll status on AMD flash chips"
118	depends on FLASH_CFI_DRIVER
119
120config SYS_FLASH_USE_BUFFER_WRITE
121	bool "Enable buffered writes to flash"
122	depends on FLASH_CFI_DRIVER
123	help
124	  Use buffered writes to flash.
125
126config SYS_FLASH_EMPTY_INFO
127	bool "Enable displaying empty sectors in flash info"
128	depends on FLASH_CFI_DRIVER
129
130config FLASH_SPANSION_S29WS_N
131	bool "Non-standard s29ws-n MirrorBit flash"
132	depends on FLASH_CFI_DRIVER
133	help
134	  Enable this if the s29ws-n MirrorBit flash has non-standard addresses
135	  for buffered write commands.
136
137config FLASH_CFI_MTD
138	bool "Enable CFI MTD driver"
139	depends on FLASH_CFI_DRIVER && MTD
140	help
141	  This option enables the building of the cfi_mtd driver
142	  in the drivers directory. The driver exports CFI flash
143	  to the MTD layer.
144
145config SYS_FLASH_PROTECTION
146	bool "Use hardware flash protection"
147	depends on FLASH_CFI_DRIVER
148	help
149	  If defined, hardware flash sectors protection is used
150	  instead of U-Boot software protection.
151
152config SYS_FLASH_CFI
153	bool "Define extra elements in CFI for flash geometry"
154	depends on FLASH_CFI_DRIVER
155	help
156	  Define if the flash driver uses extra elements in the
157	  common flash structure for storing flash geometry.
158
159config SYS_FLASH_QUIET_TEST
160	bool "Disable printing a warning about not recognizing some flash banks"
161	depends on FLASH_CFI_DRIVER
162	help
163	  If this option is enabled, the common CFI flash doesn't print it's
164	  warning upon not recognized FLASH banks. This is useful, if some of
165	  the configured banks are only optionally available.
166
167config SYS_FLASH_CHECKSUM
168	bool "Compute and print flash CRC if 'flashchecksum' is set in the environment"
169	depends on MTD_NOR_FLASH
170	help
171	  If the variable flashchecksum is set in the environment, perform a CRC
172	  of the flash and print the value to console.
173
174config FLASH_VERIFY
175	bool "Compare writes to NOR flash with source location"
176	depends on MTD_NOR_FLASH
177	help
178	  If enabled, the content of the flash (destination) is compared
179	  against the source after the write operation. An error message will
180	  be printed when the contents are not identical.  Please note that
181	  this option is useless in nearly all cases, since such flash
182	  programming errors usually are detected earlier while
183	  unprotecting/erasing/programming. Please only enable this option if
184	  you really know what you are doing.
185
186config ALTERA_QSPI
187	bool "Altera Generic Quad SPI Controller"
188	depends on DM_MTD
189	select USE_SYS_MAX_FLASH_BANKS
190	help
191	  This enables access to Altera EPCQ/EPCS flash chips using the
192	  Altera Generic Quad SPI Controller. The controller converts SPI
193	  NOR flash to parallel flash interface. Please find details on the
194	  "Embedded Peripherals IP User Guide" of Altera.
195
196config RENESAS_RPC_HF
197	bool "Renesas R-Car Gen3 RPC HyperFlash driver"
198	depends on RCAR_GEN3 && DM_MTD
199	help
200	  This enables access to HyperFlash memory through the Renesas
201	  R-Car Gen3 RPC controller.
202
203config HBMC_AM654
204	bool "HyperBus controller driver for AM65x SoC"
205	depends on MULTIPLEXER && MUX_MMIO
206	help
207	 This is the driver for HyperBus controller on TI's AM65x and
208	 other SoCs
209
210config STM32_FLASH
211	bool "STM32 MCU Flash driver"
212	depends on ARCH_STM32
213	select USE_SYS_MAX_FLASH_BANKS
214	help
215	 This is the driver of embedded flash for some STMicroelectronics
216	 STM32 MCU.
217
218config SYS_MAX_FLASH_SECT
219	int "Maximum number of sectors on a flash chip"
220	depends on MTD_NOR_FLASH || FLASH_CFI_DRIVER
221	default 512
222
223config SAMSUNG_ONENAND
224	bool "Samsung OneNAND driver support"
225
226config USE_SYS_MAX_FLASH_BANKS
227	bool "Enable Max number of Flash memory banks"
228	help
229	  When this option is enabled, the CONFIG_SYS_MAX_FLASH_BANKS
230	  will be defined.
231
232config SYS_MAX_FLASH_BANKS
233	int "Max number of Flash memory banks"
234	depends on USE_SYS_MAX_FLASH_BANKS
235	default 1
236	help
237	 Max number of Flash memory banks using by the MTD framework, in the
238	 flash CFI driver and in some other driver to define the flash_info
239	 struct declaration.
240
241config SYS_MAX_FLASH_BANKS_DETECT
242	bool "Detection of flash banks number in CFI driver"
243	depends on CFI_FLASH && FLASH_CFI_DRIVER
244	help
245	 This enables detection of number of flash banks in CFI driver,
246	 to reduce the effective number of flash bank, between 0 and
247	 CONFIG_SYS_MAX_FLASH_BANKS
248
249source "drivers/mtd/nand/Kconfig"
250
251config SYS_NAND_MAX_OOBFREE
252	int "Maximum number of free OOB regions supported"
253	depends on SAMSUNG_ONENAND || MTD_RAW_NAND
254	range 2 32
255	default 32
256	help
257	  Set the maximum number of free OOB regions supported.  Useful for
258	  reducing image size, especially with SPL.
259
260config SYS_NAND_MAX_ECCPOS
261	int "Maximum number of ECC bytes supported"
262	depends on SAMSUNG_ONENAND || MTD_RAW_NAND
263	range 48 2147483647
264	default 680
265	help
266	  Set the maximum number of ECC bytes supported.  Useful for reducing
267	  image size, especially with SPL.
268
269config SYS_NAND_MAX_CHIPS
270	int "NAND max chips"
271	depends on MTD_RAW_NAND || CMD_ONENAND || TARGET_S5PC210_UNIVERSAL || \
272		SPL_OMAP3_ID_NAND
273	default 1
274	help
275	  The maximum number of NAND chips per device to be supported.
276
277source "drivers/mtd/spi/Kconfig"
278
279source "drivers/mtd/ubi/Kconfig"
280
281source "drivers/mtd/nvmxip/Kconfig"
282
283endif
284
285endmenu
286