Commit graph

67 commits

Author SHA1 Message Date
Xiang Xiao
323d8d9547 mmcsd: Add FAR to the pointer argument
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2022-05-13 15:41:27 +03:00
Xiang Xiao
679bc88cab drivers/sdio: Call SDIO_LOCK before and after the transaction
follow the same behaviour in drivers/mmcsd/mmcsd_sdio.c

Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2022-05-13 15:41:27 +03:00
Xiang Xiao
fc030d846c mmcsd: Move SDIO_GOTEXTCSD after SDIO_DMASENDSETUP
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2022-04-01 20:54:57 +03:00
anjianjun
f95d13b3a1 mmcsd: Add gotextcsd callback to sdio_dev_s
so the driver implementation could get critical EXTCSD info

Signed-off-by: anjianjun <anjianjun@xiaomi.com>
2022-04-01 20:54:57 +03:00
Richard Tucker
163e3fd93c driver/mmcsd: add option to support SD/MMC PHYs that only run in 4-bit mode 2022-03-30 02:35:27 +08:00
Xiang Xiao
828f04f0e5 sdio: Move sdio utils functions to drivers/mmcsd
so all sdio client driver can reuse them

Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2022-01-04 17:44:24 +01:00
Alexander Lunev
6bdc737f5c bcm43xxx: supported high-speed timing mode with a clock rate up to 50MHz 2021-10-18 21:58:03 -05:00
Xiang Xiao
643e34efde sdio: Update the defintion to the latest spec
and correct the comment:
https://www.sdcard.org/downloads/pls/
https://www.jedec.org/standards-documents/technology-focus-areas/flash-memory-ssds-ufs-emmc/e-mmc

Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2021-10-17 06:29:13 -03:00
Alexander Lunev
f7c8875fd7 sdio,stm32h7: fixed an issue with not starting IDMA data transfer in case of IO_RW_EXTENDED command (CMD53);
corrected setting SDMMC_DCTRL.DTMODE field for block data transfers ending on block count
and for block data transfers ending with STOP_TRANSMISSION command;
stm32_sdio: added more debug messages
2021-06-21 02:47:46 -05:00
Anthony Merlino
b21cb3308a Fixes race condition in event wait logic of SDMMC driver.
This change makes it so that the timeout is set as part of the SDIO_WAITENABLE call instead of the SDIO_EVENTWAIT call. By doing so, you eliminate all opportunity for a race condition.

stm32h7:sdmmc Check if busy ended early
2021-04-05 23:08:45 -05:00
David Sidrane
0c57351f78 mmcsd:Stuck in 1-bit mode, Removed CONFIG_ARCH_HAVE_SDIO_DELAYED_INVLDT
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.
2021-03-12 16:42:16 -03:00
Xiang Xiao
d3c4879113 Fix nxstyle warning
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2020-04-13 12:01:39 -06:00
Gregory Nutt
a6e69a82ad SDIO: Make interface field names conform to standard.
The SDIO interface structure includes fields with names like recvR1 and others.  These cause "Mixed case identifier" errors from nxstyle in all places they are uses.
This change performs a mass substition of recvR with recv_r to correct this coding standard violation.
2020-04-04 18:15:25 +01:00
Xiang Xiao
cde88cabcc Run codespell -w with the latest dictonary again
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2020-02-23 22:27:46 +01:00
Xiang Xiao
bd4e8e19d3 Run codespell -w against all files
and fix the wrong correction
2020-02-22 14:45:07 -06:00
Ivan Ucherdzhiev
19c070e0d1 drivers/mmcsd: Added support for MMC(eMMC) bigger than 2 GB (Tested with IMXRT1050EVKB and samsung eMMC 16GB). arch/arm/src/imxrt: IMXRT uSDHC driver cmd line reset logic modified. 2019-08-21 09:23:29 -06:00
Dave Marples
970295d0fe i.MXRT USDHC: This change completes SDIO support for IMXRT, and also adds support for WiFi using the AP6212A module based on Simon Piriou's rather excellent work. The patch should also address DavidS's concern about width setting for USDHC1 & 2.
Testing of the WiFi is minimal so far but functionality is proven. I'm specifically not happy that the driver doesn't recover elegantly from a DMA data checksum failure, but that is an issue that can be dealt with in due course ... I'm trying to get the rest of the interfaces fleshed out and the hardware proven so it can go for pre-production build. I _think_ there's only Bluetooth and USB-device left to implement now.
2019-07-28 16:20:33 -06:00
Bob Feretich
c6851201c0 This commit adds a new function arch_invalidate_dcache_by_addr(). It takes the same parameters as arch_invalidate_dcache(), but performs invalidation of only the lines in cache that need to be invalidated. This new function could be used as a a direct replacement for arch_invalidate_dcache().
The user of this invalidation are mmcsd_sdio currently.  The mmcsd_sdio driver makes calls for dcache invalidation through the chip specific architecture function SDIO_DMARECVSETUP(). I changed the arch/arm/stm32f7 chips to use arch_invalidate_dcache_by_addr() instead of arch_invalidate_dcache().

