xref: /openbmc/u-boot/drivers/mmc/Kconfig (revision 21756378)
1menu "MMC Host controller Support"
2
3config MMC
4	bool "MMC/SD/SDIO card support"
5	default ARM || PPC || SANDBOX
6	select HAVE_BLOCK_DEVICE
7	help
8	  This selects MultiMediaCard, Secure Digital and Secure
9	  Digital I/O support.
10
11	  If you want MMC/SD/SDIO support, you should say Y here and
12	  also to your specific host controller driver.
13
14config MMC_WRITE
15	bool "support for MMC/SD write operations"
16	depends on MMC
17	default y
18	help
19	  Enable write access to MMC and SD Cards
20
21config MMC_BROKEN_CD
22	bool "Poll for broken card detection case"
23	help
24	  If card  detection feature is broken, just poll to detect.
25
26config DM_MMC
27	bool "Enable MMC controllers using Driver Model"
28	depends on DM
29	help
30	  This enables the MultiMediaCard (MMC) uclass which supports MMC and
31	  Secure Digital I/O (SDIO) cards. Both removable (SD, micro-SD, etc.)
32	  and non-removable (e.g. eMMC chip) devices are supported. These
33	  appear as block devices in U-Boot and can support filesystems such
34	  as EXT4 and FAT.
35
36config SPL_DM_MMC
37	bool "Enable MMC controllers using Driver Model in SPL"
38	depends on SPL_DM && DM_MMC
39	default y
40	help
41	  This enables the MultiMediaCard (MMC) uclass which supports MMC and
42	  Secure Digital I/O (SDIO) cards. Both removable (SD, micro-SD, etc.)
43	  and non-removable (e.g. eMMC chip) devices are supported. These
44	  appear as block devices in U-Boot and can support filesystems such
45	  as EXT4 and FAT.
46
47if MMC
48
49config ARM_PL180_MMCI
50	bool "ARM AMBA Multimedia Card Interface and compatible support"
51	depends on DM_MMC && OF_CONTROL
52	help
53	  This selects the ARM(R) AMBA(R) PrimeCell Multimedia Card
54	  Interface (PL180, PL181 and compatible) support.
55	  If you have an ARM(R) platform with a Multimedia Card slot,
56	  say Y or M here.
57
58config MMC_QUIRKS
59	bool "Enable quirks"
60	default y
61	help
62	  Some cards and hosts may sometimes behave unexpectedly (quirks).
63	  This option enable workarounds to handle those quirks. Some of them
64	  are enabled by default, other may require additionnal flags or are
65	  enabled by the host driver.
66
67config MMC_HW_PARTITIONING
68	bool "Support for HW partitioning command(eMMC)"
69	default y
70	help
71	  This adds a command and an API to do hardware partitioning on eMMC
72	  devices.
73
74config MMC_IO_VOLTAGE
75	bool "Support IO voltage configuration"
76	help
77	  IO voltage configuration allows selecting the voltage level of the IO
78	  lines (not the level of main supply). This is required for UHS
79	  support. For eMMC this not mandatory, but not enabling this option may
80	  prevent the driver of using the faster modes.
81
82config SPL_MMC_IO_VOLTAGE
83	bool "Support IO voltage configuration in SPL"
84	default n
85	help
86	  IO voltage configuration allows selecting the voltage level of the IO
87	  lines (not the level of main supply). This is required for UHS
88	  support. For eMMC this not mandatory, but not enabling this option may
89	  prevent the driver of using the faster modes.
90
91config MMC_UHS_SUPPORT
92	bool "enable UHS support"
93	depends on MMC_IO_VOLTAGE
94	help
95	  The Ultra High Speed (UHS) bus is available on some SDHC and SDXC
96	  cards. The IO voltage must be switchable from 3.3v to 1.8v. The bus
97	  frequency can go up to 208MHz (SDR104)
98
99config SPL_MMC_UHS_SUPPORT
100	bool "enable UHS support in SPL"
101	depends on SPL_MMC_IO_VOLTAGE
102	help
103	  The Ultra High Speed (UHS) bus is available on some SDHC and SDXC
104	  cards. The IO voltage must be switchable from 3.3v to 1.8v. The bus
105	  frequency can go up to 208MHz (SDR104)
106
107config MMC_HS200_SUPPORT
108	bool "enable HS200 support"
109	help
110	  The HS200 mode is support by some eMMC. The bus frequency is up to
111	  200MHz. This mode requires tuning the IO.
112
113
114config SPL_MMC_HS200_SUPPORT
115	bool "enable HS200 support in SPL"
116	help
117	  The HS200 mode is support by some eMMC. The bus frequency is up to
118	  200MHz. This mode requires tuning the IO.
119
120config MMC_VERBOSE
121	bool "Output more information about the MMC"
122	default y
123	help
124	  Enable the output of more information about the card such as the
125	  operating mode.
126
127config MMC_TRACE
128	bool "MMC debugging"
129	default n
130	help
131	  This is an option for use by developer. Enable MMC core debugging.
132
133	  If you need to see the MMC core message, say Y.
134
135config SPL_MMC_TINY
136	bool "Tiny MMC framework in SPL"
137	help
138	  Enable MMC framework tinification support. This option is useful if
139	  if your SPL is extremely size constrained. Heed the warning, enable
140	  this option if and only if you know exactly what you are doing, if
141	  you are reading this help text, you most likely have no idea :-)
142
143	  The MMC framework is reduced to bare minimum to be useful. No malloc
144	  support is needed for the MMC framework operation with this option
145	  enabled. The framework supports exactly one MMC device and exactly
146	  one MMC driver. The MMC driver can be adjusted to avoid any malloc
147	  operations too, which can remove the need for malloc support in SPL
148	  and thus further reduce footprint.
149
150config MMC_DAVINCI
151	bool "TI DAVINCI Multimedia Card Interface support"
152	depends on ARCH_DAVINCI
153	default y
154	help
155	  This selects the TI DAVINCI Multimedia card Interface.
156	  If you have an DAVINCI board with a Multimedia Card slot,
157	  say Y here.  If unsure, say N.
158
159config MMC_DW
160	bool "Synopsys DesignWare Memory Card Interface"
161	help
162	  This selects support for the Synopsys DesignWare Mobile Storage IP
163	  block, this provides host support for SD and MMC interfaces, in both
164	  PIO, internal DMA mode and external DMA mode.
165
166config MMC_DW_EXYNOS
167	bool "Exynos specific extensions for Synopsys DW Memory Card Interface"
168	depends on ARCH_EXYNOS
169	depends on MMC_DW
170	default y
171	help
172	  This selects support for Samsung Exynos SoC specific extensions to the
173	  Synopsys DesignWare Memory Card Interface driver. Select this option
174	  for platforms based on Exynos4 and Exynos5 SoC's.
175
176config MMC_DW_K3
177	bool "K3 specific extensions for Synopsys DW Memory Card Interface"
178	depends on MMC_DW
179	help
180	  This selects support for Hisilicon K3 SoC specific extensions to the
181	  Synopsys DesignWare Memory Card Interface driver. Select this option
182	  for platforms based on Hisilicon K3 SoC's.
183
184config MMC_DW_ROCKCHIP
185	bool "Rockchip SD/MMC controller support"
186	depends on DM_MMC && OF_CONTROL
187	depends on MMC_DW
188	help
189	  This enables support for the Rockchip SD/MMM controller, which is
190	  based on Designware IP. The device is compatible with at least
191	  SD 3.0, SDIO 3.0 and MMC 4.5 and supports common eMMC chips as well
192	  as removeable SD and micro-SD cards.
193
194config MMC_DW_SOCFPGA
195	bool "SOCFPGA specific extensions for Synopsys DW Memory Card Interface"
196	depends on ARCH_SOCFPGA
197	depends on MMC_DW
198	default y
199	help
200	  This selects support for Altera SOCFPGA specific extensions to the
201	  Synopsys DesignWare Memory Card Interface driver. Select this option
202	  for platforms based on Altera SOCFPGA.
203
204config MMC_MESON_GX
205	bool "Meson GX EMMC controller support"
206	depends on DM_MMC && BLK && ARCH_MESON
207	help
208	 Support for EMMC host controller on Meson GX ARM SoCs platform (S905)
209
210config MMC_MXC
211	bool "Freescale i.MX21/27/31 or MPC512x Multimedia Card support"
212	help
213	  This selects the Freescale i.MX21, i.MX27, i.MX31 or MPC512x
214	  Multimedia Card Interface. If you have an i.MX or MPC512x platform
215	  with a Multimedia Card slot, say Y here.
216
217	  If unsure, say N.
218
219config MMC_MXS
220	bool "Freescale MXS Multimedia Card Interface support"
221	depends on MX23 || MX28 || MX6 || MX7
222	select APBH_DMA
223	select APBH_DMA_BURST if ARCH_MX6 || ARCH_MX7
224	select APBH_DMA_BURST8 if ARCH_MX6 || ARCH_MX7
225	help
226	  This selects the Freescale SSP MMC controller found on MXS based
227	  platforms like mx23/28.
228
229	  If unsure, say N.
230
231config MMC_PCI
232	bool "Support for MMC controllers on PCI"
233	help
234	  This selects PCI-based MMC controllers.
235	  If you have an MMC controller on a PCI bus, say Y here.
236
237	  If unsure, say N.
238
239config MMC_OMAP_HS
240	bool "TI OMAP High Speed Multimedia Card Interface support"
241	select DM_REGULATOR_PBIAS if DM_MMC && DM_REGULATOR
242	select DM_REGULATOR_PBIAS if DM_MMC && DM_REGULATOR
243	help
244	  This selects the TI OMAP High Speed Multimedia card Interface.
245	  If you have an omap2plus board with a Multimedia Card slot,
246	  say Y here.
247
248	  If unsure, say N.
249
250config MMC_OMAP_HS_ADMA
251	bool "ADMA support for OMAP HS MMC"
252	depends on MMC_OMAP_HS && !OMAP34XX
253	default y if !AM33XX
254	help
255	  This enables support for the ADMA2 controller (SDA3.00 Part A2 DMA
256	  controller). If supported by the hardware, selecting this option will
257	  increase performances.
258
259config MMC_OMAP36XX_PINS
260	bool "Enable MMC1 on OMAP36xx/37xx"
261	depends on OMAP34XX && MMC_OMAP_HS
262	help
263	  This enables extended-drain in the MMC/SD/SDIO1I/O and
264	  GPIO-associated I/O cells (gpio_126, gpio_127, and gpio_129)
265	  specific to the OMAP36xx/37xx using MMC1
266
267	  If you have a controller with this interface, say Y here.
268
269	  If unsure, say N.
270
271config SH_SDHI
272	bool "SuperH/Renesas ARM SoCs on-chip SDHI host controller support"
273	depends on ARCH_RMOBILE
274	help
275	  Support for the on-chip SDHI host controller on SuperH/Renesas ARM SoCs platform
276
277config SH_MMCIF
278	bool "SuperH/Renesas ARM SoCs on-chip MMCIF host controller support"
279	depends on ARCH_RMOBILE || SH
280	help
281	  Support for the on-chip MMCIF host controller on SuperH/Renesas ARM SoCs platform
282
283config MMC_UNIPHIER
284	bool "UniPhier SD/MMC Host Controller support"
285	depends on ARCH_UNIPHIER
286	depends on BLK && DM_MMC
287	depends on OF_CONTROL
288	help
289	  This selects support for the Matsushita SD/MMC Host Controller on
290	  SocioNext UniPhier SoCs.
291
292config RENESAS_SDHI
293	bool "Renesas R-Car SD/MMC Host Controller support"
294	depends on ARCH_RMOBILE
295	depends on BLK && DM_MMC
296	depends on OF_CONTROL
297	help
298	  This selects support for the Matsushita SD/MMC Host Controller on
299	  Renesas R-Car SoCs.
300
301config MMC_BCM2835
302	bool "BCM2835 family custom SD/MMC Host Controller support"
303	depends on ARCH_BCM283X
304	depends on BLK && DM_MMC
305	depends on OF_CONTROL
306	default y
307	help
308	  This selects support for the custom SD host controller in the BCM2835
309	  family of devices.
310
311	  If you have a BCM2835 platform with SD or MMC devices, say Y here.
312
313	  If unsure, say N.
314
315config MMC_SANDBOX
316	bool "Sandbox MMC support"
317	depends on SANDBOX
318	depends on BLK && DM_MMC && OF_CONTROL
319	help
320	  This select a dummy sandbox MMC driver. At present this does nothing
321	  other than allow sandbox to be build with MMC support. This
322	  improves build coverage for sandbox and makes it easier to detect
323	  MMC build errors with sandbox.
324
325config MMC_SDHCI
326	bool "Secure Digital Host Controller Interface support"
327	help
328	  This selects the generic Secure Digital Host Controller Interface.
329	  It is used by manufacturers such as Texas Instruments(R), Ricoh(R)
330	  and Toshiba(R). Most controllers found in laptops are of this type.
331
332	  If you have a controller with this interface, say Y here.
333
334	  If unsure, say N.
335
336config MMC_SDHCI_IO_ACCESSORS
337	bool
338	depends on MMC_SDHCI
339	help
340	  This is silent Kconfig symbol that is selected by the drivers that
341	  need to overwrite SDHCI IO memory accessors.
342
343config MMC_SDHCI_SDMA
344	bool "Support SDHCI SDMA"
345	depends on MMC_SDHCI
346	help
347	  This enables support for the SDMA (Single Operation DMA) defined
348	  in the SD Host Controller Standard Specification Version 1.00 .
349
350config MMC_SDHCI_ATMEL
351	bool "Atmel SDHCI controller support"
352	depends on ARCH_AT91
353	depends on DM_MMC && BLK && ARCH_AT91
354	depends on MMC_SDHCI
355	help
356	  This enables support for the Atmel SDHCI controller, which supports
357	  the embedded MultiMedia Card (e.MMC) Specification V4.51, the SD
358	  Memory Card Specification V3.0, and the SDIO V3.0 specification.
359	  It is compliant with the SD Host Controller Standard V3.0
360	  specification.
361
362config MMC_SDHCI_BCM2835
363	tristate "SDHCI support for the BCM2835 SD/MMC Controller"
364	depends on ARCH_BCM283X
365	depends on MMC_SDHCI
366	select MMC_SDHCI_IO_ACCESSORS
367	help
368	  This selects the BCM2835 SD/MMC controller.
369
370	  If you have a BCM2835 platform with SD or MMC devices,
371	  say Y here.
372
373	  If unsure, say N.
374
375config MMC_SDHCI_CADENCE
376	bool "SDHCI support for the Cadence SD/SDIO/eMMC controller"
377	depends on BLK && DM_MMC
378	depends on MMC_SDHCI
379	depends on OF_CONTROL
380	help
381	  This selects the Cadence SD/SDIO/eMMC driver.
382
383	  If you have a controller with this interface, say Y here.
384
385	  If unsure, say N.
386
387config MMC_SDHCI_KONA
388	bool "SDHCI support on Broadcom KONA platform"
389	depends on MMC_SDHCI
390	help
391	  This selects the Broadcom Kona Secure Digital Host Controller
392	  Interface(SDHCI) support.
393	  This is used in Broadcom mobile SoCs.
394
395	  If you have a controller with this interface, say Y here.
396
397config MMC_SDHCI_MSM
398	bool "Qualcomm SDHCI controller"
399	depends on BLK && DM_MMC
400	depends on MMC_SDHCI
401	help
402	  Enables support for SDHCI 2.0 controller present on some Qualcomm
403          Snapdragon devices. This device is compatible with eMMC v4.5 and
404          SD 3.0 specifications. Both SD and eMMC devices are supported.
405	  Card-detect gpios are not supported.
406
407config MMC_SDHCI_MV
408	bool "SDHCI support on Marvell platform"
409	depends on ARCH_MVEBU
410	depends on MMC_SDHCI
411	help
412	  This selects the Secure Digital Host Controller Interface on
413	  Marvell platform.
414
415	  If you have a controller with this interface, say Y here.
416
417	  If unsure, say N.
418
419config MMC_SDHCI_PIC32
420	bool "Microchip PIC32 on-chip SDHCI support"
421	depends on DM_MMC && MACH_PIC32
422	depends on MMC_SDHCI
423	help
424	  Support for Microchip PIC32 SDHCI controller.
425
426config MMC_SDHCI_ROCKCHIP
427	bool "Arasan SDHCI controller for Rockchip support"
428	depends on ARCH_ROCKCHIP
429	depends on DM_MMC && BLK
430	depends on MMC_SDHCI
431	help
432	  Support for Arasan SDHCI host controller on Rockchip ARM SoCs platform
433
434config MMC_SDHCI_S5P
435	bool "SDHCI support on Samsung S5P SoC"
436	depends on MMC_SDHCI
437	help
438	  This selects the Secure Digital Host Controller Interface (SDHCI)
439	  on Samsung S5P SoCs.
440
441	  If you have a controller with this interface, say Y here.
442
443	  If unsure, say N.
444
445config MMC_SDHCI_SPEAR
446	bool "SDHCI support on ST SPEAr platform"
447	depends on MMC_SDHCI
448	help
449	  This selects the Secure Digital Host Controller Interface (SDHCI)
450	  often referrered to as the HSMMC block in some of the ST SPEAR range
451	  of SoC
452
453	  If you have a controller with this interface, say Y here.
454
455	  If unsure, say N.
456
457config MMC_SDHCI_STI
458	bool "SDHCI support for STMicroelectronics SoC"
459	depends on MMC_SDHCI && OF_CONTROL
460	help
461	  This selects the Secure Digital Host Controller Interface (SDHCI)
462	  on STMicroelectronics STiH410 SoC.
463
464config MMC_SDHCI_XENON
465	bool "SDHCI support for the Xenon SDHCI controller"
466	depends on MMC_SDHCI && DM_MMC && OF_CONTROL
467	help
468	  Support for Xenon SDHCI host controller on Marvell Armada 3700
469	  7k/8k ARM SoCs platforms
470
471	  If you have a controller with this interface, say Y here.
472
473	  If unsure, say N.
474
475config MMC_SDHCI_TANGIER
476	bool "Tangier SDHCI controller support"
477	depends on DM_MMC && BLK
478	depends on MMC_SDHCI
479	help
480	  This selects support for SDHCI controller on Tanginer
481	  SoC. Note that this controller does not sit on PCI bus and,
482	  hence, cannot be enumerated by standard PCI means.
483
484	  If you're using an Intel Tangier SoC (available on Intel
485	  Edison board), say Y here.
486
487	  If unsure, say N.
488
489config MMC_SDHCI_TEGRA
490	bool "SDHCI platform support for the Tegra SD/MMC Controller"
491	depends on TEGRA
492	default y
493	help
494	  This selects the Tegra SD/MMC controller. If you have a Tegra
495	  platform with SD or MMC devices, say Y here.
496
497	  If unsure, say N.
498
499config MMC_SDHCI_ZYNQ
500	bool "Arasan SDHCI controller support"
501	depends on ARCH_ZYNQ || ARCH_ZYNQMP
502	depends on DM_MMC && OF_CONTROL && BLK
503	depends on MMC_SDHCI
504	help
505	  Support for Arasan SDHCI host controller on Zynq/ZynqMP ARM SoCs platform
506
507config ZYNQ_SDHCI_MAX_FREQ
508	int "Set the maximum frequency of the controller"
509	depends on MMC_SDHCI_ZYNQ
510	help
511	  Set the maximum frequency of the controller.
512
513config ZYNQ_SDHCI_MIN_FREQ
514	int "Set the minimum frequency of the controller"
515	depends on MMC_SDHCI_ZYNQ
516	default 0
517	help
518	  Set the minimum frequency of the controller.
519
520config MMC_SUNXI
521	bool "Allwinner sunxi SD/MMC Host Controller support"
522	depends on ARCH_SUNXI && !UART0_PORT_F
523	default y
524	help
525	  This selects support for the SD/MMC Host Controller on
526	  Allwinner sunxi SoCs.
527
528config MMC_SUNXI_HAS_NEW_MODE
529	bool
530	depends on MMC_SUNXI
531
532config GENERIC_ATMEL_MCI
533	bool "Atmel Multimedia Card Interface support"
534	depends on DM_MMC && BLK && ARCH_AT91
535	help
536	  This enables support for Atmel High Speed Multimedia Card Interface
537	  (HSMCI), which supports the MultiMedia Card (MMC) Specification V4.3,
538	  the SD Memory Card Specification V2.0, the SDIO V2.0 specification
539	  and CE-ATA V1.1.
540
541config STM32_SDMMC2
542	bool "STMicroelectronics STM32H7 SD/MMC Host Controller support"
543	depends on DM_MMC && BLK && OF_CONTROL
544	help
545	  This selects support for the SD/MMC controller on STM32H7 SoCs.
546	  If you have a board based on such a SoC and with a SD/MMC slot,
547	  say Y or M here.
548
549config FTSDC010
550	bool "Ftsdc010 SD/MMC controller Support"
551	help
552	  This SD/MMC controller is present in Andestech SoCs which is based on Faraday IP.
553
554config FTSDC010_SDIO
555	bool "Support ftsdc010 sdio"
556	default n
557	depends on FTSDC010
558	help
559		This can enable ftsdc010 sdio function.
560
561endif
562
563config TEGRA124_MMC_DISABLE_EXT_LOOPBACK
564	bool "Disable external clock loopback"
565	depends on MMC_SDHCI_TEGRA && TEGRA124
566	help
567	  Disable the external clock loopback and use the internal one on SDMMC3
568	  as per the SDMMC_VENDOR_MISC_CNTRL_0 register's SDMMC_SPARE1 bits
569	  being set to 0xfffd according to the TRM.
570
571	  TODO(marcel.ziswiler@toradex.com): Move to device tree controlled
572	  approach once proper kernel integration made it mainline.
573
574config FSL_ESDHC
575	bool "Freescale/NXP eSDHC controller support"
576	help
577	  This selects support for the eSDHC (enhanced secure digital host
578	  controller) found on numerous Freescale/NXP SoCs.
579
580endmenu
581
582config SYS_FSL_ERRATUM_ESDHC111
583	bool
584
585config SYS_FSL_ERRATUM_ESDHC13
586	bool
587
588config SYS_FSL_ERRATUM_ESDHC135
589	bool
590
591config SYS_FSL_ERRATUM_ESDHC_A001
592	bool
593