diff --git a/drivers/mtd/cfi_flash.c b/drivers/mtd/cfi_flash.c
index 5494bcffa7c4b247992f8a7e0e997a4b02cda2bf..722c3fc7bdd17a2ef0e1eb3db30678979046f048 100644
--- a/drivers/mtd/cfi_flash.c
+++ b/drivers/mtd/cfi_flash.c
@@ -40,6 +40,7 @@
 #include <asm/byteorder.h>
 #include <environment.h>
 #include <mtd/cfi_flash.h>
+#include <watchdog.h>
 
 /*
  * This file implements a Common Flash Interface (CFI) driver for
@@ -577,6 +578,7 @@ static int flash_status_check (flash_info_t * info, flash_sect_t sector,
 	reset_timer();
 #endif
 	start = get_timer (0);
+	WATCHDOG_RESET();
 	while (flash_is_busy (info, sector)) {
 		if (get_timer (start) > tout) {
 			printf ("Flash %s timeout at address %lx data %lx\n",
@@ -668,6 +670,7 @@ static int flash_status_poll(flash_info_t *info, void *src, void *dst,
 	reset_timer();
 #endif
 	start = get_timer(0);
+	WATCHDOG_RESET();
 	while (1) {
 		switch (info->portwidth) {
 		case FLASH_CFI_8BIT:
diff --git a/drivers/mtd/jedec_flash.c b/drivers/mtd/jedec_flash.c
index 36d30c3b6873d9318aed3de969709048676ba4e5..2350f361f1bdf2d080ac1384947b043ec0bcd3ad 100644
--- a/drivers/mtd/jedec_flash.c
+++ b/drivers/mtd/jedec_flash.c
@@ -69,6 +69,9 @@
 #define SST39SF010A	0x00B5
 #define SST39SF020A	0x00B6
 
+/* STM */
+#define STM29F400BB	0x00D6
+
 /* MXIC */
 #define MX29LV040	0x004F
 
@@ -346,6 +349,23 @@ static const struct amd_flash_info jedec_table[] = {
 			ERASEINFO(0x10000, 15),
 		}
 	},
+	{
+		.mfr_id		= (u16)STM_MANUFACT,
+		.dev_id		= STM29F400BB,
+		.name		= "ST Micro M29F400BB",
+		.uaddr		= {
+			[1] = MTD_UADDR_0x0555_0x02AA /* x16 */
+		},
+		.DevSize		= SIZE_512KiB,
+		.CmdSet			= CFI_CMDSET_AMD_LEGACY,
+		.NumEraseRegions	= 4,
+		.regions		= {
+			ERASEINFO(0x04000, 1),
+			ERASEINFO(0x02000, 2),
+			ERASEINFO(0x08000, 1),
+			ERASEINFO(0x10000, 7),
+		}
+	},
 #endif
 };