Eliminate some warnings
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@2260 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
parent
498ae01164
commit
b1742905ff
@ -312,11 +312,11 @@ static inline int mmcsd_sendcmd4(struct mmcsd_state_s *priv)
|
||||
|
||||
static int mmcsd_recvR1(struct mmcsd_state_s *priv, uint32 cmd)
|
||||
{
|
||||
uint32 r1;
|
||||
int ret;
|
||||
uint32 r1;
|
||||
int ret;
|
||||
|
||||
/* Get the R1 response from the hardware */
|
||||
|
||||
|
||||
ret = SDIO_RECVR1(priv->dev, cmd, &r1);
|
||||
if (ret == OK)
|
||||
{
|
||||
@ -344,41 +344,41 @@ static int mmcsd_recvR1(struct mmcsd_state_s *priv, uint32 cmd)
|
||||
static int mmcsd_getSCR(struct mmcsd_state_s *priv, uint32 scr[2])
|
||||
{
|
||||
int ret;
|
||||
|
||||
/* Set Block Size To 8 Bytes */
|
||||
/* Send CMD55 APP_CMD with argument as card's RCA */
|
||||
|
||||
mmcsd_sendcmdpoll(priv, MMCSD_CMD16, 8);
|
||||
ret = mmcsd_recvR1(priv, MMCSD_CMD16);
|
||||
if (ret != OK)
|
||||
|
||||
/* Set Block Size To 8 Bytes */
|
||||
/* Send CMD55 APP_CMD with argument as card's RCA */
|
||||
|
||||
mmcsd_sendcmdpoll(priv, MMCSD_CMD16, 8);
|
||||
ret = mmcsd_recvR1(priv, MMCSD_CMD16);
|
||||
if (ret != OK)
|
||||
{
|
||||
fdbg("ERROR: RECVR1 for CMD16 failed: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Send CMD55 APP_CMD with argument as card's RCA */
|
||||
|
||||
mmcsd_sendcmdpoll(priv, SD_CMD55, (uint32)priv->rca << 16);
|
||||
ret = mmcsd_recvR1(priv, SD_CMD55);
|
||||
if (ret != OK)
|
||||
{
|
||||
fdbg("ERROR: RECVR1 for CMD16 failed: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Send CMD55 APP_CMD with argument as card's RCA */
|
||||
|
||||
mmcsd_sendcmdpoll(priv, SD_CMD55, (uint32)priv->rca << 16);
|
||||
ret = mmcsd_recvR1(priv, SD_CMD55);
|
||||
if (ret != OK)
|
||||
{
|
||||
fdbg("ERROR: RECVR1 for CMD55 failed: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Setup up to receive data */
|
||||
|
||||
SDIO_RECVSETUP(priv->dev, 8);
|
||||
|
||||
/* Send ACMD51 SD_APP_SEND_SCR with argument as 0 to start data receipt */
|
||||
|
||||
SDIO_RECVSETUP(priv->dev, 8);
|
||||
|
||||
/* Send ACMD51 SD_APP_SEND_SCR with argument as 0 to start data receipt */
|
||||
|
||||
(void)SDIO_EVENTENABLE(priv->dev, SDIOEVENT_READDATADONE);
|
||||
mmcsd_sendcmdpoll(priv, SD_ACMD51, 0);
|
||||
ret = mmcsd_recvR1(priv, SD_ACMD51);
|
||||
if (ret != OK)
|
||||
{
|
||||
mmcsd_sendcmdpoll(priv, SD_ACMD51, 0);
|
||||
ret = mmcsd_recvR1(priv, SD_ACMD51);
|
||||
if (ret != OK)
|
||||
{
|
||||
fdbg("ERROR: RECVR1 for ACMD51 failed: %d\n", ret);
|
||||
return ret;
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Wait for data available */
|
||||
@ -388,7 +388,7 @@ static int mmcsd_getSCR(struct mmcsd_state_s *priv, uint32 scr[2])
|
||||
{
|
||||
fdbg("ERROR: WAITEVENT for READ DATA failed: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
/* Receive the SCR data from the SD card. Card data is sent big-endian;
|
||||
* if we are running on a little-endian machine, then we need to swap
|
||||
@ -503,7 +503,7 @@ static void mmcsd_decodeCSD(struct mmcsd_state_s *priv, uint32 csd[4])
|
||||
* MMC_WP_GRP_SIZE 36:32 Write protect group size
|
||||
*/
|
||||
|
||||
if (IS_BLOCK(priv->type))
|
||||
if (IS_BLOCK(priv->type))
|
||||
{
|
||||
/* C_SIZE: 69:64 from Word 2 and 63:48 from Word 3
|
||||
*
|
||||
@ -515,7 +515,7 @@ static void mmcsd_decodeCSD(struct mmcsd_state_s *priv, uint32 csd[4])
|
||||
uint32 csize = ((csd[1] & 0x3f) << 16) | (csd[2] >> 16);
|
||||
priv->capacity = (csize + 1) << 19;
|
||||
priv->blocksize = 1 << 9;
|
||||
priv->nblocks = priv->capacity >> 9;
|
||||
priv->nblocks = priv->capacity >> 9;
|
||||
|
||||
#if defined(CONFIG_DEBUG) && defined (CONFIG_DEBUG_VERBOSE) && defined(CONFIG_DEBUG_FS)
|
||||
decoded.u.sdblock.csize = csize;
|
||||
@ -523,7 +523,7 @@ static void mmcsd_decodeCSD(struct mmcsd_state_s *priv, uint32 csd[4])
|
||||
decoded.u.sdblock.sdsectorsize = (csd[2] >> 7) & 0x7f;
|
||||
decoded.u.sdblock.sdwpgrpsize = csd[2] & 0x7f;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* C_SIZE: 73:64 from Word 2 and 63:62 from Word 3 */
|
||||
@ -533,11 +533,11 @@ static void mmcsd_decodeCSD(struct mmcsd_state_s *priv, uint32 csd[4])
|
||||
|
||||
priv->nblocks = ((uint32)csize + 1) * (1 << (csizemult + 2));
|
||||
priv->blocksize = (1 << readbllen);
|
||||
priv->capacity = priv->nblocks * priv->blocksize;
|
||||
priv->capacity = priv->nblocks * priv->blocksize;
|
||||
|
||||
#if defined(CONFIG_DEBUG) && defined (CONFIG_DEBUG_VERBOSE) && defined(CONFIG_DEBUG_FS)
|
||||
if (IS_SD(priv->type))
|
||||
{
|
||||
if (IS_SD(priv->type))
|
||||
{
|
||||
decoded.u.sdbyte.csize = csize;
|
||||
decoded.u.sdbyte.vddrcurrmin = (csd[2] >> 27) & 7;
|
||||
decoded.u.sdbyte.vddrcurrmax = (csd[2] >> 24) & 7;
|
||||
@ -610,14 +610,14 @@ static void mmcsd_decodeCSD(struct mmcsd_state_s *priv, uint32 csd[4])
|
||||
fvdbg(" DSR_IMP: %d\n",
|
||||
decoded.dsrimp);
|
||||
|
||||
if (IS_BLOCK(priv->type))
|
||||
if (IS_BLOCK(priv->type))
|
||||
{
|
||||
fvdbg(" SD Block Addressing:\n");
|
||||
fvdbg(" C_SIZE: %d SD_ER_BLK_EN: %d\n",
|
||||
decoded.u.sdblock.csize, decoded.u.sdblock.sderblen);
|
||||
fvdbg(" SD_SECTOR_SIZE: %d SD_WP_GRP_SIZE: %d\n",
|
||||
decoded.u.sdblock.sdsectorsize, decoded.u.sdblock.sdwpgrpsize);
|
||||
}
|
||||
}
|
||||
else if (IS_SD(priv->type))
|
||||
{
|
||||
fvdbg(" SD Byte Addressing:\n");
|
||||
@ -975,12 +975,12 @@ static int mmcsd_geometry(FAR struct inode *inode, struct geometry *geometry)
|
||||
fvdbg("Entry\n");
|
||||
DEBUGASSERT(inode && inode->i_private);
|
||||
|
||||
mmcsd_takesem(priv);
|
||||
if (geometry)
|
||||
{
|
||||
/* Is there a (supported) card inserted in the slot? */
|
||||
|
||||
priv = (struct mmcsd_state_s *)inode->i_private;
|
||||
mmcsd_takesem(priv);
|
||||
if (IS_EMPTY(priv))
|
||||
{
|
||||
/* No.. return ENODEV */
|
||||
@ -1011,9 +1011,9 @@ static int mmcsd_geometry(FAR struct inode *inode, struct geometry *geometry)
|
||||
priv->mediachanged = FALSE;
|
||||
ret = OK;
|
||||
}
|
||||
mmcsd_givesem(priv);
|
||||
}
|
||||
|
||||
mmcsd_givesem(priv);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -1142,62 +1142,62 @@ static int mmcsd_widebus(struct mmcsd_state_s *priv)
|
||||
|
||||
/* Check if the SD card supports this feature (as reported in the SCR) */
|
||||
|
||||
if ((priv->buswidth & MMCSD_SCR_BUSWIDTH_4BIT) != 0)
|
||||
if ((priv->buswidth & MMCSD_SCR_BUSWIDTH_4BIT) != 0)
|
||||
{
|
||||
/* Disconnect any CD/DAT3 pull up using ACMD42. ACMD42 is optional and
|
||||
* need not be supported by all SD calls.
|
||||
*
|
||||
* First end CMD55 APP_CMD with argument as card's RCA.
|
||||
*/
|
||||
*/
|
||||
|
||||
mmcsd_sendcmdpoll(priv, SD_CMD55, (uint32)priv->rca << 16);
|
||||
ret = mmcsd_recvR1(priv, SD_CMD55);
|
||||
if (ret != OK)
|
||||
mmcsd_sendcmdpoll(priv, SD_CMD55, (uint32)priv->rca << 16);
|
||||
ret = mmcsd_recvR1(priv, SD_CMD55);
|
||||
if (ret != OK)
|
||||
{
|
||||
fdbg("ERROR: RECVR1 for CMD55 of ACMD42: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
fdbg("ERROR: RECVR1 for CMD55 of ACMD42: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Then send ACMD42 with the argument to disconnect the CD/DAT3
|
||||
* pullup
|
||||
*/
|
||||
|
||||
mmcsd_sendcmdpoll(priv, SD_ACMD42, MMCSD_ACMD42_CD_DISCONNECT);
|
||||
ret = mmcsd_recvR1(priv, SD_ACMD42);
|
||||
if (ret != OK)
|
||||
mmcsd_sendcmdpoll(priv, SD_ACMD42, MMCSD_ACMD42_CD_DISCONNECT);
|
||||
ret = mmcsd_recvR1(priv, SD_ACMD42);
|
||||
if (ret != OK)
|
||||
{
|
||||
fvdbg("WARNING: SD card does not support ACMD42: %d\n", ret);
|
||||
return ret;
|
||||
fvdbg("WARNING: SD card does not support ACMD42: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Now send ACMD6 to select wide, 4-bit bus operation, beginning
|
||||
* with CMD55, APP_CMD:
|
||||
*/
|
||||
|
||||
mmcsd_sendcmdpoll(priv, SD_CMD55, (uint32)priv->rca << 16);
|
||||
ret = mmcsd_recvR1(priv, SD_CMD55);
|
||||
if (ret != OK)
|
||||
|
||||
mmcsd_sendcmdpoll(priv, SD_CMD55, (uint32)priv->rca << 16);
|
||||
ret = mmcsd_recvR1(priv, SD_CMD55);
|
||||
if (ret != OK)
|
||||
{
|
||||
fdbg("ERROR: RECVR1 for CMD55 of ACMD6: %d\n", ret);
|
||||
return ret;
|
||||
fdbg("ERROR: RECVR1 for CMD55 of ACMD6: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Then send ACMD6 */
|
||||
|
||||
mmcsd_sendcmdpoll(priv, SD_ACMD6, MMCSD_ACMD6_BUSWIDTH_4);
|
||||
ret = mmcsd_recvR1(priv, SD_ACMD6);
|
||||
if (ret != OK)
|
||||
{
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Configure the SDIO peripheral */
|
||||
mmcsd_sendcmdpoll(priv, SD_ACMD6, MMCSD_ACMD6_BUSWIDTH_4);
|
||||
ret = mmcsd_recvR1(priv, SD_ACMD6);
|
||||
if (ret != OK)
|
||||
{
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Configure the SDIO peripheral */
|
||||
|
||||
fvdbg("Wide bus operation selected\n");
|
||||
SDIO_WIDEBUS(priv->dev, TRUE);
|
||||
priv->widebus = TRUE;
|
||||
|
||||
SDIO_CLOCK(priv->dev, CLOCK_SD_TRANSFER_4BIT);
|
||||
SDIO_CLOCK(priv->dev, CLOCK_SD_TRANSFER_4BIT);
|
||||
up_udelay(MMCSD_CLK_DELAY);
|
||||
return OK;
|
||||
}
|
||||
@ -1353,11 +1353,11 @@ static int mmcsd_sdinitialize(struct mmcsd_state_s *priv)
|
||||
* Send CMD3 with argument 0, SD card publishes its RCA in the response.
|
||||
*/
|
||||
|
||||
mmcsd_sendcmdpoll(priv, SD_CMD3, 0);
|
||||
ret = SDIO_RECVR6(priv->dev, SD_CMD3, &rca);
|
||||
if (ret != OK)
|
||||
{
|
||||
return ret;
|
||||
mmcsd_sendcmdpoll(priv, SD_CMD3, 0);
|
||||
ret = SDIO_RECVR6(priv->dev, SD_CMD3, &rca);
|
||||
if (ret != OK)
|
||||
{
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* R6 Published RCA Response (48-bit, SD card only)
|
||||
@ -1372,7 +1372,7 @@ static int mmcsd_sdinitialize(struct mmcsd_state_s *priv)
|
||||
*/
|
||||
|
||||
priv->rca = (uint16)(rca >> 16);
|
||||
fvdbg("RCA: %04x\n", priv->rca);
|
||||
fvdbg("RCA: %04x\n", priv->rca);
|
||||
|
||||
/* This should have caused a transition to standby state. However, this will
|
||||
* not be reflected in the present R1 status. R1/6 contains the state of
|
||||
@ -1471,7 +1471,7 @@ static int mmcsd_cardidentify(struct mmcsd_state_s *priv)
|
||||
}
|
||||
|
||||
/* Initialize device state structure */
|
||||
|
||||
|
||||
priv->type = MMCSD_CARDTYPE_SDV1;
|
||||
priv->mode = MMCSDMODE_POLLED;
|
||||
|
||||
@ -1495,14 +1495,14 @@ static int mmcsd_cardidentify(struct mmcsd_state_s *priv)
|
||||
* operating condition. CMD 8 is reserved on SD version 1.0 and MMC.
|
||||
*
|
||||
* CMD8 Argument:
|
||||
* [31:12]: Reserved (shall be set to '0')
* [11:8]: Supply Voltage (VHS) 0x1 (Range: 2.7-3.6 V)
|
||||
* [7:0]: Check Pattern (recommended 0xaa)
|
||||
* [31:12]: Reserved (shall be set to '0')
* [11:8]: Supply Voltage (VHS) 0x1 (Range: 2.7-3.6 V)
|
||||
* [7:0]: Check Pattern (recommended 0xaa)
|
||||
* CMD8 Response: R7
|
||||
*/
|
||||
|
||||
mmcsd_sendcmdpoll(priv, SD_CMD8, MMCSD_CMD8CHECKPATTERN|MMCSD_CMD8VOLTAGE_27);
|
||||
ret = SDIO_RECVR7(priv->dev, SD_CMD8, &response);
|
||||
if (ret == OK)
|
||||
*/
|
||||
|
||||
mmcsd_sendcmdpoll(priv, SD_CMD8, MMCSD_CMD8CHECKPATTERN|MMCSD_CMD8VOLTAGE_27);
|
||||
ret = SDIO_RECVR7(priv->dev, SD_CMD8, &response);
|
||||
if (ret == OK)
|
||||
{
|
||||
/* CMD8 succeeded this is probably a SDHC card. Verify the operating
|
||||
* voltage and that the check pattern was correctly echoed
|
||||
@ -1510,17 +1510,17 @@ static int mmcsd_cardidentify(struct mmcsd_state_s *priv)
|
||||
|
||||
if (((response & MMCSD_R7VOLTAGE_MASK) == MMCSD_R7VOLTAGE_27) &&
|
||||
((response & MMCSD_R7ECHO_MASK) == MMCSD_R7CHECKPATTERN))
|
||||
{
|
||||
{
|
||||
fvdbg("SD V2.x card\n");
|
||||
priv->type = MMCSD_CARDTYPE_SDV2;
|
||||
priv->type = MMCSD_CARDTYPE_SDV2;
|
||||
sdcapacity = MMCSD_ACMD41_HIGHCAPACITY;
|
||||
}
|
||||
else
|
||||
{
|
||||
fdbg("ERROR: R7: %08x\n", response);
|
||||
return -EIO;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* At this point, type is either UNKNOWN or SDV2. Try sending
|
||||
* CMD55 and (maybe) ACMD41 for up to 1 second or until the card
|
||||
@ -1543,7 +1543,7 @@ static int mmcsd_cardidentify(struct mmcsd_state_s *priv)
|
||||
{
|
||||
/* Send CMD55 */
|
||||
|
||||
mmcsd_sendcmdpoll(priv, SD_CMD55, 0);
|
||||
mmcsd_sendcmdpoll(priv, SD_CMD55, 0);
|
||||
ret = mmcsd_recvR1(priv, SD_CMD55);
|
||||
if (ret != OK)
|
||||
{
|
||||
@ -1578,7 +1578,7 @@ static int mmcsd_cardidentify(struct mmcsd_state_s *priv)
|
||||
if (priv->type == MMCSD_CARDTYPE_UNKNOWN)
|
||||
{
|
||||
fvdbg("SD V1.x card\n");
|
||||
priv->type = MMCSD_CARDTYPE_SDV1;
|
||||
priv->type = MMCSD_CARDTYPE_SDV1;
|
||||
}
|
||||
|
||||
/* Check if the card is busy */
|
||||
@ -1604,7 +1604,7 @@ static int mmcsd_cardidentify(struct mmcsd_state_s *priv)
|
||||
/* And break out of the loop with an SD card identified */
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1660,14 +1660,14 @@ static int mmcsd_cardidentify(struct mmcsd_state_s *priv)
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
/* Check the elapsed time. We won't keep trying this forever! */
|
||||
|
||||
elapsed = g_system_timer - start;
|
||||
}
|
||||
while (elapsed < TICK_PER_SEC && ret != OK);
|
||||
while (elapsed < TICK_PER_SEC && ret != OK);
|
||||
|
||||
/* We get here when the above loop completes, either (1) we could not
|
||||
* communicate properly with the card due to errors (and the loop times
|
||||
@ -1794,6 +1794,7 @@ static int mmcsd_probe(struct mmcsd_state_s *priv)
|
||||
|
||||
fvdbg("No card\n");
|
||||
SDIO_EVENTENABLE(priv->dev, SDIOEVENT_INSERTED);
|
||||
ret = -ENODEV;
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
Loading…
x
Reference in New Issue
Block a user