0c57351f78
mmcsd:Remove CONFIG_ARCH_HAVE_SDIO_DELAYED_INVLDT stm32h7:sdmmc remove CONFIG_ARCH_HAVE_SDIO_DELAYED_INVLDT stm32f7:sdmmc remove CONFIG_ARCH_HAVE_SDIO_DELAYED_INVLDT stm32f7:sdmmc WRITE COMPLETE prevent false triggers stm32h7:sdmmc WRITE COMPLETE prevent false triggers While testing PR #2989 on the H7 I noticed that the cards were staying in 1-bit mode. The root cause was that the scr read path was using DMA without an invlidate. This was caused by CONFIG_ARCH_HAVE_SDIO_DELAYED_INVLDT, but the sdmmc driver, did not use the delayed invalidate nor would it work on 8 bytes. The driver fully supported dcache mgt on runt buffers, but the #ifdef CONFIG_ARCH_HAVE_SDIO_DELAYED_INVLDT blocked it. Reviewing the PR that added CONFIG_ARCH_HAVE_SDIO_DELAYED_INVLDT it may have been valid at the time. But after the dcache operations we fixed. It is not necessary and offers no benefit.
155 lines
3.6 KiB
Plaintext
155 lines
3.6 KiB
Plaintext
#
|
|
# For a description of the syntax of this configuration file,
|
|
# see the file kconfig-language.txt in the NuttX tools repository.
|
|
#
|
|
|
|
# MMC/SD-related platform capabilities
|
|
|
|
config ARCH_HAVE_SDIO
|
|
bool
|
|
default n
|
|
|
|
config ARCH_HAVE_SDIOWAIT_WRCOMPLETE
|
|
bool
|
|
default n
|
|
|
|
config ARCH_HAVE_SDIO_PREFLIGHT
|
|
bool
|
|
default n
|
|
|
|
menuconfig MMCSD
|
|
bool "MMC/SD Driver Support"
|
|
default n
|
|
---help---
|
|
Support for MMC/SD block drivers. MMC/SD block drivers based on
|
|
SPI and SDIO/MCI interfaces are supported. See include/nuttx/mmcsd.h
|
|
and include/nuttx/sdio.h for further information.
|
|
|
|
if MMCSD
|
|
|
|
config MMCSD_NSLOTS
|
|
int "Number of MMC/SD slots"
|
|
default 1
|
|
---help---
|
|
Number of MMC/SD slots supported by the
|
|
driver. Default is one.
|
|
|
|
config MMCSD_READONLY
|
|
bool "Disable MMC/SD write access"
|
|
default n
|
|
---help---
|
|
Provide read-only access. Default is
|
|
Read/Write
|
|
|
|
config MMCSD_MULTIBLOCK_DISABLE
|
|
bool "Disable MMC/SD multiblock transfer"
|
|
default n
|
|
---help---
|
|
Use only the single block transfer method.
|
|
This setting is used to work around buggy SDIO drivers that cannot handle
|
|
multiple block transfers.
|
|
|
|
config MMCSD_MMCSUPPORT
|
|
bool "MMC cards support"
|
|
default y
|
|
---help---
|
|
Enable support for MMC cards
|
|
|
|
config MMCSD_HAVE_CARDDETECT
|
|
bool "MMC/SD card detect pin"
|
|
default y
|
|
---help---
|
|
SDIO driver card present detection is supported.
|
|
|
|
config MMCSD_HAVE_WRITEPROTECT
|
|
bool "MMC/SD write protect pin"
|
|
default y
|
|
---help---
|
|
SDIO driver write protection detection is supported.
|
|
|
|
config MMCSD_SPI
|
|
bool "MMC/SD SPI transfer support"
|
|
default y
|
|
depends on SPI
|
|
|
|
if MMCSD_SPI
|
|
|
|
config MMCSD_SPICLOCK
|
|
int "MMC/SD maximum SPI clock"
|
|
default 20000000
|
|
depends on MMCSD_SPI
|
|
---help---
|
|
Maximum SPI clock to drive MMC/SD card.
|
|
Default is 20MHz.
|
|
|
|
config MMCSD_SPIMODE
|
|
int "MMC/SD SPI mode"
|
|
default 0
|
|
---help---
|
|
Should be mode 0. However, sometimes this is useful for experimenting.
|
|
|
|
config MMCSD_IDMODE_CLOCK
|
|
int "MMC/SD ID Mode SPI clock"
|
|
default 400000
|
|
depends on MMCSD_SPI
|
|
---help---
|
|
SPI clock identify MMC/SD card.
|
|
Should be 400KHz or less.
|
|
|
|
endif
|
|
|
|
config SDIO_DMA
|
|
bool
|
|
default n
|
|
|
|
config MMCSD_SDIO
|
|
bool "MMC/SD SDIO transfer support"
|
|
default n
|
|
depends on ARCH_HAVE_SDIO
|
|
|
|
if MMCSD_SDIO
|
|
|
|
config SDIO_MUXBUS
|
|
bool "SDIO bus share support"
|
|
default n
|
|
---help---
|
|
Set this SDIO interface if the SDIO interface
|
|
or hardware resources are shared with other drivers.
|
|
|
|
config MMCSD_SDIOWAIT_WRCOMPLETE
|
|
bool "Use D0 Busy to detect Write Complete"
|
|
default n
|
|
depends on ARCH_HAVE_SDIOWAIT_WRCOMPLETE
|
|
---help---
|
|
SDIO driver will use D0 Busy signalling to detect Write Complete.
|
|
This option when selected, will enable the MMCSD driver to use the
|
|
underlying SDIO drivers implementation of the SD specification's
|
|
D0 Busy signalling to detect Write Complete. This will avoid
|
|
potentially very long (600Ms+) busy waiting in the MMCSD driver.
|
|
|
|
To implement D0 Busy signalling, the underlying driver must
|
|
be capable of switching the D0 GPIO to be a rising edge sensitive
|
|
interrupt pin. It must then, condition that pin to detect the rising edge
|
|
on receipt of SDWAIT_WRCOMPLETE in the SDIO_WAITENABLE call and
|
|
return it back to regular SDIO mode, when either the ISR fires or pin is
|
|
found to be high in the SDIO_EVENTWAIT call.
|
|
|
|
config SDIO_WIDTH_D1_ONLY
|
|
bool "SDIO 1-bit transfer"
|
|
default n
|
|
---help---
|
|
Select 1-bit transfer mode. Default:
|
|
4-bit transfer mode.
|
|
|
|
config SDIO_BLOCKSETUP
|
|
bool "SDIO block setup"
|
|
default n
|
|
---help---
|
|
Some hardware needs to be informed of the selected blocksize and the
|
|
number of blocks. Others just work on the byte stream. This option
|
|
enables the block setup method in the SDIO vtable.
|
|
|
|
endif
|
|
|
|
endif # MMCSD
|