You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by pk...@apache.org on 2022/05/13 12:41:31 UTC

[incubator-nuttx] branch master updated (f23ba7e761 -> 323d8d9547)

This is an automated email from the ASF dual-hosted git repository.

pkarashchenko pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git


    from f23ba7e761 arm/tlsr82: add hardware aes encrypt and decrypt support.
     new 679bc88cab drivers/sdio: Call SDIO_LOCK before and after the transaction
     new 323d8d9547 mmcsd: Add FAR to the pointer argument

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 drivers/mmcsd/sdio.c | 57 ++++++++++++++++++++++++++++++++++------------------
 include/nuttx/sdio.h |  9 +++------
 2 files changed, 41 insertions(+), 25 deletions(-)


[incubator-nuttx] 01/02: drivers/sdio: Call SDIO_LOCK before and after the transaction

Posted by pk...@apache.org.
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

commit 679bc88cabd7b03703209bf67a779eb33ad94058
Author: Xiang Xiao <xi...@xiaomi.com>
AuthorDate: Thu May 12 07:23:02 2022 +0800

    drivers/sdio: Call SDIO_LOCK before and after the transaction
    
    follow the same behaviour in drivers/mmcsd/mmcsd_sdio.c
    
    Signed-off-by: Xiang Xiao <xi...@xiaomi.com>
---
 drivers/mmcsd/sdio.c | 51 +++++++++++++++++++++++++++++++++++----------------
 include/nuttx/sdio.h |  3 ---
 2 files changed, 35 insertions(+), 19 deletions(-)

diff --git a/drivers/mmcsd/sdio.c b/drivers/mmcsd/sdio.c
index 003b52bae3..4550f97b92 100644
--- a/drivers/mmcsd/sdio.c
+++ b/drivers/mmcsd/sdio.c
@@ -38,6 +38,14 @@
 #define SDIO_CMD53_TIMEOUT_MS 100
 #define SDIO_IDLE_DELAY_MS    50
 
+#ifdef CONFIG_SDIO_MUXBUS
+#  define SDIO_TAKELOCK(dev)  SDIO_LOCK(dev, true)
+#  define SDIO_GIVELOCK(dev)  SDIO_LOCK(dev, false)
+#else
+#  define SDIO_TAKELOCK(dev)
+#  define SDIO_GIVELOCK(dev)
+#endif
+
 /****************************************************************************
  * Private Types
  ****************************************************************************/
@@ -89,10 +97,11 @@ union sdio_cmd5x
 };
 
 /****************************************************************************
- * Public Functions
+ * Private Functions
  ****************************************************************************/
 
-int sdio_sendcmdpoll(FAR struct sdio_dev_s *dev, uint32_t cmd, uint32_t arg)
+static int sdio_sendcmdpoll(FAR struct sdio_dev_s *dev,
+                            uint32_t cmd, uint32_t arg)
 {
   int ret;
 
@@ -115,6 +124,10 @@ int sdio_sendcmdpoll(FAR struct sdio_dev_s *dev, uint32_t cmd, uint32_t arg)
   return ret;
 }
 
+/****************************************************************************
+ * Public Functions
+ ****************************************************************************/
+
 int sdio_io_rw_direct(FAR struct sdio_dev_s *dev, bool write,
                       uint8_t function, uint32_t address,
                       uint8_t inb, uint8_t *outb)
