diff --git a/drivers/mtd/spi/spi_flash_internal.h b/drivers/mtd/spi/spi_flash_internal.h
index af1afa9..ce34ce0 100644
--- a/drivers/mtd/spi/spi_flash_internal.h
+++ b/drivers/mtd/spi/spi_flash_internal.h
@@ -75,6 +75,11 @@
 int spi_flash_cmd_write_multi(struct spi_flash *flash, u32 offset,
 		size_t len, const void *buf);
 
+#ifdef CONFIG_SPI_FLASH_SST
+int sst_write_wp(struct spi_flash *flash, u32 offset, size_t len,
+		const void *buf);
+#endif
+
 /*
  * Enable writing on the SPI flash.
  */
diff --git a/drivers/mtd/spi/spi_flash_ops.c b/drivers/mtd/spi/spi_flash_ops.c
index 6133363..79381b1 100644
--- a/drivers/mtd/spi/spi_flash_ops.c
+++ b/drivers/mtd/spi/spi_flash_ops.c
@@ -312,3 +312,96 @@
 
 	return ret;
 }
+
+#ifdef CONFIG_SPI_FLASH_SST
+static int sst_byte_write(struct spi_flash *flash, u32 offset, const void *buf)
+{
+	int ret;
+	u8 cmd[4] = {
+		CMD_SST_BP,
+		offset >> 16,
+		offset >> 8,
+		offset,
+	};
+
+	debug("BP[%02x]: 0x%p => cmd = { 0x%02x 0x%06x }\n",
+	      spi_w8r8(flash->spi, CMD_READ_STATUS), buf, cmd[0], offset);
+
+	ret = spi_flash_cmd_write_enable(flash);
+	if (ret)
+		return ret;
+
+	ret = spi_flash_cmd_write(flash->spi, cmd, sizeof(cmd), buf, 1);
+	if (ret)
+		return ret;
+
+	return spi_flash_cmd_wait_ready(flash, SPI_FLASH_PROG_TIMEOUT);
+}
+
+int sst_write_wp(struct spi_flash *flash, u32 offset, size_t len,
+		const void *buf)
+{
+	size_t actual, cmd_len;
+	int ret;
+	u8 cmd[4];
+
+	ret = spi_claim_bus(flash->spi);
+	if (ret) {
+		debug("SF: Unable to claim SPI bus\n");
+		return ret;
+	}
+
+	/* If the data is not word aligned, write out leading single byte */
+	actual = offset % 2;
+	if (actual) {
+		ret = sst_byte_write(flash, offset, buf);
+		if (ret)
+			goto done;
+	}
+	offset += actual;
+
+	ret = spi_flash_cmd_write_enable(flash);
+	if (ret)
+		goto done;
+
+	cmd_len = 4;
+	cmd[0] = CMD_SST_AAI_WP;
+	cmd[1] = offset >> 16;
+	cmd[2] = offset >> 8;
+	cmd[3] = offset;
+
+	for (; actual < len - 1; actual += 2) {
+		debug("WP[%02x]: 0x%p => cmd = { 0x%02x 0x%06x }\n",
+		      spi_w8r8(flash->spi, CMD_READ_STATUS), buf + actual,
+		      cmd[0], offset);
+
+		ret = spi_flash_cmd_write(flash->spi, cmd, cmd_len,
+					buf + actual, 2);
+		if (ret) {
+			debug("SF: sst word program failed\n");
+			break;
+		}
+
+		ret = spi_flash_cmd_wait_ready(flash, SPI_FLASH_PROG_TIMEOUT);
+		if (ret)
+			break;
+
+		cmd_len = 1;
+		offset += 2;
+	}
+
+	if (!ret)
+		ret = spi_flash_cmd_write_disable(flash);
+
+	/* If there is a single trailing byte, write it out */
+	if (!ret && actual != len)
+		ret = sst_byte_write(flash, offset, buf + actual);
+
+ done:
+	debug("SF: sst: program %s %zu bytes @ 0x%zx\n",
+	      ret ? "failure" : "success", len, offset - actual);
+
+	spi_release_bus(flash->spi);
+	return ret;
+}
+#endif
diff --git a/drivers/mtd/spi/spi_flash_probe.c b/drivers/mtd/spi/spi_flash_probe.c
index b6cf60c..199eab8 100644
--- a/drivers/mtd/spi/spi_flash_probe.c
+++ b/drivers/mtd/spi/spi_flash_probe.c
@@ -26,6 +26,7 @@
  * @ext_jedec:		Device ext_jedec ID
  * @sector_size:	Sector size of this device
  * @nr_sectors:	No.of sectors on this device
