You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by ac...@apache.org on 2021/11/16 17:45:10 UTC

[incubator-nuttx] branch master updated: add MTDIOCTL_PROGMEM_ERASESTATE support

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 064f6c8  add MTDIOCTL_PROGMEM_ERASESTATE support
064f6c8 is described below

commit 064f6c8c5502dd89f847d53d2f74637ef164bd0d
Author: Andres Sanchez <ti...@hotmail.com>
AuthorDate: Tue Nov 16 12:04:02 2021 +0100

    add MTDIOCTL_PROGMEM_ERASESTATE support
    
    Signed-off-by: Andres Sanchez <ti...@hotmail.com>
    
    solve style check errors.
---
 arch/Kconfig                       |  5 +++++
 arch/arm/src/stm32h7/Kconfig       |  8 ++++++++
 arch/arm/src/stm32h7/stm32_flash.c |  5 +++++
 drivers/mtd/Kconfig                | 11 +++++++++++
 drivers/mtd/mtd_progmem.c          | 13 +++++++++++++
 include/nuttx/progmem.h            | 12 ++++++++++++
 6 files changed, 54 insertions(+)

diff --git a/arch/Kconfig b/arch/Kconfig
index 8720240..ff19a25 100644
--- a/arch/Kconfig
+++ b/arch/Kconfig
@@ -339,6 +339,11 @@ config ARCH_HAVE_PROGMEM_READ
 	default n
 	depends on ARCH_HAVE_PROGMEM
 
+config ARCH_HAVE_PROGMEM_ERASESTATE
+	bool
+	default n
+	depends on ARCH_HAVE_PROGMEM
+
 config ARCH_HAVE_RESET
 	bool
 	default n
diff --git a/arch/arm/src/stm32h7/Kconfig b/arch/arm/src/stm32h7/Kconfig
index 3f2c153..51a9e77 100644
--- a/arch/arm/src/stm32h7/Kconfig
+++ b/arch/arm/src/stm32h7/Kconfig
@@ -333,6 +333,14 @@ config STM32H7_PROGMEM
 		Add progmem support, start block and end block options are provided to
 		obtain an uniform flash memory mapping.
 
+config STM32H7_PROGMEM_ERASESTATE
+	bool "Flash progmem erasestate ictl support"
+	depends on STM32H7_PROGMEM
+	default y
+	select ARCH_HAVE_PROGMEM_ERASESTATE
+	---help---
+		Add progmem erasestate ictl command.
+
 menu "STM32H7 Peripheral Selection"
 
 # These "hidden" settings determine whether a peripheral option is available
diff --git a/arch/arm/src/stm32h7/stm32_flash.c b/arch/arm/src/stm32h7/stm32_flash.c
index cd9d74f..fb11ec8 100644
--- a/arch/arm/src/stm32h7/stm32_flash.c
+++ b/arch/arm/src/stm32h7/stm32_flash.c
@@ -971,3 +971,8 @@ ssize_t up_progmem_write(size_t addr, const void *buf, size_t count)
   stm32h7_flash_sem_unlock(priv);
   return written;
 }
+
+ssize_t up_progmem_erasestate(void)
+{
+  return FLASH_ERASEDVALUE;
+}
diff --git a/drivers/mtd/Kconfig b/drivers/mtd/Kconfig
index bbbbb5b..350f5f0 100644
--- a/drivers/mtd/Kconfig
+++ b/drivers/mtd/Kconfig
@@ -136,6 +136,17 @@ config MTD_PROGMEM
 		using the interfaces defined in include/nuttx/progmem.  Those
 		interfaces must be exported by chip-specific logic.
 
+if MTD_PROGMEM
+
+config MTD_PROGMEM_ERASESTATE
+	bool "Enable FLASH MTD device erasestate"
+	depends on ARCH_HAVE_PROGMEM_ERASESTATE
+	---help---
+		Enable the ioctl MTDIOCTL_PROGMEM_ERASESTATE command in the on-chip
+		FLASH interface.
+		
+endif #MTD_PROGMEM
+
 config MTD_CONFIG
 	bool "Enable Dev Config (MTD based) device"
 	default n
diff --git a/drivers/mtd/mtd_progmem.c b/drivers/mtd/mtd_progmem.c
index 2b17301..bb78b0b 100644
--- a/drivers/mtd/mtd_progmem.c
+++ b/drivers/mtd/mtd_progmem.c
@@ -367,6 +367,19 @@ static int progmem_ioctl(FAR struct mtd_dev_s *dev, int cmd,
         }
         break;
 
+#ifdef CONFIG_MTD_PROGMEM_ERASESTATE
+      case MTDIOC_ERASESTATE:
+        {
+          FAR uint8_t *result = (FAR uint8_t *)arg;
+
+          *result = up_progmem_erasestate();
+
+          ret = OK;
+        }
+        break;
+
+#endif /* CONFIG_ARCH_PROGMEM_ERASESTATE */
+
       default:
         ret = -ENOTTY; /* Bad command */
         break;
diff --git a/include/nuttx/progmem.h b/include/nuttx/progmem.h
index cebb876..e671a9a 100644
--- a/include/nuttx/progmem.h
+++ b/include/nuttx/progmem.h
@@ -234,6 +234,18 @@ ssize_t up_progmem_write(size_t addr, FAR const void *buf, size_t count);
 ssize_t up_progmem_read(size_t addr, FAR void *buf, size_t count);
 #endif
 
+/****************************************************************************
+ * Name: up_progmem_erasestate
+ *
+ * Description:
+ *   Return value of erease state.
+ *
+ ****************************************************************************/
+
+#ifdef CONFIG_ARCH_HAVE_PROGMEM_ERASESTATE
+ssize_t up_progmem_erasestate(void);
+#endif /* CONFIG_ARCH_HAVE_PROGMEM_ERASESTATE */
+
 #undef EXTERN
 #if defined(__cplusplus)
 }