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;

Reply via email to