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 c2127c0b88 w25c: add W25_DEBUG sub-menu config option and update debug 
traces.
c2127c0b88 is described below

commit c2127c0b88f6d5bbd660f4eaf071fe083318ba6d
Author: Denis Ryndine <denis.rynd...@motec.com.au>
AuthorDate: Mon Jul 1 16:24:13 2024 +1000

    w25c: add W25_DEBUG sub-menu config option and update debug traces.
    
     - Allows optionally to separate traces from potentially irrelevant fs
       syslog traces it would go with currently.
---
 drivers/mtd/Kconfig |  4 ++++
 drivers/mtd/w25.c   | 68 ++++++++++++++++++++++++++++++++---------------------
 2 files changed, 45 insertions(+), 27 deletions(-)

diff --git a/drivers/mtd/Kconfig b/drivers/mtd/Kconfig
index 26a92a3ea4..aa6f18eecf 100644
--- a/drivers/mtd/Kconfig
+++ b/drivers/mtd/Kconfig
@@ -1323,6 +1323,10 @@ config W25_SLOWREAD
        bool "Enable slow read mode"
        default n
 
+config W25_DEBUG
+       bool "Enable syslog W25 specific syslog traces"
+       default n
+
 endif # MTD_W25
 
 config MTD_GD25
diff --git a/drivers/mtd/w25.c b/drivers/mtd/w25.c
index 3e02cb5117..8e1d8ffecc 100644
--- a/drivers/mtd/w25.c
+++ b/drivers/mtd/w25.c
@@ -49,6 +49,18 @@
  * Pre-processor Definitions
  ****************************************************************************/
 
+/* You can enable just the W25 traces; else its convoluted potentially with
+ * high number of other traces from fs.
+ */
+
+#ifdef CONFIG_W25_DEBUG
+#  define w25_finfo  _info
+#  define w25_ferr   _err
+#else
+#  define w25_finfo  finfo
+#  define w25_ferr   ferr
+#endif
+
 /* Configuration ************************************************************/
 
 /* Per the data sheet, the W25 parts can be driven with either SPI mode 0
@@ -361,7 +373,7 @@ static inline int w25_readid(struct w25_dev_s *priv)
   uint16_t memory;
   uint16_t capacity;
 
-  finfo("priv: %p\n", priv);
+  w25_finfo("priv: %p\n", priv);
 
   /* Lock and configure the SPI bus */
 
@@ -387,7 +399,7 @@ static inline int w25_readid(struct w25_dev_s *priv)
   SPI_SELECT(priv->spi, SPIDEV_FLASH(0), false);
   w25_unlock(priv->spi);
 
