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)
}