+ * @flags:		Importent param, for flash specific behaviour
  */
 struct spi_flash_params {
 	const char *name;
@@ -33,101 +34,102 @@
 	u16 ext_jedec;
 	u32 sector_size;
 	u32 nr_sectors;
+	u16 flags;
 };
 
 static const struct spi_flash_params spi_flash_params_table[] = {
 #ifdef CONFIG_SPI_FLASH_ATMEL		/* ATMEL */
-	{"AT45DB011D",	   0x1f2200, 0x0,	64 * 1024,     4},
-	{"AT45DB021D",	   0x1f2300, 0x0,	64 * 1024,     8},
-	{"AT45DB041D",	   0x1f2400, 0x0,	64 * 1024,     8},
-	{"AT45DB081D",	   0x1f2500, 0x0,	64 * 1024,    16},
-	{"AT45DB161D",	   0x1f2600, 0x0,	64 * 1024,    32},
-	{"AT45DB321D",	   0x1f2700, 0x0,	64 * 1024,    64},
-	{"AT45DB641D",	   0x1f2800, 0x0,	64 * 1024,   128},
+	{"AT45DB011D",	   0x1f2200, 0x0,	64 * 1024,     4,	     0},
+	{"AT45DB021D",	   0x1f2300, 0x0,	64 * 1024,     8,	     0},
+	{"AT45DB041D",	   0x1f2400, 0x0,	64 * 1024,     8,	     0},
+	{"AT45DB081D",	   0x1f2500, 0x0,	64 * 1024,    16,	     0},
+	{"AT45DB161D",	   0x1f2600, 0x0,	64 * 1024,    32,	     0},
+	{"AT45DB321D",	   0x1f2700, 0x0,	64 * 1024,    64,	     0},
+	{"AT45DB641D",	   0x1f2800, 0x0,	64 * 1024,   128,	     0},
 #endif
 #ifdef CONFIG_SPI_FLASH_EON		/* EON */
-	{"EN25Q32B",	   0x1c3016, 0x0,	64 * 1024,    64},
-	{"EN25Q128B",	   0x1c3018, 0x0,       64 * 1024,   256},
+	{"EN25Q32B",	   0x1c3016, 0x0,	64 * 1024,    64,	     0},
+	{"EN25Q128B",	   0x1c3018, 0x0,       64 * 1024,   256,	     0},
 #endif
 #ifdef CONFIG_SPI_FLASH_GIGADEVICE	/* GIGADEVICE */
-	{"GD25Q64B",	   0xc84017, 0x0,	64 * 1024,   128},
-	{"GD25LQ32",	   0xc86016, 0x0,	64 * 1024,    64},
+	{"GD25Q64B",	   0xc84017, 0x0,	64 * 1024,   128,	     0},
+	{"GD25LQ32",	   0xc86016, 0x0,	64 * 1024,    64,	     0},
 #endif
 #ifdef CONFIG_SPI_FLASH_MACRONIX	/* MACRONIX */
-	{"MX25L4005",	   0xc22013, 0x0,	64 * 1024,     8},
-	{"MX25L8005",	   0xc22014, 0x0,	64 * 1024,    16},
-	{"MX25L1605D",	   0xc22015, 0x0,	64 * 1024,    32},
-	{"MX25L3205D",	   0xc22016, 0x0,	64 * 1024,    64},
-	{"MX25L6405D",	   0xc22017, 0x0,	64 * 1024,   128},
-	{"MX25L12805",	   0xc22018, 0x0,	64 * 1024,   256},
-	{"MX25L12855E",	   0xc22618, 0x0,	64 * 1024,   256},
+	{"MX25L4005",	   0xc22013, 0x0,	64 * 1024,     8,	     0},
+	{"MX25L8005",	   0xc22014, 0x0,	64 * 1024,    16,	     0},
+	{"MX25L1605D",	   0xc22015, 0x0,	64 * 1024,    32,	     0},
+	{"MX25L3205D",	   0xc22016, 0x0,	64 * 1024,    64,	     0},
+	{"MX25L6405D",	   0xc22017, 0x0,	64 * 1024,   128,	     0},
+	{"MX25L12805",	   0xc22018, 0x0,	64 * 1024,   256,	     0},
+	{"MX25L12855E",	   0xc22618, 0x0,	64 * 1024,   256,	     0},
 #endif
 #ifdef CONFIG_SPI_FLASH_SPANSION	/* SPANSION */
-	{"S25FL008A",	   0x010213, 0x0,	64 * 1024,    16},
-	{"S25FL016A",	   0x010214, 0x0,	64 * 1024,    32},
-	{"S25FL032A",	   0x010215, 0x0,	64 * 1024,    64},
-	{"S25FL064A",	   0x010216, 0x0,	64 * 1024,   128},
-	{"S25FL128P_256K", 0x012018, 0x0300,   256 * 1024,    64},
-	{"S25FL128P_64K",  0x012018, 0x0301,    64 * 1024,   256},
-	{"S25FL032P",	   0x010215, 0x4d00,    64 * 1024,    64},
-	{"S25FL064P",	   0x010216, 0x4d00,    64 * 1024,   128},
-	{"S25FL128S_64K",  0x012018, 0x4d01,    64 * 1024,   256},
-	{"S25FL256S_64K",  0x010219, 0x4d01,    64 * 1024,   512},
-	{"S25FL512S_64K",  0x010220, 0x4d01,    64 * 1024,  1024},
+	{"S25FL008A",	   0x010213, 0x0,	64 * 1024,    16,	     0},
+	{"S25FL016A",	   0x010214, 0x0,	64 * 1024,    32,	     0},
+	{"S25FL032A",	   0x010215, 0x0,	64 * 1024,    64,	     0},
+	{"S25FL064A",	   0x010216, 0x0,	64 * 1024,   128,	     0},
+	{"S25FL128P_256K", 0x012018, 0x0300,   256 * 1024,    64,	     0},
+	{"S25FL128P_64K",  0x012018, 0x0301,    64 * 1024,   256,	     0},
+	{"S25FL032P",	   0x010215, 0x4d00,    64 * 1024,    64,	     0},
+	{"S25FL064P",	   0x010216, 0x4d00,    64 * 1024,   128,	     0},
+	{"S25FL128S_64K",  0x012018, 0x4d01,    64 * 1024,   256,	     0},
+	{"S25FL256S_64K",  0x010219, 0x4d01,    64 * 1024,   512,	     0},
+	{"S25FL512S_64K",  0x010220, 0x4d01,    64 * 1024,  1024,	     0},
 #endif
 #ifdef CONFIG_SPI_FLASH_STMICRO		/* STMICRO */
-	{"M25P10",	   0x202011, 0x0,       32 * 1024,     4},
-	{"M25P20",	   0x202012, 0x0,       64 * 1024,     4},
-	{"M25P40",	   0x202013, 0x0,       64 * 1024,     8},
-	{"M25P80",	   0x202014, 0x0,       64 * 1024,    16},
-	{"M25P16",	   0x202015, 0x0,       64 * 1024,    32},
-	{"M25P32",	   0x202016, 0x0,       64 * 1024,    64},
-	{"M25P64",	   0x202017, 0x0,       64 * 1024,   128},
-	{"M25P128",	   0x202018, 0x0,      256 * 1024,    64},
-	{"N25Q32",	   0x20ba16, 0x0,       64 * 1024,    64},
-	{"N25Q32A",	   0x20bb16, 0x0,       64 * 1024,    64},
-	{"N25Q64",	   0x20ba17, 0x0,       64 * 1024,   128},
-	{"N25Q64A",	   0x20bb17, 0x0,       64 * 1024,   128},
-	{"N25Q128",	   0x20ba18, 0x0,       64 * 1024,   256},
-	{"N25Q128A",	   0x20bb18, 0x0,       64 * 1024,   256},
-	{"N25Q256",	   0x20ba19, 0x0,       64 * 1024,   512},
-	{"N25Q256A",	   0x20bb19, 0x0,       64 * 1024,   512},
-	{"N25Q512",	   0x20ba20, 0x0,       64 * 1024,  1024},
-	{"N25Q512A",	   0x20bb20, 0x0,       64 * 1024,  1024},
-	{"N25Q1024",	   0x20ba21, 0x0,       64 * 1024,  2048},
-	{"N25Q1024A",	   0x20bb21, 0x0,       64 * 1024,  2048},
+	{"M25P10",	   0x202011, 0x0,       32 * 1024,     4,	     0},
+	{"M25P20",	   0x202012, 0x0,       64 * 1024,     4,	     0},
+	{"M25P40",	   0x202013, 0x0,       64 * 1024,     8,	     0},
+	{"M25P80",	   0x202014, 0x0,       64 * 1024,    16,	     0},
+	{"M25P16",	   0x202015, 0x0,       64 * 1024,    32,	     0},
+	{"M25P32",	   0x202016, 0x0,       64 * 1024,    64,	     0},
+	{"M25P64",	   0x202017, 0x0,       64 * 1024,   128,	     0},
+	{"M25P128",	   0x202018, 0x0,      256 * 1024,    64,	     0},
+	{"N25Q32",	   0x20ba16, 0x0,       64 * 1024,    64,	     0},
+	{"N25Q32A",	   0x20bb16, 0x0,       64 * 1024,    64,	     0},
+	{"N25Q64",	   0x20ba17, 0x0,       64 * 1024,   128,	     0},
+	{"N25Q64A",	   0x20bb17, 0x0,       64 * 1024,   128,	     0},
+	{"N25Q128",	   0x20ba18, 0x0,       64 * 1024,   256,	     0},
+	{"N25Q128A",	   0x20bb18, 0x0,       64 * 1024,   256,	     0},
+	{"N25Q256",	   0x20ba19, 0x0,       64 * 1024,   512,	     0},
+	{"N25Q256A",	   0x20bb19, 0x0,       64 * 1024,   512,	     0},
+	{"N25Q512",	   0x20ba20, 0x0,       64 * 1024,  1024,	     0},
+	{"N25Q512A",	   0x20bb20, 0x0,       64 * 1024,  1024,	     0},
+	{"N25Q1024",	   0x20ba21, 0x0,       64 * 1024,  2048,	     0},
+	{"N25Q1024A",	   0x20bb21, 0x0,       64 * 1024,  2048,	     0},
 #endif
 #ifdef CONFIG_SPI_FLASH_SST		/* SST */
-	{"SST25VF040B",	   0xbf258d, 0x0,	64 * 1024,     8},
-	{"SST25VF080B",	   0xbf258e, 0x0,	64 * 1024,    16},
-	{"SST25VF016B",	   0xbf2541, 0x0,	64 * 1024,    32},
-	{"SST25VF032B",	   0xbf254a, 0x0,	64 * 1024,    64},
-	{"SST25VF064C",	   0xbf254b, 0x0,	64 * 1024,   128},
-	{"SST25WF512",	   0xbf2501, 0x0,	64 * 1024,     1},
-	{"SST25WF010",	   0xbf2502, 0x0,	64 * 1024,     2},
-	{"SST25WF020",	   0xbf2503, 0x0,	64 * 1024,     4},
-	{"SST25WF040",	   0xbf2504, 0x0,	64 * 1024,     8},
-	{"SST25WF080",	   0xbf2505, 0x0,	64 * 1024,    16},
+	{"SST25VF040B",	   0xbf258d, 0x0,	64 * 1024,     8,	SST_WP},
+	{"SST25VF080B",	   0xbf258e, 0x0,	64 * 1024,    16,	SST_WP},
+	{"SST25VF016B",	   0xbf2541, 0x0,	64 * 1024,    32,	SST_WP},
+	{"SST25VF032B",	   0xbf254a, 0x0,	64 * 1024,    64,	SST_WP},
+	{"SST25VF064C",	   0xbf254b, 0x0,	64 * 1024,   128,	     0},
+	{"SST25WF512",	   0xbf2501, 0x0,	64 * 1024,     1,	SST_WP},
+	{"SST25WF010",	   0xbf2502, 0x0,	64 * 1024,     2,	SST_WP},
+	{"SST25WF020",	   0xbf2503, 0x0,	64 * 1024,     4,	SST_WP},
+	{"SST25WF040",	   0xbf2504, 0x0,	64 * 1024,     8,	SST_WP},
+	{"SST25WF080",	   0xbf2505, 0x0,	64 * 1024,    16,	SST_WP},
 #endif
 #ifdef CONFIG_SPI_FLASH_WINBOND		/* WINBOND */
-	{"W25P80",	   0xef2014, 0x0,	64 * 1024,    16},
-	{"W25P16",	   0xef2015, 0x0,	64 * 1024,    32},
-	{"W25P32",	   0xef2016, 0x0,	64 * 1024,    64},
-	{"W25X40",	   0xef3013, 0x0,	64 * 1024,     8},
-	{"W25X16",	   0xef3015, 0x0,	64 * 1024,    32},
-	{"W25X32",	   0xef3016, 0x0,	64 * 1024,    64},
-	{"W25X64",	   0xef3017, 0x0,	64 * 1024,   128},
-	{"W25Q80BL",	   0xef4014, 0x0,	64 * 1024,    16},
-	{"W25Q16CL",	   0xef4015, 0x0,	64 * 1024,    32},
-	{"W25Q32BV",	   0xef4016, 0x0,	64 * 1024,    64},
-	{"W25Q64CV",	   0xef4017, 0x0,	64 * 1024,   128},
-	{"W25Q128BV",	   0xef4018, 0x0,	64 * 1024,   256},
-	{"W25Q256",	   0xef4019, 0x0,	64 * 1024,   512},
-	{"W25Q80BW",	   0xef5014, 0x0,	64 * 1024,    16},
-	{"W25Q16DW",	   0xef6015, 0x0,	64 * 1024,    32},
-	{"W25Q32DW",	   0xef6016, 0x0,	64 * 1024,    64},
-	{"W25Q64DW",	   0xef6017, 0x0,	64 * 1024,   128},
-	{"W25Q128FW",	   0xef6018, 0x0,	64 * 1024,   256},
+	{"W25P80",	   0xef2014, 0x0,	64 * 1024,    16,	     0},
+	{"W25P16",	   0xef2015, 0x0,	64 * 1024,    32,	     0},
+	{"W25P32",	   0xef2016, 0x0,	64 * 1024,    64,	     0},
+	{"W25X40",	   0xef3013, 0x0,	64 * 1024,     8,	     0},
+	{"W25X16",	   0xef3015, 0x0,	64 * 1024,    32,	     0},
+	{"W25X32",	   0xef3016, 0x0,	64 * 1024,    64,	     0},
+	{"W25X64",	   0xef3017, 0x0,	64 * 1024,   128,	     0},
+	{"W25Q80BL",	   0xef4014, 0x0,	64 * 1024,    16,	     0},
+	{"W25Q16CL",	   0xef4015, 0x0,	64 * 1024,    32,	     0},
+	{"W25Q32BV",	   0xef4016, 0x0,	64 * 1024,    64,	     0},
+	{"W25Q64CV",	   0xef4017, 0x0,	64 * 1024,   128,	     0},
+	{"W25Q128BV",	   0xef4018, 0x0,	64 * 1024,   256,	     0},
+	{"W25Q256",	   0xef4019, 0x0,	64 * 1024,   512,	     0},
+	{"W25Q80BW",	   0xef5014, 0x0,	64 * 1024,    16,	     0},
+	{"W25Q16DW",	   0xef6015, 0x0,	64 * 1024,    32,	     0},
+	{"W25Q32DW",	   0xef6016, 0x0,	64 * 1024,    64,	     0},
+	{"W25Q64DW",	   0xef6017, 0x0,	64 * 1024,   128,	     0},
+	{"W25Q128FW",	   0xef6018, 0x0,	64 * 1024,   256,	     0},
 #endif
 	/*
 	 * Note:
@@ -189,6 +191,10 @@
 
 	/* Assign spi_flash ops */
 	flash->write = spi_flash_cmd_write_multi;
+#ifdef CONFIG_SPI_FLASH_SST
+	if (params->flags & SST_WP)
+		flash->write = sst_write_wp;
+#endif
 	flash->erase = spi_flash_cmd_erase;
 	flash->read = spi_flash_cmd_read_fast;
 
