1menu "MMC Host controller Support"
2
3config MMC
4	bool "MMC/SD/SDIO card support"
5	default ARM || PPC || SANDBOX
6	select DM_MMC if DM
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_PWRSEQ
22	bool "HW reset support for eMMC"
23	depends on PWRSEQ
24	help
25	  Ths select Hardware reset support aka pwrseq-emmc for eMMC
26	  devices.
27
28config MMC_BROKEN_CD
29	bool "Poll for broken card detection case"
30	help
31	  If card  detection feature is broken, just poll to detect.
32
33config DM_MMC
34	bool "Enable MMC controllers using Driver Model"
35	depends on DM
36	select BLK
37	help
38	  This enables the MultiMediaCard (MMC) uclass which supports MMC and
39	  Secure Digital I/O (SDIO) cards. Both removable (SD, micro-SD, etc.)
40	  and non-removable (e.g. eMMC chip) devices are supported. These
41	  appear as block devices in U-Boot and can support filesystems such
42	  as EXT4 and FAT.
43
44config SPL_DM_MMC
45	bool "Enable MMC controllers using Driver Model in SPL"
46	depends on SPL_DM && DM_MMC
47	default n if ARCH_MVEBU && !MVEBU_SPL_BOOT_DEVICE_MMC
48	default y
49	help
50	  This enables the MultiMediaCard (MMC) uclass which supports MMC and
51	  Secure Digital I/O (SDIO) cards. Both removable (SD, micro-SD, etc.)
52	  and non-removable (e.g. eMMC chip) devices are supported. These
53	  appear as block devices in U-Boot and can support filesystems such
54	  as EXT4 and FAT.
55
56if MMC
57
58config MMC_SDHCI_ADMA_HELPERS
59	bool
60
61config MMC_SPI
62	bool "Support for SPI-based MMC controller"
63	depends on DM_MMC && DM_SPI
64	help
65	  This selects SPI-based MMC controllers.
66	  If you have an MMC controller on a SPI bus, say Y here.
67
68	  If unsure, say N.
69
70config MMC_SPI_CRC_ON
71	bool "Support CRC for SPI-based MMC controller"
72	depends on MMC_SPI
73	default y
74	help
75	  This enables CRC for SPI-based MMC controllers.
76
77	  If unsure, say N.
78
79config ARM_PL180_MMCI
80	bool "ARM AMBA Multimedia Card Interface and compatible support"
81	help
82	  This selects the ARM(R) AMBA(R) PrimeCell Multimedia Card
83	  Interface (PL180, PL181 and compatible) support.
84	  If you have an ARM(R) platform with a Multimedia Card slot,
85	  say Y or M here.
86
87config MMC_QUIRKS
88	bool "Enable quirks"
89	default y
90	help
91	  Some cards and hosts may sometimes behave unexpectedly (quirks).
92	  This option enable workarounds to handle those quirks. Some of them
93	  are enabled by default, other may require additional flags or are
94	  enabled by the host driver.
95
96config SYS_MMC_MAX_BLK_COUNT
97	int "Block count limit"
98	default 65535
99	help
100	  The block count limit on MMC based devices. We default to 65535 due
101	  to a 16bit register limit on some hardware.
102
103config MMC_HW_PARTITIONING
104	bool "Support for HW partitioning command(eMMC)"
105	default y
106	help
107	  This adds a command and an API to do hardware partitioning on eMMC
108	  devices.
109
110config SUPPORT_EMMC_RPMB
111	bool "Support eMMC replay protected memory block (RPMB)"
112	imply CMD_MMC_RPMB
113	help
114	  Enable support for reading, writing and programming the
115	  key for the Replay Protection Memory Block partition in eMMC.
116
117config SUPPORT_EMMC_BOOT
118	bool "Support some additional features of the eMMC boot partitions"
119	help
120	  Enable support for eMMC boot partitions. This also enables
121	  extensions within the mmc command.
122
123config MMC_IO_VOLTAGE
124	bool "Support IO voltage configuration"
125	help
126	  IO voltage configuration allows selecting the voltage level of the IO
127	  lines (not the level of main supply). This is required for UHS
128	  support. For eMMC this not mandatory, but not enabling this option may
129	  prevent the driver of using the faster modes.
130
131config SPL_MMC_IO_VOLTAGE
132	bool "Support IO voltage configuration in SPL"
133	depends on SPL_MMC
134	help
135	  IO voltage configuration allows selecting the voltage level of the IO
136	  lines (not the level of main supply). This is required for UHS
137	  support. For eMMC this not mandatory, but not enabling this option may
138	  prevent the driver of using the faster modes.
139
140config MMC_UHS_SUPPORT
141	bool "enable UHS support"
142	depends on MMC_IO_VOLTAGE
143	help
144	  The Ultra High Speed (UHS) bus is available on some SDHC and SDXC
145	  cards. The IO voltage must be switchable from 3.3v to 1.8v. The bus
146	  frequency can go up to 208MHz (SDR104)
147
148config SPL_MMC_UHS_SUPPORT
149	bool "enable UHS support in SPL"
150	depends on SPL_MMC_IO_VOLTAGE
151	help
152	  The Ultra High Speed (UHS) bus is available on some SDHC and SDXC
153	  cards. The IO voltage must be switchable from 3.3v to 1.8v. The bus
154	  frequency can go up to 208MHz (SDR104)
155
156config MMC_HS400_ES_SUPPORT
157	bool "enable HS400 Enhanced Strobe support"
158	help
159	  The HS400 Enhanced Strobe mode is support by some eMMC. The bus
160	  frequency is up to 200MHz. This mode does not tune the IO.
161
162config SPL_MMC_HS400_ES_SUPPORT
163	bool "enable HS400 Enhanced Strobe support in SPL"
164	depends on SPL_MMC
165	help
166	  The HS400 Enhanced Strobe mode is support by some eMMC. The bus
167	  frequency is up to 200MHz. This mode does not tune the IO.
168
169config MMC_HS400_SUPPORT
170	bool "enable HS400 support"
171	select MMC_HS200_SUPPORT
172	help
173	  The HS400 mode is support by some eMMC. The bus frequency is up to
174	  200MHz. This mode requires tuning the IO.
175
176config SPL_MMC_HS400_SUPPORT
177	bool "enable HS400 support in SPL"
178	depends on SPL_MMC
179	select SPL_MMC_HS200_SUPPORT
180	help
181	  The HS400 mode is support by some eMMC. The bus frequency is up to
182	  200MHz. This mode requires tuning the IO.
183
184config MMC_HS200_SUPPORT
185	bool "enable HS200 support"
186	help
187	  The HS200 mode is support by some eMMC. The bus frequency is up to
188	  200MHz. This mode requires tuning the IO.
189
190config SPL_MMC_HS200_SUPPORT
191	bool "enable HS200 support in SPL"
192	depends on SPL_MMC
193	help
194	  The HS200 mode is support by some eMMC. The bus frequency is up to
195	  200MHz. This mode requires tuning the IO.
196
197config MMC_VERBOSE
198	bool "Output more information about the MMC"
199	default y
200	help
201	  Enable the output of more information about the card such as the
202	  operating mode.
203
204config MMC_TRACE
205	bool "MMC debugging"
206	help
207	  This is an option for use by developer. Enable MMC core debugging.
208
209	  If you need to see the MMC core message, say Y.
210
211config MMC_DAVINCI
212	bool "TI DAVINCI Multimedia Card Interface support"
213	depends on ARCH_DAVINCI
214	default y
215	help
216	  This selects the TI DAVINCI Multimedia card Interface.
217	  If you have an DAVINCI board with a Multimedia Card slot,
218	  say Y here.  If unsure, say N.
219
220config MMC_DW
221	bool "Synopsys DesignWare Memory Card Interface"
222	select BOUNCE_BUFFER
223	help
224	  This selects support for the Synopsys DesignWare Mobile Storage IP
225	  block, this provides host support for SD and MMC interfaces, in both
226	  PIO, internal DMA mode and external DMA mode.
227
228config MMC_DW_CORTINA
229	bool "Cortina specific extensions for Synopsys DW Memory Card Interface"
230	depends on DM_MMC
231	depends on MMC_DW
232	depends on BLK
233	help
234	  This selects support for Cortina SoC specific extensions to the
235	  Synopsys DesignWare Memory Card Interface driver. Select this option
236	  for platforms based on Cortina CAxxxx Soc's.
237
238config MMC_DW_EXYNOS
239	bool "Exynos specific extensions for Synopsys DW Memory Card Interface"
240	depends on ARCH_EXYNOS
241	depends on MMC_DW
242	default y
243	help
244	  This selects support for Samsung Exynos SoC specific extensions to the
245	  Synopsys DesignWare Memory Card Interface driver. Select this option
246	  for platforms based on Exynos4 and Exynos5 SoC's.
247
248config MMC_DW_K3
249	bool "K3 specific extensions for Synopsys DW Memory Card Interface"
250	depends on MMC_DW
251	help
252	  This selects support for Hisilicon K3 SoC specific extensions to the
253	  Synopsys DesignWare Memory Card Interface driver. Select this option
254	  for platforms based on Hisilicon K3 SoC's.
255
256config MMC_DW_ROCKCHIP
257	bool "Rockchip SD/MMC controller support"
258	depends on DM_MMC && OF_CONTROL
259	depends on MMC_DW
260	help
261	  This enables support for the Rockchip SD/MMM controller, which is
262	  based on Designware IP. The device is compatible with at least
263	  SD 3.0, SDIO 3.0 and MMC 4.5 and supports common eMMC chips as well
264	  as removeable SD and micro-SD cards.
265
266config MMC_DW_SOCFPGA
267	bool "SOCFPGA specific extensions for Synopsys DW Memory Card Interface"
268	depends on ARCH_SOCFPGA
269	depends on MMC_DW
270	default y
271	help
272	  This selects support for Altera SOCFPGA specific extensions to the
273	  Synopsys DesignWare Memory Card Interface driver. Select this option
274	  for platforms based on Altera SOCFPGA.
275
276config MMC_DW_SNPS
277	bool "Extensions for DW Memory Card Interface used in Synopsys ARC devboards"
278	depends on MMC_DW
279	depends on DM_MMC
280	depends on OF_CONTROL
281	depends on CLK
282	help
283	  This selects support for Synopsys DesignWare Memory Card Interface driver
284	  extensions used in various Synopsys ARC devboards.
285
286config NEXELL_DWMMC
287	bool "Nexell SD/MMC controller support"
288	depends on ARCH_NEXELL
289	depends on MMC_DW
290	depends on DM_MMC
291	depends on PINCTRL_NEXELL
292	default y
293
294config MMC_MESON_GX
295	bool "Meson GX EMMC controller support"
296	depends on DM_MMC && BLK && ARCH_MESON
297	help
298	 Support for EMMC host controller on Meson GX ARM SoCs platform (S905)
299
300config MMC_MXC
301	bool "Freescale i.MX21/27/31 or MPC512x Multimedia Card support"
302	help
303	  This selects the Freescale i.MX21, i.MX27, i.MX31 or MPC512x
304	  Multimedia Card Interface. If you have an i.MX or MPC512x platform
305	  with a Multimedia Card slot, say Y here.
306
307	  If unsure, say N.
308
309config MMC_OWL
310	bool "Actions OWL Multimedia Card Interface support"
311	depends on ARCH_OWL && DM_MMC && BLK
312	help
313	  This selects the OWL SD/MMC host controller found on board
314	  based on Actions S700/S900 SoC.
315
316config MMC_MXS
317	bool "Freescale MXS Multimedia Card Interface support"
318	depends on MX23 || MX28 || MX6 || MX7
319	select BOUNCE_BUFFER
320	select APBH_DMA
321	select APBH_DMA_BURST if ARCH_MX6 || ARCH_MX7
322	select APBH_DMA_BURST8 if ARCH_MX6 || ARCH_MX7
323	help
324	  This selects the Freescale SSP MMC controller found on MXS based
325	  platforms like mx23/28.
326
327	  If unsure, say N.
328
329config MMC_PCI
330	bool "Support for MMC controllers on PCI"
331	depends on MMC_SDHCI
332	help
333	  This selects PCI-based MMC controllers.
334	  If you have an MMC controller on a PCI bus, say Y here.
335
336config MMC_OCTEONTX
337	bool "Marvell Octeon Multimedia Card Interface support"
338	depends on (ARCH_OCTEON || ARCH_OCTEONTX || ARCH_OCTEONTX2)
339	depends on DM_MMC
340	help
341	  This selects the Octeon Multimedia card Interface.
342	  If you have an OcteonTX/TX2 or MIPS Octeon board with a
343	  Multimedia Card slot, say Y here.
344
345	  If unsure, say N.
346
347config MVEBU_MMC
348	bool "Kirkwood MMC controller support"
349	depends on DM_MMC && BLK && ARCH_KIRKWOOD
350	help
351	  Support for MMC host controller on Kirkwood SoCs.
352	  If you are on a Kirkwood architecture, say Y here.
353
354	  If unsure, say N.
355
356config MMC_OMAP_HS
357	bool "TI OMAP High Speed Multimedia Card Interface support"
358	select DM_REGULATOR_PBIAS if DM_MMC && DM_REGULATOR
359	select DM_REGULATOR_PBIAS if DM_MMC && DM_REGULATOR
360	help
361	  This selects the TI OMAP High Speed Multimedia card Interface.
362	  If you have an omap2plus board with a Multimedia Card slot,
363	  say Y here.
364
365	  If unsure, say N.
366
367config MMC_OMAP_HS_ADMA
368	bool "ADMA support for OMAP HS MMC"
369	depends on MMC_OMAP_HS && !OMAP34XX
370	default y if !AM33XX
371	help
372	  This enables support for the ADMA2 controller (SDA3.00 Part A2 DMA
373	  controller). If supported by the hardware, selecting this option will
374	  increase performances.
375
376config MMC_OMAP36XX_PINS
377	bool "Enable MMC1 on OMAP36xx/37xx"
378	depends on OMAP34XX && MMC_OMAP_HS
379	help
380	  This enables extended-drain in the MMC/SD/SDIO1I/O and
381	  GPIO-associated I/O cells (gpio_126, gpio_127, and gpio_129)
382	  specific to the OMAP36xx/37xx using MMC1
383
384	  If you have a controller with this interface, say Y here.
385
386	  If unsure, say N.
387
388config HSMMC2_8BIT
389	bool "Enable 8-bit interface for eMMC (interface #2)"
390	depends on MMC_OMAP_HS && (OMAP44XX || OMAP54XX || DRA7XX || AM33XX || \
391		AM43XX || ARCH_KEYSTONE)
392
393config SH_SDHI
394	bool "SuperH/Renesas ARM SoCs on-chip SDHI host controller support"
395	depends on ARCH_RMOBILE
396	help
397	  Support for the on-chip SDHI host controller on SuperH/Renesas ARM SoCs platform
398
399config SH_MMCIF
400	bool "SuperH/Renesas ARM SoCs on-chip MMCIF host controller support"
401	depends on ARCH_RMOBILE || SH
402	help
403	  Support for the on-chip MMCIF host controller on SuperH/Renesas ARM SoCs platform
404
405config MMC_UNIPHIER
406	bool "UniPhier SD/MMC Host Controller support"
407	depends on ARCH_UNIPHIER
408	depends on BLK && DM_MMC
409	depends on OF_CONTROL
410	help
411	  This selects support for the Matsushita SD/MMC Host Controller on
412	  SocioNext UniPhier SoCs.
413
414config RENESAS_SDHI
415	bool "Renesas R-Car SD/MMC Host Controller support"
416	depends on ARCH_RMOBILE
417	depends on BLK && DM_MMC
418	depends on OF_CONTROL
419	select BOUNCE_BUFFER
420	help
421	  This selects support for the Matsushita SD/MMC Host Controller on
422	  Renesas R-Car SoCs.
423
424config MMC_BCM2835
425	bool "BCM2835 family custom SD/MMC Host Controller support"
426	depends on ARCH_BCM283X
427	depends on BLK && DM_MMC
428	depends on OF_CONTROL
429	default y
430	help
431	  This selects support for the custom SD host controller in the BCM2835
432	  family of devices.
433
434	  If you have a BCM2835 platform with SD or MMC devices, say Y here.
435
436	  If unsure, say N.
437
438config JZ47XX_MMC
439	bool "Ingenic JZ47xx SD/MMC Host Controller support"
440	depends on ARCH_JZ47XX
441	help
442	  This selects support for the SD Card Controller on Ingenic JZ47xx SoCs.
443
444config MMC_SANDBOX
445	bool "Sandbox MMC support"
446	depends on SANDBOX
447	depends on BLK && DM_MMC && OF_CONTROL
448	help
449	  This select a dummy sandbox MMC driver. At present this does nothing
450	  other than allow sandbox to be build with MMC support. This
451	  improves build coverage for sandbox and makes it easier to detect
452	  MMC build errors with sandbox.
453
454config MMC_SDHCI
455	bool "Secure Digital Host Controller Interface support"
456	help
457	  This selects the generic Secure Digital Host Controller Interface.
458	  It is used by manufacturers such as Texas Instruments(R), Ricoh(R)
459	  and Toshiba(R). Most controllers found in laptops are of this type.
460
461	  If you have a controller with this interface, say Y here.
462
463	  If unsure, say N.
464
465config MMC_SDHCI_IO_ACCESSORS
466	bool
467	depends on MMC_SDHCI
468	help
469	  This is silent Kconfig symbol that is selected by the drivers that
470	  need to overwrite SDHCI IO memory accessors.
471
472config MMC_SDHCI_SDMA
473	bool "Support SDHCI SDMA"
474	depends on MMC_SDHCI
475	help
476	  This enables support for the SDMA (Single Operation DMA) defined
477	  in the SD Host Controller Standard Specification Version 1.00 .
478
479config SPL_MMC_SDHCI_SDMA
480	bool "Support SDHCI SDMA in SPL"
481	depends on SPL_MMC && MMC_SDHCI
482	default y if MMC_SDHCI_SDMA
483	help
484	  This enables support for the SDMA (Single Operation DMA) defined
485	  in the SD Host Controller Standard Specification Version 1.00 in SPL.
486
487config MMC_SDHCI_ADMA
488	bool "Support SDHCI ADMA2"
489	depends on MMC_SDHCI
490	select MMC_SDHCI_ADMA_HELPERS
491	help
492	  This enables support for the ADMA (Advanced DMA) defined
493	  in the SD Host Controller Standard Specification Version 3.00
494
495config SPL_MMC_SDHCI_ADMA
496	bool "Support SDHCI ADMA2 in SPL"
497	depends on SPL_MMC && MMC_SDHCI
498	select MMC_SDHCI_ADMA_HELPERS
499	help
500	  This enables support for the ADMA (Advanced DMA) defined
501	  in the SD Host Controller Standard Specification Version 3.00 in SPL.
502
503config FIXED_SDHCI_ALIGNED_BUFFER
504	hex "SDRAM address for fixed buffer"
505	depends on SPL && MVEBU_SPL_BOOT_DEVICE_MMC
506	default 0x00180000
507	help
508	  On the Marvell Armada 38x when the SPL runs it located in internal
509	  SRAM which is the L2 cache locked to memory. When the MMC buffers
510	  are located on the stack (or bss), the SDIO controller (SDHCI) can't
511	  write into this L2 cache memory.
512
513	  This specifies the address of a fixed buffer located in SDRAM that
514	  will be used for all SDHCI transfers in the SPL.
515
516config MMC_SDHCI_ASPEED
517	bool "Aspeed SDHCI controller"
518	depends on ARCH_ASPEED
519	depends on DM_MMC
520	depends on MMC_SDHCI
521	select MISC
522	help
523	  Enables support for the Aspeed SDHCI 2.0 controller present on Aspeed
524	  SoCs. This device is compatible with SD 3.0 and/or MMC 4.3
525	  specifications. On the AST2600, the device is also compatible with
526	  MMC 5.1 and eMMC 3.0.
527
528config MMC_SDHCI_ATMEL
529	bool "Atmel SDHCI controller support"
530	depends on ARCH_AT91
531	depends on DM_MMC && BLK && ARCH_AT91
532	depends on MMC_SDHCI
533	help
534	  This enables support for the Atmel SDHCI controller, which supports
535	  the embedded MultiMedia Card (e.MMC) Specification V4.51, the SD
536	  Memory Card Specification V3.0, and the SDIO V3.0 specification.
537	  It is compliant with the SD Host Controller Standard V3.0
538	  specification.
539
540config MMC_SDHCI_BCM2835
541	tristate "SDHCI support for the BCM2835 SD/MMC Controller"
542	depends on ARCH_BCM283X
543	depends on MMC_SDHCI
544	select MMC_SDHCI_IO_ACCESSORS
545	help
546	  This selects the BCM2835 SD/MMC controller.
547
548	  If you have a BCM2835 platform with SD or MMC devices,
549	  say Y here.
550
551	  If unsure, say N.
552
553config MMC_SDHCI_BCMSTB
554	tristate "SDHCI support for the BCMSTB SD/MMC Controller"
555	depends on MMC_SDHCI
556	help
557	  This selects the Broadcom set-top box SD/MMC controller.
558
559	  If you have a BCMSTB platform with SD or MMC devices,
560	  say Y here.
561
562	  If unsure, say N.
563
564config MMC_SDHCI_CADENCE
565	bool "SDHCI support for the Cadence SD/SDIO/eMMC controller"
566	depends on BLK && DM_MMC
567	depends on MMC_SDHCI
568	depends on OF_CONTROL
569	help
570	  This selects the Cadence SD/SDIO/eMMC driver.
571
572	  If you have a controller with this interface, say Y here.
573
574	  If unsure, say N.
575
576config MMC_SDHCI_AM654
577	bool "SDHCI Controller on TI's Am654 devices"
578	depends on ARCH_K3
579	depends on MMC_SDHCI
580	depends on DM_MMC && OF_CONTROL && BLK
581	depends on REGMAP
582	select MMC_SDHCI_IO_ACCESSORS
583	help
584	  Support for Secure Digital Host Controller Interface (SDHCI)
585	  controllers present on TI's AM654 SOCs.
586
587config MMC_SDHCI_IPROC
588	bool "SDHCI support for the iProc SD/MMC Controller"
589	depends on MMC_SDHCI
590	help
591	  This selects the iProc SD/MMC controller.
592
593	  If you have a Broadcom IPROC platform with SD or MMC devices,
594	  say Y or M here.
595
596	  If unsure, say N.
597
598config MMC_SDHCI_F_SDH30
599	bool "SDHCI support for Fujitsu Semiconductor/Socionext F_SDH30"
600	depends on BLK && DM_MMC
601	depends on MMC_SDHCI
602	help
603	  This selects the Secure Digital Host Controller Interface (SDHCI)
604	  Needed by some Fujitsu/Socionext SoC for MMC / SD / SDIO support.
605	  If you have a controller with this interface, say Y or M here.
606	  If unsure, say N.
607
608config MMC_SDHCI_KONA
609	bool "SDHCI support on Broadcom KONA platform"
610	depends on MMC_SDHCI
611	help
612	  This selects the Broadcom Kona Secure Digital Host Controller
613	  Interface(SDHCI) support.
614	  This is used in Broadcom mobile SoCs.
615
616	  If you have a controller with this interface, say Y here.
617
618config MMC_SDHCI_MSM
619	bool "Qualcomm SDHCI controller"
620	depends on BLK && DM_MMC
621	depends on MMC_SDHCI
622	help
623	  Enables support for SDHCI 2.0 controller present on some Qualcomm
624          Snapdragon devices. This device is compatible with eMMC v4.5 and
625          SD 3.0 specifications. Both SD and eMMC devices are supported.
626	  Card-detect gpios are not supported.
627
628config MMC_SDHCI_MV
629	bool "SDHCI support on Marvell platform"
630	depends on ARCH_MVEBU
631	depends on MMC_SDHCI
632	depends on DM_MMC
633	help
634	  This selects the Secure Digital Host Controller Interface on
635	  Marvell platform.
636
637	  If you have a controller with this interface, say Y here.
638
639	  If unsure, say N.
640
641config MMC_SDHCI_NPCM
642	bool "SDHCI support on Nuvoton NPCM device"
643	depends on MMC_SDHCI
644	depends on DM_MMC
645	help
646	  This selects the Secure Digital Host Controller Interface (SDHCI)
647	  on Nuvoton NPCM device.
648
649	  If you have a controller with this interface, say Y here.
650
651	  If unsure, say N.
652
653config MMC_SDHCI_PIC32
654	bool "Microchip PIC32 on-chip SDHCI support"
655	depends on DM_MMC && MACH_PIC32
656	depends on MMC_SDHCI
657	help
658	  Support for Microchip PIC32 SDHCI controller.
659
660config MMC_SDHCI_ROCKCHIP
661	bool "Arasan SDHCI controller for Rockchip support"
662	depends on ARCH_ROCKCHIP
663	depends on DM_MMC && BLK
664	depends on MMC_SDHCI
665	help
666	  Support for Arasan SDHCI host controller on Rockchip ARM SoCs platform
667
668config MMC_SDHCI_S5P
669	bool "SDHCI support on Samsung S5P SoC"
670	depends on MMC_SDHCI
671	help
672	  This selects the Secure Digital Host Controller Interface (SDHCI)
673	  on Samsung S5P SoCs.
674
675	  If you have a controller with this interface, say Y here.
676
677	  If unsure, say N.
678
679config MMC_SDHCI_STI
680	bool "SDHCI support for STMicroelectronics SoC"
681	depends on MMC_SDHCI && OF_CONTROL
682	help
683	  This selects the Secure Digital Host Controller Interface (SDHCI)
684	  on STMicroelectronics STiH410 SoC.
685
686config MMC_SDHCI_XENON
687	bool "SDHCI support for the Xenon SDHCI controller"
688	depends on MMC_SDHCI && DM_MMC && OF_CONTROL
689	help
690	  Support for Xenon SDHCI host controller on Marvell Armada 3700
691	  7k/8k ARM SoCs platforms
692
693	  If you have a controller with this interface, say Y here.
694
695	  If unsure, say N.
696
697config MMC_SDHCI_TANGIER
698	bool "Tangier SDHCI controller support"
699	depends on DM_MMC && BLK
700	depends on MMC_SDHCI
701	help
702	  This selects support for SDHCI controller on Tanginer
703	  SoC. Note that this controller does not sit on PCI bus and,
704	  hence, cannot be enumerated by standard PCI means.
705
706	  If you're using an Intel Tangier SoC (available on Intel
707	  Edison board), say Y here.
708
709	  If unsure, say N.
710
711config MMC_SDHCI_TEGRA
712	bool "SDHCI platform support for the Tegra SD/MMC Controller"
713	depends on ARCH_TEGRA
714	select BOUNCE_BUFFER
715	default y
716	help
717	  This selects the Tegra SD/MMC controller. If you have a Tegra
718	  platform with SD or MMC devices, say Y here.
719
720	  If unsure, say N.
721
722config TEGRA124_MMC_DISABLE_EXT_LOOPBACK
723	bool "Disable external clock loopback"
724	depends on MMC_SDHCI_TEGRA && TEGRA124
725	help
726	  Disable the external clock loopback and use the internal one on SDMMC3
727	  as per the SDMMC_VENDOR_MISC_CNTRL_0 register's SDMMC_SPARE1 bits
728	  being set to 0xfffd according to the TRM.
729
730	  TODO(marcel.ziswiler@toradex.com): Move to device tree controlled
731	  approach once proper kernel integration made it mainline.
732
733config MMC_SDHCI_ZYNQ
734	bool "Arasan SDHCI controller support"
735	depends on DM_MMC && OF_CONTROL && BLK
736	depends on MMC_SDHCI
737	help
738	  Support for Arasan SDHCI host controller on Zynq/ZynqMP ARM SoCs platform
739
740config ZYNQ_SDHCI_MAX_FREQ
741	int "Set the maximum frequency of the controller"
742	depends on MMC_SDHCI_ZYNQ
743	help
744	  Set the maximum frequency of the controller.
745
746config ZYNQ_SDHCI_MIN_FREQ
747	int "Set the minimum frequency of the controller"
748	depends on MMC_SDHCI_ZYNQ
749	default 0
750	help
751	  Set the minimum frequency of the controller.
752
753config ZYNQ_HISPD_BROKEN
754	bool "High speed broken for Zynq SDHCI controller"
755	depends on MMC_SDHCI_ZYNQ
756	help
757	  Set if high speed mode is broken.
758
759config MMC_SUNXI
760	bool "Allwinner sunxi SD/MMC Host Controller support"
761	depends on ARCH_SUNXI
762	default y
763	help
764	  This selects support for the SD/MMC Host Controller on
765	  Allwinner sunxi SoCs.
766
767config MMC_SUNXI_HAS_NEW_MODE
768	bool
769	depends on MMC_SUNXI
770
771config MMC_SUNXI_HAS_MODE_SWITCH
772	bool
773	depends on MMC_SUNXI
774
775config MMC_PITON
776	bool "MMC support for OpenPiton SoC"
777	depends on DM_MMC && BLK
778	help
779	  This selects support for the SD host controller on OpenPiton SoC.
780	  Note that this SD controller directly exposes the contents of the
781	  SD card as memory mapped, so there is no manual configuration
782	  required
783
784config GENERIC_ATMEL_MCI
785	bool "Atmel Multimedia Card Interface support"
786	depends on DM_MMC && BLK && ARCH_AT91
787	help
788	  This enables support for Atmel High Speed Multimedia Card Interface
789	  (HSMCI), which supports the MultiMedia Card (MMC) Specification V4.3,
790	  the SD Memory Card Specification V2.0, the SDIO V2.0 specification
791	  and CE-ATA V1.1.
792
793config STM32_SDMMC2
794	bool "STMicroelectronics STM32H7 SD/MMC Host Controller support"
795	depends on DM_MMC && BLK && OF_CONTROL
796	help
797	  This selects support for the SD/MMC controller on STM32H7 SoCs.
798	  If you have a board based on such a SoC and with a SD/MMC slot,
799	  say Y or M here.
800
801config FTSDC010
802	bool "Ftsdc010 SD/MMC controller Support"
803	help
804	  This SD/MMC controller is present in Andestech SoCs which is based on Faraday IP.
805
806config FTSDC010_SDIO
807	bool "Support ftsdc010 sdio"
808	depends on FTSDC010
809	help
810		This can enable ftsdc010 sdio function.
811
812config MMC_MTK
813	bool "MediaTek SD/MMC Card Interface support"
814	depends on ARCH_MEDIATEK || ARCH_MTMIPS
815	depends on BLK && DM_MMC
816	depends on OF_CONTROL
817	help
818	  This selects the MediaTek(R) Secure digital and Multimedia card Interface.
819	  If you have a machine with a integrated SD/MMC card reader, say Y or M here.
820	  This is needed if support for any SD/SDIO/MMC devices is required.
821	  If unsure, say N.
822
823endif
824
825config FSL_SDHC_V2_3
826	bool
827
828config FSL_ESDHC
829	bool "Freescale/NXP eSDHC controller support"
830	select FSL_SDHC_V2_3 if ARCH_P1010 || ARCH_BSC9131 || ARCH_BSC9132 \
831		|| ARCH_C29X
832	help
833	  This selects support for the eSDHC (Enhanced Secure Digital Host
834	  Controller) found on numerous Freescale/NXP SoCs.
835
836config FSL_ESDHC_SUPPORT_ADMA2
837	bool "enable ADMA2 support"
838	depends on FSL_ESDHC
839	select MMC_SDHCI_ADMA_HELPERS
840	help
841	  This enables support for the ADMA2 transfer mode. If supported by the
842	  eSDHC it will allow 64bit DMA addresses.
843
844config FSL_ESDHC_33V_IO_RELIABILITY_WORKAROUND
845	bool "enable eSDHC workaround for 3.3v IO reliability issue"
846	depends on FSL_ESDHC && DM_MMC
847	help
848	  When eSDHC operates at 3.3v, damage can accumulate in an internal
849	  level shifter at a higher than expected rate. The faster the interface
850	  runs, the more damage accumulates. This issue now is found on LX2160A
851	  eSDHC1 for only SD card. The hardware workaround is recommended to use
852	  an on-board level shifter that is 1.8v on SoC side and 3.3v on SD card
853	  side. For boards without hardware workaround, this option could be
854	  enabled, ensuring 1.8v IO voltage and disabling eSDHC if no card.
855	  This option assumes no hotplug, and u-boot has to make all the way to
856	  to linux to use 1.8v UHS-I speed mode if has card.
857
858config FSL_ESDHC_VS33_NOT_SUPPORT
859	bool "3.3V power supply not supported"
860	depends on FSL_ESDHC
861	help
862	  For eSDHC, power supply is through peripheral circuit. 3.3V support is
863	  common. Select this if 3.3V power supply not supported.
864
865config SYS_FSL_ESDHC_DEFAULT_BUS_WIDTH
866	int
867	depends on FSL_ESDHC
868	default 1
869
870config ESDHC_DETECT_QUIRK
871	bool "QIXIS-based eSDHC quirk detection"
872	depends on FSL_ESDHC && FSL_QIXIS
873
874config FSL_ESDHC_IMX
875	bool "Freescale/NXP i.MX eSDHC controller support"
876	help
877	  This selects support for the i.MX eSDHC (Enhanced Secure Digital Host
878	  Controller) found on numerous Freescale/NXP SoCs.
879
880config SYS_FSL_ESDHC_HAS_DDR_MODE
881	bool "i.MX eSDHC controller supports DDR mode"
882	depends on FSL_ESDHC_IMX
883
884config FSL_USDHC
885	bool "Freescale/NXP i.MX uSDHC controller support"
886	depends on MX6 || MX7 ||ARCH_MX7ULP || IMX8 || IMX8M || IMX8ULP || IMX9 || IMXRT
887	select FSL_ESDHC_IMX
888	help
889	  This enables the Ultra Secured Digital Host Controller enhancements
890
891config FSL_ESDHC_PIN_MUX
892	bool "Perform esdhc device-tree fixup"
893	depends on (FSL_ESDHC || FSL_ESDHC_IMX) && OF_LIBFDT
894
895endmenu
896
897config SYS_FSL_ERRATUM_ESDHC111
898	bool
899
900config SYS_FSL_ERRATUM_ESDHC13
901	bool
902
903config SYS_FSL_ERRATUM_ESDHC135
904	bool
905
906config SYS_FSL_ERRATUM_ESDHC_A001
907	bool
908
909config SYS_FSL_ERRATUM_A011334
910	bool
911
912config SYS_FSL_ESDHC_UNRELIABLE_PULSE_DETECTION_WORKAROUND
913	bool
914