@@ -130,11 +143,11 @@ int sdio_io_rw_direct(FAR struct sdio_dev_s *dev, bool write,
 
   if (write)
     {
-      arg.cmd52.write_data       = inb;
+      arg.cmd52.write_data   = inb;
     }
   else
     {
-      arg.cmd52.write_data       = 0;
+      arg.cmd52.write_data   = 0;
     }
 
   arg.cmd52.register_address = address & 0x1ffff;
@@ -144,8 +157,10 @@ int sdio_io_rw_direct(FAR struct sdio_dev_s *dev, bool write,
 
   /* Send CMD52 command */
 
+  SDIO_TAKELOCK(dev);
   sdio_sendcmdpoll(dev, SD_ACMD52, arg.value);
   ret = SDIO_RECVR5(dev, SD_ACMD52, &data);
+  SDIO_GIVELOCK(dev);
 
   if (ret != OK)
     {
@@ -212,6 +227,8 @@ int sdio_io_rw_extended(FAR struct sdio_dev_s *dev, bool write,
       arg.cmd53.byte_block_count = nblocks;
     }
 
+  SDIO_TAKELOCK(dev);
+
   /* Send CMD53 command */
 
   SDIO_BLOCKSETUP(dev, blocklen, nblocks);
@@ -258,6 +275,7 @@ int sdio_io_rw_extended(FAR struct sdio_dev_s *dev, bool write,
   /* There may not be a response to this, so don't look for one */
 
   SDIO_RECVR1(dev, SD_ACMD52ABRT, &data);
+  SDIO_GIVELOCK(dev);
 
   if (ret != OK)
     {
@@ -323,12 +341,14 @@ int sdio_probe(FAR struct sdio_dev_s *dev)
   int ret;
   uint32_t data = 0;
 
+  SDIO_TAKELOCK(dev);
+
   /* Set device state from reset to idle */
 
   ret = sdio_sendcmdpoll(dev, MMCSD_CMD0, 0);
   if (ret != OK)
     {
-      return ret;
+      goto err;
     }
 
   up_mdelay(SDIO_IDLE_DELAY_MS);
@@ -338,7 +358,7 @@ int sdio_probe(FAR struct sdio_dev_s *dev)
   ret = sdio_sendcmdpoll(dev, SDIO_CMD5, 0);
   if (ret != OK)
     {
-      return ret;
+      goto err;
     }
 
   /* Receive R4 response */
@@ -346,7 +366,7 @@ int sdio_probe(FAR struct sdio_dev_s *dev)
   ret = SDIO_RECVR4(dev, SDIO_CMD5, &data);
   if (ret != OK)
     {
-      return ret;
+      goto err;
     }
 
   /* Device is in Card Identification Mode, request device RCA */
@@ -354,14 +374,14 @@ int sdio_probe(FAR struct sdio_dev_s *dev)
   ret = sdio_sendcmdpoll(dev, SD_CMD3, 0);
   if (ret != OK)
     {
-      return ret;
+      goto err;
     }
 
   ret = SDIO_RECVR6(dev, SD_CMD3, &data);
   if (ret != OK)
     {
       wlerr("ERROR: RCA request failed: %d\n", ret);
-      return ret;
+      goto err;
     }
 
   wlinfo("rca is %" PRIx32 "\n", data >> 16);
@@ -374,24 +394,23 @@ int sdio_probe(FAR struct sdio_dev_s *dev)
   if (ret != OK)
     {
       wlerr("ERROR: CMD7 request failed: %d\n", ret);
-      return ret;
+      goto err;
     }
 
   ret = SDIO_RECVR1(dev, MMCSD_CMD7S, &data);
   if (ret != OK)
     {
       wlerr("ERROR: card selection failed: %d\n", ret);
-      return ret;
+      goto err;
     }
 
   /* Configure 4 bits bus width */
 
-  ret = sdio_set_wide_bus(dev);
-  if (ret != OK)
-    {
-      return ret;
-    }
+  SDIO_GIVELOCK(dev);
+  return sdio_set_wide_bus(dev);
 
+err:
+  SDIO_GIVELOCK(dev);
   return OK;
 }
 
diff --git a/include/nuttx/sdio.h b/include/nuttx/sdio.h
index fbf449cb9f..af3f3692be 100644
--- a/include/nuttx/sdio.h
+++ b/include/nuttx/sdio.h
@@ -1044,9 +1044,6 @@ int sdio_enable_function(FAR struct sdio_dev_s *dev, uint8_t function);
 
 int sdio_enable_interrupt(FAR struct sdio_dev_s *dev, uint8_t function);
 
-int sdio_sendcmdpoll(FAR struct sdio_dev_s *dev,
-                     uint32_t cmd, uint32_t arg);
-
 int sdio_io_rw_direct(FAR struct sdio_dev_s *dev, bool write,
                       uint8_t function, uint32_t address,
                       uint8_t inb, uint8_t *outb);


[incubator-nuttx] 02/02: mmcsd: Add FAR to the pointer argument

Posted by pk...@apache.org.
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

commit 323d8d954792a3807eb42077dad00a1dab55a688
Author: Xiang Xiao <xi...@xiaomi.com>
AuthorDate: Fri May 13 05:00:08 2022 +0800

    mmcsd: Add FAR to the pointer argument
    
    Signed-off-by: Xiang Xiao <xi...@xiaomi.com>
---
 drivers/mmcsd/sdio.c | 6 +++---
 include/nuttx/sdio.h | 6 +++---
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/mmcsd/sdio.c b/drivers/mmcsd/sdio.c
index 4550f97b92..bca78082f5 100644
--- a/drivers/mmcsd/sdio.c
+++ b/drivers/mmcsd/sdio.c
@@ -130,7 +130,7 @@ static int sdio_sendcmdpoll(FAR struct sdio_dev_s *dev,
 
 int sdio_io_rw_direct(FAR struct sdio_dev_s *dev, bool write,
                       uint8_t function, uint32_t address,
-                      uint8_t inb, uint8_t *outb)
+                      uint8_t inb, FAR uint8_t *outb)
 {
   union sdio_cmd5x arg;
   struct sdio_resp_r5 resp;
@@ -194,7 +194,7 @@ int sdio_io_rw_direct(FAR struct sdio_dev_s *dev, bool write,
 
 int sdio_io_rw_extended(FAR struct sdio_dev_s *dev, bool write,
                         uint8_t function, uint32_t address,
-                        bool inc_addr, uint8_t *buf,
+                        bool inc_addr, FAR uint8_t *buf,
                         unsigned int blocklen, unsigned int nblocks)
 {
   union sdio_cmd5x arg;
@@ -308,7 +308,7 @@ int sdio_io_rw_extended(FAR struct sdio_dev_s *dev, bool write,
   return OK;
 }
 
-int sdio_set_wide_bus(struct sdio_dev_s *dev)
+int sdio_set_wide_bus(FAR struct sdio_dev_s *dev)
 {
   int ret;
   uint8_t value;
diff --git a/include/nuttx/sdio.h b/include/nuttx/sdio.h
index af3f3692be..b2a928e4be 100644
--- a/include/nuttx/sdio.h
+++ b/include/nuttx/sdio.h
@@ -1035,7 +1035,7 @@ struct sdio_dev_s
 
 int sdio_probe(FAR struct sdio_dev_s *dev);
 
-int sdio_set_wide_bus(struct sdio_dev_s *dev);
+int sdio_set_wide_bus(FAR struct sdio_dev_s *dev);
 
 int sdio_set_blocksize(FAR struct sdio_dev_s *dev, uint8_t function,
                        uint16_t blocksize);
@@ -1046,11 +1046,11 @@ int sdio_enable_interrupt(FAR struct sdio_dev_s *dev, uint8_t function);
 
 int sdio_io_rw_direct(FAR struct sdio_dev_s *dev, bool write,
                       uint8_t function, uint32_t address,
-                      uint8_t inb, uint8_t *outb);
+                      uint8_t inb, FAR uint8_t *outb);
 
 int sdio_io_rw_extended(FAR struct sdio_dev_s *dev, bool write,
                         uint8_t function, uint32_t address,
-                        bool inc_addr, uint8_t *buf,
+                        bool inc_addr, FAR uint8_t *buf,
                         unsigned int blocklen, unsigned int nblocks);
 
 #undef EXTERN