This is an automated email from the ASF dual-hosted git repository.
pkarashchenko pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git
The following commit(s) were added to refs/heads/master by this push:
new a2239891e7 mmcsd: Remove the not really used capacity field
a2239891e7 is described below
commit a2239891e700a5da7c2274ab8efc3504433e84d7
Author: Xiang Xiao <[email protected]>
AuthorDate: Thu Jul 14 05:34:28 2022 +0800
mmcsd: Remove the not really used capacity field
to avoid the check of CONFIG_HAVE_LONG_LONG in many place
Signed-off-by: Xiang Xiao <[email protected]>
---
drivers/mmcsd/mmcsd_sdio.c | 32 ++++++++------------------------
1 file changed, 8 insertions(+), 24 deletions(-)
diff --git a/drivers/mmcsd/mmcsd_sdio.c b/drivers/mmcsd/mmcsd_sdio.c
index c41877a80f..98583a91d7 100644
--- a/drivers/mmcsd/mmcsd_sdio.c
+++ b/drivers/mmcsd/mmcsd_sdio.c
@@ -93,6 +93,8 @@
# define MMCSD_MULTIBLOCK_LIMIT CONFIG_MMCSD_MULTIBLOCK_LIMIT
#endif
+#define MMCSD_CAPACITY(b, s) ((s) >= 10 ? (b) << ((s) - 10) : (b) >> (10 -
(s)))
+
/****************************************************************************
* Private Types
****************************************************************************/
@@ -130,12 +132,6 @@ struct mmcsd_state_s
uint8_t blockshift; /* Log2 of blocksize */
uint16_t blocksize; /* Read block length (== block size) */
uint32_t nblocks; /* Number of blocks */
-
-#ifdef CONFIG_HAVE_LONG_LONG
- uint64_t capacity; /* Total capacity of volume */
-#else
- uint32_t capacity; /* Total capacity of volume (Limited to
4Gb) */
-#endif
};
/****************************************************************************
@@ -537,7 +533,6 @@ static int mmcsd_get_scr(FAR struct mmcsd_state_s *priv,
uint32_t scr[2])
* priv->wrprotect true: card is write protected (from CSD)
* priv->blocksize Read block length (== block size)
* priv->nblocks Number of blocks
- * priv->capacity Total capacity of volume
*
****************************************************************************/
@@ -655,11 +650,6 @@ static void mmcsd_decode_csd(FAR struct mmcsd_state_s
*priv, uint32_t csd[4])
priv->blockshift = readbllen;
priv->blocksize = (1 << readbllen);
-#ifdef CONFIG_HAVE_LONG_LONG
- priv->capacity = ((uint64_t)(priv->nblocks)) << readbllen;
-#else
- priv->capacity = (priv->nblocks << readbllen);
-#endif
if (priv->blocksize > 512)
{
@@ -692,14 +682,10 @@ static void mmcsd_decode_csd(FAR struct mmcsd_state_s
*priv, uint32_t csd[4])
*/
uint32_t csize = ((csd[1] & 0x3f) << 16) | (csd[2] >> 16);
-#ifdef CONFIG_HAVE_LONG_LONG
- priv->capacity = ((uint64_t)(csize + 1)) << 19;
-#else
- priv->capacity = (csize + 1) << 19;
-#endif
+
priv->blockshift = 9;
priv->blocksize = 1 << 9;
- priv->nblocks = priv->capacity >> 9;
+ priv->nblocks = (csize + 1) << (19 - priv->blockshift);
#ifdef CONFIG_DEBUG_FS_INFO
decoded.u.sdblock.csize = csize;
@@ -724,7 +710,6 @@ static void mmcsd_decode_csd(FAR struct mmcsd_state_s
*priv, uint32_t csd[4])
(1 << (csizemult + 2));
priv->blockshift = readbllen;
priv->blocksize = (1 << readbllen);
- priv->capacity = (priv->nblocks << readbllen);
/* Some devices, such as 2Gb devices, report blocksizes larger than
* 512 bytes but still expect to be accessed with a 512 byte blocksize.
@@ -893,8 +878,8 @@ static void mmcsd_decode_csd(FAR struct mmcsd_state_s
*priv, uint32_t csd[4])
decoded.fileformat, decoded.mmcecc, decoded.crc);
finfo("Capacity: %luKb, Block size: %db, nblocks: %d wrprotect: %d\n",
- (unsigned long)(priv->capacity / 1024), priv->blocksize,
- priv->nblocks, priv->wrprotect);
+ (unsigned long)MMCSD_CAPACITY(priv->nblocks, priv->blockshift),
+ priv->blocksize, priv->nblocks, priv->wrprotect);
#endif
}
@@ -3377,8 +3362,8 @@ static int mmcsd_probe(FAR struct mmcsd_state_s *priv)
{
/* Yes... */
- finfo("Capacity: %lu Kbytes\n",
- (unsigned long)(priv->capacity / 1024));
+ finfo("Capacity: %" PRIu32 " Kbytes\n",
+ MMCSD_CAPACITY(priv->nblocks, priv->blockshift));
priv->mediachanged = true;
}
@@ -3432,7 +3417,6 @@ static int mmcsd_removed(FAR struct mmcsd_state_s *priv)
* be), and that the card has never been initialized.
*/
- priv->capacity = 0; /* Capacity=0 sometimes means no media */
priv->blocksize = 0;
priv->probed = false;
priv->mediachanged = false;