This is an automated email from the ASF dual-hosted git repository.
xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git
The following commit(s) were added to refs/heads/master by this push:
new 50cad1536d emmc: add get emmc cid register interface.
50cad1536d is described below
commit 50cad1536d782fd50a6b45f6a9766ef995d47d51
Author: wanggang26 <[email protected]>
AuthorDate: Fri Sep 22 22:43:27 2023 +0800
emmc: add get emmc cid register interface.
Signed-off-by: wanggang26 <[email protected]>
---
drivers/mmcsd/mmcsd_sdio.c | 64 +++++++++++++++++++++++++---------------------
1 file changed, 35 insertions(+), 29 deletions(-)
diff --git a/drivers/mmcsd/mmcsd_sdio.c b/drivers/mmcsd/mmcsd_sdio.c
index 21c2734e79..50b2f31d70 100644
--- a/drivers/mmcsd/mmcsd_sdio.c
+++ b/drivers/mmcsd/mmcsd_sdio.c
@@ -3161,46 +3161,52 @@ static int mmcsd_general_cmd_read(FAR struct
mmcsd_state_s *priv,
static int mmcsd_iocmd(FAR struct mmcsd_state_s *priv,
FAR struct mmc_ioc_cmd *ic_ptr)
{
+ uint32_t opcode;
int ret;
DEBUGASSERT(priv != NULL && ic_ptr != NULL);
- if (!ic_ptr->is_acmd)
+ opcode = ic_ptr->opcode & MMCSD_CMDIDX_MASK;
+ switch (opcode)
{
- uint32_t opcode = ic_ptr->opcode & MMCSD_CMDIDX_MASK;
- switch (opcode)
- {
- case MMCSD_CMDIDX56: /* support general commands */
+ case MMCSD_CMDIDX2:
+ {
+ memcpy((FAR void *)(uintptr_t)ic_ptr->data_ptr,
+ priv->cid, sizeof(priv->cid));
+ }
+ break;
+ case MMCSD_CMDIDX56: /* support general commands */
+ {
+ if (ic_ptr->write_flag)
{
- if (ic_ptr->write_flag)
+ ret = mmcsd_general_cmd_write(priv,
+ (FAR uint8_t *)(uintptr_t)(ic_ptr->data_ptr),
+ ic_ptr->arg);
+ if (ret != OK)
{
- ret = mmcsd_general_cmd_write(priv,
- (FAR uint8_t *)(uintptr_t)(ic_ptr->data_ptr),
- ic_ptr->arg);
- if (ret != OK)
- {
- ferr("mmcsd_iocmd MMCSD_CMDIDX56 write failed.\n");
- return ret;
- }
+ ferr("mmcsd_iocmd MMCSD_CMDIDX56 write failed.\n");
+ return ret;
}
- else
+ }
+ else
+ {
+ ret = mmcsd_general_cmd_read(priv,
+ (FAR uint8_t *)(uintptr_t)(ic_ptr->data_ptr),
+ ic_ptr->arg);
+ if (ret != OK)
{
- ret = mmcsd_general_cmd_read(priv,
- (FAR uint8_t *)(uintptr_t)(ic_ptr->data_ptr),
- ic_ptr->arg);
- if (ret != OK)
- {
- ferr("mmcsd_iocmd MMCSD_CMDIDX56 read failed.\n");
- return ret;
- }
+ ferr("mmcsd_iocmd MMCSD_CMDIDX56 read failed.\n");
+ return ret;
}
}
- break;
-
- default:
- ferr("mmcsd_iocmd opcode unsupported.\n");
- return -EINVAL;
- }
+ }
+ break;
+ default:
+ {
+ ferr("mmcsd_iocmd opcode unsupported.\n");
+ return -EINVAL;
+ }
+ break;
}
return OK;