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