This commit includes additional changes to mmcsd_sdio.c.  I created SDIO_DMADELYDINVLDT() (DMA delayed invalidate) to invalidate store-into mode dcaches after the DMA transfer.  I have been using SDIO_DMADELYDINVLDT() for several weeks now and it has fixed the problems that I previously reported regarding non-cache aligned buffer invalidation errors (for my store-through dcache). However, it does not permit use of unaligned DMA buffers for store-into mode dcaches.

SDIO_DMADELYDINVLDT() is a NoOp unless the chip specific Kconfig file selects CONFIG_ARCH_HAVE_SDIO_DELAYED_INVLDT. I have modified all the stm32f7 chips to select it.
2018-11-20 14:03:42 -06:00
Gregory Nutt
4e5cf1229c drivers/mmcsd/Kconfig: three configuration settings were within ifdef/endif and led to warning: xxx selects xxxx which has unmet direct dependencies. Fix by moving settings to drivers/Kconfig and outside of the ifdef-endif. Also renamed CONFIG_SDIO_PREFLIGHT to CONFIG_ARCH_HAVE_SDIO_PREFLIGHT to follow naming of similar hidden architecture capability configurations. 2018-08-05 17:58:17 -06:00
Gregory Nutt
b26c70b11f arch/arm/src/lkpc54xx: In SDMMC driver, fix an error which was clobbering the interrupt mask register (xfrmask). Also, add a kludge for the missing DTO interrupt. 2017-12-20 18:39:10 -06:00
David Sidrane
bd107d20ee sdio.h:Fix typos 2017-08-17 09:33:34 -10:00
Gregory Nutt
0de294a586 Fix lots of occurrences of 'the the', 'the there', 'the these', 'the then', 'the they. 2017-05-11 13:35:56 -06:00
Simon Piriou
bf9391a1fe photon: porting wlan device 2017-03-14 21:13:36 +01:00
Alan Carvalho de Assis
248d5d3185 MMC/SD SDIO: Some drivers need to start DMA before sending CMD24 and some AFTER 2017-02-09 11:13:05 -06:00
Gregory Nutt
2a4791f4ee Removed dmasupported() method from the SDIO interface. That is now a bit in the cpapability set. 2017-01-31 09:51:15 -06:00
Gregory Nutt
9ac00a355f Add capabilities() method to SDIO interface. Remove CONFIG_SDIO_WIDTH_D1_ONLY. That should not be a global propertie, but rather a capability/limitation of single slot when there may be multiple slots. 2017-01-31 09:16:01 -06:00
Gregory Nutt
b578c98fa9 Clean up and review of header files for conformance to standards 2015-06-12 19:26:01 -06:00
Gregory Nutt
a6f1dfa5b0 Remove execute privileges from some header files 2015-02-01 06:24:18 -06:00
Gregory Nutt
089e001874 STM32 SDIO: CONFIG_MMCSD_SDIOWAIT_WRCOMPLETE should not be available unless CONFIG_MMCSD_SDIO=y 2015-01-08 18:12:06 -06:00
Gregory Nutt
1842525cc2 MMCSD SDIO: Add support for a new SDWAIT_WRCOMPLETE condition. The previous logic used a busy-wait loop to pool the card R1 start to determine when the card was ready for the next transfer. That busy-wait can be quite long -- hundreds of milliseconds. And alternative is to look the the SD D0 pin which will change state when the card is no longer busy.
This logic implements a change the avoids the busy-wait poll by reconfiguring the SD D0 pin as a GPIO interrupt, then waiting for the card to becom ready without taking up CPU cycles.