-  finfo("manufacturer: %02x memory: %02x capacity: %02x\n",
+  w25_finfo("manufacturer: %02x memory: %02x capacity: %02x\n",
         manufacturer, memory, capacity);
 
   /* Check for a valid manufacturer and memory type */
@@ -467,7 +479,7 @@ static inline int w25_readid(struct w25_dev_s *priv)
         {
           /* Nope.. we don't understand this capacity. */
 
-          ferr("ERROR: Unsupported capacity: %02x\n", capacity);
+          w25_ferr("ERROR: Unsupported capacity: %02x\n", capacity);
           return -ENODEV;
         }
 
@@ -476,7 +488,7 @@ static inline int w25_readid(struct w25_dev_s *priv)
 
   /* We don't understand the manufacturer or the memory type */
 
-  ferr("ERROR: Unrecognized manufacturer/memory type: %02x/%02x\n",
+  w25_ferr("ERROR: Unrecognized manufacturer/memory type: %02x/%02x\n",
        manufacturer, memory);
   return -ENODEV;
 }
@@ -669,7 +681,7 @@ static void w25_sectorerase(struct w25_dev_s *priv, off_t 
sector)
 {
   off_t address = sector << W25_SECTOR_SHIFT;
 
-  finfo("sector: %08lx\n", (long)sector);
+  w25_finfo("sector: %08lx\n", (long)sector);
 
   /* Check if sector is already erased. */
 
@@ -716,7 +728,7 @@ static void w25_sectorerase(struct w25_dev_s *priv, off_t 
sector)
 
 static inline int w25_chiperase(struct w25_dev_s *priv)
 {
-  finfo("priv: %p\n", priv);
+  w25_finfo("priv: %p\n", priv);
 
   /* Wait for any preceding write or erase operation to complete. */
 
@@ -738,7 +750,7 @@ static inline int w25_chiperase(struct w25_dev_s *priv)
   /* Deselect the FLASH */
 
   SPI_SELECT(priv->spi, SPIDEV_FLASH(0), false);
-  finfo("Return: OK\n");
+  w25_finfo("Return: OK\n");
   return OK;
 }
 
@@ -751,7 +763,7 @@ static void w25_byteread(FAR struct w25_dev_s *priv, FAR 
uint8_t *buffer,
 {
   uint8_t status;
 
-  finfo("address: %08lx nbytes: %d\n", (long)address, (int)nbytes);
+  w25_finfo("address: %08lx nbytes: %d\n", (long)address, (int)nbytes);
 
   /* Wait for any preceding write or erase operation to complete. */
 
@@ -807,7 +819,7 @@ static void w25_pagewrite(struct w25_dev_s *priv, FAR const 
uint8_t *buffer,
 {
   uint8_t status;
 
-  finfo("address: %08lx nwords: %d\n", (long)address, (int)nbytes);
+  w25_finfo("address: %08lx nwords: %d\n", (long)address, (int)nbytes);
   DEBUGASSERT(priv && buffer && (address & 0xff) == 0 &&
              (nbytes & 0xff) == 0);
 
@@ -867,7 +879,7 @@ static inline void w25_bytewrite(struct w25_dev_s *priv,
                                  off_t offset,
                                  uint16_t count)
 {
-  finfo("offset: %08lx  count:%d\n", (long)offset, count);
+  w25_finfo("offset: %08lx  count:%d\n", (long)offset, count);
 
   /* Wait for any preceding write to complete.  We could simplify things by
    * perform this wait at the end of each write operation (rather than at
@@ -903,7 +915,7 @@ static inline void w25_bytewrite(struct w25_dev_s *priv,
   /* Deselect the FLASH: Chip Select high */
 
   SPI_SELECT(priv->spi, SPIDEV_FLASH(0), false);
-  finfo("Written\n");
+  w25_finfo("Written\n");
 }
 #endif /* defined(CONFIG_MTD_BYTE_WRITE) && !defined(CONFIG_W25_READONLY) */
 
@@ -954,7 +966,7 @@ static FAR uint8_t *w25_cacheread(struct w25_dev_s *priv, 
off_t sector)
 
   shift   = W25_SECTOR_SHIFT - W25_SECTOR512_SHIFT;
   esectno = sector >> shift;
-  finfo("sector: %ld esectno: %d shift=%d\n", sector, esectno, shift);
+  w25_finfo("sector: %ld esectno: %d shift=%d\n", sector, esectno, shift);
 
   /* Check if the requested erase block is already in the cache */
 
@@ -1013,7 +1025,7 @@ static void w25_cacheerase(struct w25_dev_s *priv, off_t 
sector)
   if (!IS_ERASED(priv))
     {
       off_t esectno  = sector >> (W25_SECTOR_SHIFT - W25_SECTOR512_SHIFT);
-      finfo("sector: %ld esectno: %d\n", sector, esectno);
+      w25_finfo("sector: %ld esectno: %d\n", sector, esectno);
 
       w25_sectorerase(priv, esectno);
       SET_ERASED(priv);
@@ -1058,7 +1070,7 @@ static void w25_cachewrite(FAR struct w25_dev_s *priv,
         {
           off_t esectno  = sector >>
                            (W25_SECTOR_SHIFT - W25_SECTOR512_SHIFT);
-          finfo("sector: %ld esectno: %d\n", sector, esectno);
+          w25_finfo("sector: %ld esectno: %d\n", sector, esectno);
 
           w25_sectorerase(priv, esectno);
           SET_ERASED(priv);
@@ -1095,7 +1107,8 @@ static int w25_erase(FAR struct mtd_dev_s *dev,
   FAR struct w25_dev_s *priv = (FAR struct w25_dev_s *)dev;
   size_t blocksleft = nblocks;
 
-  finfo("startblock: %08lx nblocks: %d\n", (long)startblock, (int)nblocks);
+  w25_finfo("startblock: %08lx nblocks: %d\n", (long)startblock,
+                                          (int)nblocks);
 
   /* Lock access to the SPI bus until we complete the erase */
 
@@ -1135,7 +1148,7 @@ static ssize_t w25_bread(FAR struct mtd_dev_s *dev,
 {
   ssize_t nbytes;
 
-  finfo("startblock: %08lx nblocks: %d\n",
+  w25_finfo("startblock: %08lx nblocks: %d\n",
        (long)startblock, (int)nblocks);
 
   /* On this device, we can handle the block read just like the byte-oriented
@@ -1174,7 +1187,8 @@ static ssize_t w25_bwrite(FAR struct mtd_dev_s *dev, 
off_t startblock,
 #else
   FAR struct w25_dev_s *priv = (FAR struct w25_dev_s *)dev;
 
-  finfo("startblock: %08lx nblocks: %d\n", (long)startblock, (int)nblocks);
+  w25_finfo("startblock: %08lx nblocks: %d\n", (long)startblock,
+                                                  (int)nblocks);
 
   /* Lock the SPI bus and write all of the pages to FLASH */
 
@@ -1203,7 +1217,7 @@ static ssize_t w25_read(FAR struct mtd_dev_s *dev,
 {
   FAR struct w25_dev_s *priv = (FAR struct w25_dev_s *)dev;
 
-  finfo("offset: %08lx nbytes: %d\n", (long)offset, (int)nbytes);
+  w25_finfo("offset: %08lx nbytes: %d\n", (long)offset, (int)nbytes);
 
   /* Lock the SPI bus and select this FLASH part */
 
@@ -1211,7 +1225,7 @@ static ssize_t w25_read(FAR struct mtd_dev_s *dev,
   w25_byteread(priv, buffer, offset, nbytes);
   w25_unlock(priv->spi);
 
-  finfo("return nbytes: %d\n", (int)nbytes);
+  w25_finfo("return nbytes: %d\n", (int)nbytes);
   return nbytes;
 }
 
@@ -1232,7 +1246,7 @@ static ssize_t w25_write(FAR struct mtd_dev_s *dev,
   int    index;
   int    bytestowrite;
 
-  finfo("offset: %08lx nbytes: %d\n", (long)offset, (int)nbytes);
+  w25_finfo("offset: %08lx nbytes: %d\n", (long)offset, (int)nbytes);
 
   /* We must test if the offset + count crosses one or more pages
    * and perform individual writes.  The devices can only write in
@@ -1298,7 +1312,7 @@ static int w25_ioctl(FAR struct mtd_dev_s *dev, int cmd, 
unsigned long arg)
   FAR struct w25_dev_s *priv = (FAR struct w25_dev_s *)dev;
   int ret = -EINVAL; /* Assume good command with bad parameters */
 
-  finfo("cmd: %d\n", cmd);
+  w25_finfo("cmd: %d\n", cmd);
 
   switch (cmd)
     {
@@ -1332,7 +1346,7 @@ static int w25_ioctl(FAR struct mtd_dev_s *dev, int cmd, 
unsigned long arg)
 #endif
               ret               = OK;
 
-              finfo("blocksize: %" PRIu32 " erasesize: %" PRIu32
+              w25_finfo("blocksize: %" PRIu32 " erasesize: %" PRIu32
                     " neraseblocks: %" PRIu32 "\n",
                     geo->blocksize, geo->erasesize, geo->neraseblocks);
             }
@@ -1385,7 +1399,7 @@ static int w25_ioctl(FAR struct mtd_dev_s *dev, int cmd, 
unsigned long arg)
         break;
     }
 
-  finfo("return %d\n", ret);
+  w25_finfo("return %d\n", ret);
   return ret;
 }
 
@@ -1408,7 +1422,7 @@ FAR struct mtd_dev_s *w25_initialize(FAR struct spi_dev_s 
*spi)
   FAR struct w25_dev_s *priv;
   int ret;
 
-  finfo("spi: %p\n", spi);
+  w25_finfo("spi: %p\n", spi);
 
   /* Allocate a state structure (we allocate the structure instead of using
    * a fixed, static allocation so that we can handle multiple FLASH devices.
@@ -1448,7 +1462,7 @@ FAR struct mtd_dev_s *w25_initialize(FAR struct spi_dev_s 
*spi)
            * return NULL
            */
 
-          ferr("ERROR: Unrecognized\n");
+          w25_ferr("ERROR: Unrecognized\n");
           kmm_free(priv);
           return NULL;
         }
@@ -1470,7 +1484,7 @@ FAR struct mtd_dev_s *w25_initialize(FAR struct spi_dev_s 
*spi)
             {
               /* Discard all of that work we just did and return NULL */
 
-              ferr("ERROR: Allocation failed\n");
+              w25_ferr("ERROR: Allocation failed\n");
               kmm_free(priv);
               return NULL;
             }
@@ -1480,6 +1494,6 @@ FAR struct mtd_dev_s *w25_initialize(FAR struct spi_dev_s 
*spi)
 
   /* Return the implementation-specific state structure as the MTD device */
 
-  finfo("Return %p\n", priv);
+  w25_finfo("Return %p\n", priv);
   return (FAR struct mtd_dev_s *)priv;
 }

Reply via email to