summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authoriabdalkader <i.abdalkader@gmail.com>2024-11-29 16:56:20 +0100
committerDamien George <damien@micropython.org>2024-12-10 10:40:06 +1100
commitb5e80fafb2d5ef69fd80dbc6d7e839ffaa5a0f98 (patch)
tree856da4ba87254574864f5a7253f90374863f8200 /drivers
parentd5d366beef8d0331ee533b28d2e3024e34123ef1 (diff)
drivers/memory/spiflash: Add a config option to soft-reset SPI flash.
Add a compile-time config option to soft-reset SPI flash on init. This puts the flash in a known state on reset. Note this option is disabled by default. Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/memory/spiflash.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/memory/spiflash.c b/drivers/memory/spiflash.c
index e66153636..773334e16 100644
--- a/drivers/memory/spiflash.c
+++ b/drivers/memory/spiflash.c
@@ -44,6 +44,8 @@
#define CMD_RD_DEVID (0x9f)
#define CMD_CHIP_ERASE (0xc7)
#define CMD_C4READ (0xeb)
+#define CMD_RSTEN (0x66)
+#define CMD_RESET (0x99)
// 32 bit addressing commands
#define CMD_WRITE_32 (0x12)
@@ -180,6 +182,14 @@ void mp_spiflash_init(mp_spiflash_t *self) {
// Ensure SPI flash is out of sleep mode
mp_spiflash_deepsleep_internal(self, 0);
+ // Software reset.
+ #if MICROPY_HW_SPIFLASH_SOFT_RESET
+ mp_spiflash_write_cmd(self, CMD_RSTEN);
+ mp_spiflash_write_cmd(self, CMD_RESET);
+ mp_spiflash_wait_wip0(self);
+ mp_hal_delay_ms(1);
+ #endif
+
#if defined(CHECK_DEVID)
// Validate device id
uint32_t devid;