This change is conditioned on CONFIG_MMCSD_SDIOWATI_WRCOMPLETE and is currenlty only implemented for the STM32 SDIO driver.

From David Sidrane
2015-01-08 06:23:42 -06:00
Gregory Nutt
a41c1de32c Add basic data structures that will allow us to move named semaphore support out of the OS and into the VFS (not complete). 2014-09-28 10:15:33 -06:00
Gregory Nutt
972c4cbab5 Nucleo F401RE: Remove PX4 cruft that can in with the port 2014-04-22 12:18:08 -06:00
Gregory Nutt
9a484b4c6e Cosmetic updates to comments and README files 2014-03-24 10:23:56 -06:00
Gregory Nutt
c3380746b1 sdio.h: Misc typo fixes 2014-03-23 15:48:55 -06:00
Gregory Nutt
46bf97abfc Add SDIO preflight method 2013-10-18 08:15:09 -06:00
Gregory Nutt
da4cebf572 SAMA5: Fix HSMCI race condition. Now memory card interface is functional with DMA 2013-08-10 18:01:23 -06:00
patacongo
f66f0c3d24 More kernel build fixes
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5716 42af7a65-404d-4744-a932-0658087f49c3
2013-03-07 14:27:47 +00:00
patacongo
8e5733ae3f Header file clean-up
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@4948 42af7a65-404d-4744-a932-0658087f49c3
2012-07-17 03:58:11 +00:00
patacongo
9eda27ba2a Add logic to STM32 SDIO driver to terminate on a DMA error
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@4408 42af7a65-404d-4744-a932-0658087f49c3
2012-02-21 15:17:42 +00:00
patacongo
a40add6150 Progress with Kinetis SDHC driver (more to to)
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3904 42af7a65-404d-4744-a932-0658087f49c3
2011-08-22 15:42:10 +00:00
patacongo
7d501f3c42 Very initial SDHC driver for Kinetis parts
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3901 42af7a65-404d-4744-a932-0658087f49c3
2011-08-21 16:00:32 +00:00
patacongo
a87259ebc6 Add support for multiplexed SDIO pins from Uros
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3898 42af7a65-404d-4744-a932-0658087f49c3
2011-08-19 16:51:04 +00:00
patacongo
de0f788a05 Remove executable property from many files
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3897 42af7a65-404d-4744-a932-0658087f49c3
2011-08-19 14:51:08 +00:00
patacongo
14394b5eb6 Changes for clean STM32 compile with DEBUG on
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3332 42af7a65-404d-4744-a932-0658087f49c3
2011-03-02 22:49:59 +00:00
patacongo
03b90172f4 Add MCI CD GPIO
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@2585 42af7a65-404d-4744-a932-0658087f49c3
2010-04-11 15:32:07 +00:00
patacongo
1bee4a3f0f SAM3U needs block info
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@2584 42af7a65-404d-4744-a932-0658087f49c3
2010-04-10 23:16:51 +00:00
patacongo
da47b386c6 Extensions for SAM3U
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@2583 42af7a65-404d-4744-a932-0658087f49c3
2010-04-10 21:57:43 +00:00
patacongo
eeec4073a9 Switching to C99 stdint.h types
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@2340 42af7a65-404d-4744-a932-0658087f49c3
2009-12-14 23:32:23 +00:00
patacongo
06743c5003 Need a cancel method to stop DMA
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@2280 42af7a65-404d-4744-a932-0658087f49c3
2009-11-27 13:05:02 +00:00
patacongo
c76c6b0e52 Fix block read/write return values; SDIO error reporting; slow down clock if interrupt mode
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@2278 42af7a65-404d-4744-a932-0658087f49c3
2009-11-25 13:50:26 +00:00