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>
diff --git a/drivers/memory/spiflash.c b/drivers/memory/spiflash.c
index e661536..773334e 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 @@
     // 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;