From 9c80dfb31c1dcb598ae055e200acd8c7ca36d3a1 Mon Sep 17 00:00:00 2001 From: Gregory Nutt Date: Wed, 30 Jul 2014 10:19:09 -0600 Subject: [PATCH] Updated README file, cosmetic changes to comments and debug output --- configs/sama5d4-ek/README.txt | 21 +++++++++++++-------- drivers/mmcsd/mmcsd_sdio.c | 6 +++--- fs/fs_automount.c | 6 +++--- fs/fs_mount.c | 12 ++++++------ 4 files changed, 25 insertions(+), 20 deletions(-) diff --git a/configs/sama5d4-ek/README.txt b/configs/sama5d4-ek/README.txt index b66c71d7c6..48797ab0c4 100644 --- a/configs/sama5d4-ek/README.txt +++ b/configs/sama5d4-ek/README.txt @@ -1592,7 +1592,10 @@ HSMCI Card Slots Auto-Mounter ============ - NuttX implements an auto-mounter than can make working with SD cards easier. With the auto-mounter, the file system will be automatically mounted when the SD card in the SD card is inserted into the HSMCI slot and automatically unmounted when the SD card is removed. + NuttX implements an auto-mounter than can make working with SD cards + easier. With the auto-mounter, the file system will be automatically + mounted when the SD card is inserted into the HSMCI slot and automatically + unmounted when the SD card is removed. Here is a sample configuration for the auto-mounter: @@ -1607,6 +1610,13 @@ Auto-Mounter CONFIG_SAMA5D4EK_HSMCI0_AUTOMOUNT_DDELAY=1000 CONFIG_SAMA5D4EK_HSMCI0_AUTOMOUNT_UDELAY=2000 + WARNING: SD cards should never be removed without first unmounting + them. This is to avoid data and possible corruption of the file + system. Certainly this is the case if you are writing to the SD card + at the time of the removal. If you use the SD card for read-only access, + however, then I cannot think of any reason why removing the card without + mounting would be harmful. + USB Ports ========= @@ -3786,12 +3796,6 @@ Configurations disabled; there was a problem at one time but that has probably been fixed. HSCMI with TX DMA re-enabled needs to be verified. - There does seem to be an issue with removing then re-inserting - an SD card. In that case, the SD card will fail to mount the - when the card is re-inserted. Hopefully this problem will be - fixed before you read this (in which case, I forgot to remove - this note). - 13. Networking is supported via EMAC0. See the "Networking" section above for detailed configuration settings. DHCP is not used in this configuration; rather, a hard-coded IP address of 10.0.0.2 is @@ -4225,7 +4229,8 @@ To-Do List to be verified by re-enabled HSMCI TX DMA. Also, CONFIG_MMCSD_MULTIBLOCK_DISABLE=y is set to disable multi-block - transfers. + transfers. The is very low priority to me but might be important to you + if you are need very high performance SD card accesses. 3) There is a kludge in place in the Ethernet code to work around a problem that I see. The problem that I see is as follows: diff --git a/drivers/mmcsd/mmcsd_sdio.c b/drivers/mmcsd/mmcsd_sdio.c index 6f143324f2..2e35c9a810 100644 --- a/drivers/mmcsd/mmcsd_sdio.c +++ b/drivers/mmcsd/mmcsd_sdio.c @@ -1477,6 +1477,7 @@ static ssize_t mmcsd_readmultiple(FAR struct mmcsd_state_s *priv, SDIO_BLOCKSETUP(priv->dev, priv->blocksize, nblocks); SDIO_WAITENABLE(priv->dev, SDIOWAIT_TRANSFERDONE|SDIOWAIT_TIMEOUT|SDIOWAIT_ERROR); + #ifdef CONFIG_SDIO_DMA if (priv->dma) { @@ -1878,7 +1879,6 @@ static ssize_t mmcsd_writemultiple(FAR struct mmcsd_state_s *priv, return ret; } - /* Wait for the transfer to complete */ ret = mmcsd_eventwait(priv, SDIOWAIT_TIMEOUT|SDIOWAIT_ERROR, nblocks * MMCSD_BLOCK_WDATADELAY); @@ -2606,7 +2606,7 @@ static int mmcsd_sdinitialize(FAR struct mmcsd_state_s *priv) /* Send CMD9, SEND_CSD, in standby state/data-transfer mode to obtain the * Card Specific Data (CSD) register. The argument is the RCA that we - * just obtained from CMD3. The card stays in standy state/data-transfer + * just obtained from CMD3. The card stays in standby state/data-transfer * mode. */ @@ -3264,7 +3264,7 @@ int mmcsd_slotinitialize(int minor, FAR struct sdio_dev_s *dev) SDIO_CALLBACKENABLE(priv->dev, SDIOMEDIA_INSERTED); - fdbg("MMC/SD slot is empty\n"); + fvdbg("MMC/SD slot is empty\n"); } else { diff --git a/fs/fs_automount.c b/fs/fs_automount.c index 51ffe70ef7..f23c5f0578 100644 --- a/fs/fs_automount.c +++ b/fs/fs_automount.c @@ -387,7 +387,7 @@ static void automount_timeout(int argc, uint32_t arg1, ...) ret = work_queue(LPWORK, &priv->work, automount_worker, priv, 0); if (ret < 0) { - /* NOTE: Currently, work_cancel only returns success */ + /* NOTE: Currently, work_queue only returns success */ fdbg("ERROR: Failed to schedule work: %d\n", ret); } @@ -501,7 +501,7 @@ static int automount_interrupt(FAR const struct automount_lower_s *lower, priv->lower->ddelay); if (ret < 0) { - /* NOTE: Currently, work_cancel only returns success */ + /* NOTE: Currently, work_queue only returns success */ fdbg("ERROR: Failed to schedule work: %d\n", ret); } @@ -579,7 +579,7 @@ FAR void *automount_initialize(FAR const struct automount_lower_s *lower) priv->lower->ddelay); if (ret < 0) { - /* NOTE: Currently, work_cancel only returns success */ + /* NOTE: Currently, work_queue only returns success */ fdbg("ERROR: Failed to schedule work: %d\n", ret); } diff --git a/fs/fs_mount.c b/fs/fs_mount.c index d1ffba62ce..8b6d80f2b4 100644 --- a/fs/fs_mount.c +++ b/fs/fs_mount.c @@ -246,7 +246,7 @@ int mount(FAR const char *source, FAR const char *target, ret = find_blockdriver(source, mountflags, &blkdrvr_inode); if (ret < 0) { - fdbg("Failed to find block driver %s\n", source); + fdbg("ERROR: Failed to find block driver %s\n", source); errcode = -ret; goto errout; } @@ -260,7 +260,7 @@ int mount(FAR const char *source, FAR const char *target, else #endif /* NONBDFS_SUPPORT */ { - fdbg("Failed to find file system %s\n", filesystemtype); + fdbg("ERROR: Failed to find file system %s\n", filesystemtype); errcode = ENODEV; goto errout; } @@ -281,7 +281,7 @@ int mount(FAR const char *source, FAR const char *target, * -ENOMEM - Failed to allocate in-memory resources for the operation */ - fdbg("Failed to reserve inode\n"); + fdbg("ERROR: Failed to reserve inode\n"); errcode = -ret; goto errout_with_semaphore; } @@ -295,7 +295,7 @@ int mount(FAR const char *source, FAR const char *target, { /* The filesystem does not support the bind operation ??? */ - fdbg("Filesystem does not support bind\n"); + fdbg("ERROR: Filesystem does not support bind\n"); errcode = EINVAL; goto errout_with_mountpt; } @@ -325,7 +325,7 @@ int mount(FAR const char *source, FAR const char *target, * error. */ - fdbg("Bind method failed: %d\n", ret); + fdbg("ERROR: Bind method failed: %d\n", ret); #ifdef BDFS_SUPPORT #ifdef NONBDFS_SUPPORT if (blkdrvr_inode) @@ -400,7 +400,7 @@ errout: return ERROR; #else - fdbg("No filesystems enabled\n"); + fdbg("ERROR: No filesystems enabled\n"); set_errno(ENOSYS); return ERROR; #endif /* BDFS_SUPPORT || NONBDFS_SUPPORT */