diff -Nur linux-mips-cvs/drivers/mtd/chips/Config.in linux-broadcom/drivers/mtd/chips/Config.in
--- linux-mips-cvs/drivers/mtd/chips/Config.in	2003-02-26 01:53:49.000000000 +0100
+++ linux-broadcom/drivers/mtd/chips/Config.in	2005-01-31 13:13:14.000000000 +0100
@@ -45,6 +45,7 @@
 dep_tristate '  Support for Intel/Sharp flash chips' CONFIG_MTD_CFI_INTELEXT $CONFIG_MTD_GEN_PROBE
 dep_tristate '  Support for AMD/Fujitsu flash chips' CONFIG_MTD_CFI_AMDSTD $CONFIG_MTD_GEN_PROBE
 dep_tristate '  Support for ST (Advanced Architecture) flash chips' CONFIG_MTD_CFI_STAA $CONFIG_MTD_GEN_PROBE
+dep_tristate '  Support for SST flash chips' CONFIG_MTD_CFI_SSTSTD $CONFIG_MTD_GEN_PROBE
 
 dep_tristate '  Support for RAM chips in bus mapping' CONFIG_MTD_RAM $CONFIG_MTD
 dep_tristate '  Support for ROM chips in bus mapping' CONFIG_MTD_ROM $CONFIG_MTD
diff -Nur linux-mips-cvs/drivers/mtd/chips/Makefile linux-broadcom/drivers/mtd/chips/Makefile
--- linux-mips-cvs/drivers/mtd/chips/Makefile	2003-07-05 05:23:38.000000000 +0200
+++ linux-broadcom/drivers/mtd/chips/Makefile	2005-01-31 13:13:14.000000000 +0100
@@ -18,6 +18,7 @@
 obj-$(CONFIG_MTD_AMDSTD)	+= amd_flash.o 
 obj-$(CONFIG_MTD_CFI)		+= cfi_probe.o
 obj-$(CONFIG_MTD_CFI_STAA)	+= cfi_cmdset_0020.o
+obj-$(CONFIG_MTD_CFI_SSTSTD)   += cfi_cmdset_0701.o
 obj-$(CONFIG_MTD_CFI_AMDSTD)	+= cfi_cmdset_0002.o
 obj-$(CONFIG_MTD_CFI_INTELEXT)	+= cfi_cmdset_0001.o
 obj-$(CONFIG_MTD_GEN_PROBE)	+= gen_probe.o
diff -Nur linux-mips-cvs/drivers/mtd/chips/cfi_probe.c linux-broadcom/drivers/mtd/chips/cfi_probe.c
--- linux-mips-cvs/drivers/mtd/chips/cfi_probe.c	2003-02-26 01:53:49.000000000 +0100
+++ linux-broadcom/drivers/mtd/chips/cfi_probe.c	2005-01-31 13:13:14.000000000 +0100
@@ -67,8 +67,15 @@
 	cfi_send_gen_cmd(0xF0, 0, base, map, cfi, cfi->device_type, NULL);
 	cfi_send_gen_cmd(0x98, 0x55, base, map, cfi, cfi->device_type, NULL);
 
-	if (!qry_present(map,base,cfi))
-		return 0;
+	if (!qry_present(map,base,cfi)) {
+		/* rather broken SST cfi probe (requires SST unlock) */
+		cfi_send_gen_cmd(0xF0, 0, base, map, cfi, cfi->device_type, NULL);
+		cfi_send_gen_cmd(0xAA, 0x5555, base, map, cfi, cfi->device_type, NULL);
+		cfi_send_gen_cmd(0x55, 0x2AAA, base, map, cfi, cfi->device_type, NULL);
+		cfi_send_gen_cmd(0x98, 0x5555, base, map, cfi, cfi->device_type, NULL);
+		if (!qry_present(map,base,cfi))
+			return 0;
+	}
 
 	if (!cfi->numchips) {
 		/* This is the first time we're called. Set up the CFI 
diff -Nur linux-mips-cvs/drivers/mtd/chips/gen_probe.c linux-broadcom/drivers/mtd/chips/gen_probe.c
--- linux-mips-cvs/drivers/mtd/chips/gen_probe.c	2003-08-13 19:19:18.000000000 +0200
+++ linux-broadcom/drivers/mtd/chips/gen_probe.c	2005-01-31 13:13:14.000000000 +0100
@@ -332,9 +332,13 @@
 		return cfi_cmdset_0002(map, primary);
 #endif
 #ifdef CONFIG_MTD_CFI_STAA
-        case 0x0020:
+	case 0x0020:
 		return cfi_cmdset_0020(map, primary);
 #endif
+#ifdef CONFIG_MTD_CFI_SSTSTD
+	case 0x0701:
+		return cfi_cmdset_0701(map, primary);
+#endif
 	}
 
 	return cfi_cmdset_unknown(map, primary);
diff -Nur linux-mips-cvs/drivers/mtd/devices/Config.in linux-broadcom/drivers/mtd/devices/Config.in
--- linux-mips-cvs/drivers/mtd/devices/Config.in	2003-02-26 01:53:49.000000000 +0100
+++ linux-broadcom/drivers/mtd/devices/Config.in	2005-01-31 13:13:14.000000000 +0100
@@ -5,6 +5,7 @@
 mainmenu_option next_comment
 
 comment 'Self-contained MTD device drivers'
+bool '  Broadcom Chipcommon Serial Flash support' CONFIG_MTD_SFLASH
 dep_tristate '  Ramix PMC551 PCI Mezzanine RAM card support' CONFIG_MTD_PMC551 $CONFIG_MTD $CONFIG_PCI
 if [ "$CONFIG_MTD_PMC551" = "y" -o  "$CONFIG_MTD_PMC551" = "m" ]; then
    bool '    PMC551 256M DRAM Bugfix' CONFIG_MTD_PMC551_BUGFIX
diff -Nur linux-mips-cvs/drivers/mtd/devices/Makefile linux-broadcom/drivers/mtd/devices/Makefile
--- linux-mips-cvs/drivers/mtd/devices/Makefile	2002-03-30 09:15:50.000000000 +0100
+++ linux-broadcom/drivers/mtd/devices/Makefile	2005-01-31 13:13:14.000000000 +0100
@@ -12,6 +12,7 @@
 # here where previously there was none.  We now have to ensure that
 # doc200[01].o are linked before docprobe.o
 
+obj-$(CONFIG_MTD_SFLASH)	+= sflash.o
 obj-$(CONFIG_MTD_DOC1000)	+= doc1000.o
 obj-$(CONFIG_MTD_DOC2000)	+= doc2000.o
 obj-$(CONFIG_MTD_DOC2001)	+= doc2001.o
diff -Nur linux-mips-cvs/drivers/mtd/maps/Config.in linux-broadcom/drivers/mtd/maps/Config.in
--- linux-mips-cvs/drivers/mtd/maps/Config.in	2004-02-26 01:46:35.000000000 +0100
+++ linux-broadcom/drivers/mtd/maps/Config.in	2005-01-31 13:13:14.000000000 +0100
@@ -48,6 +48,7 @@
 fi
 
 if [ "$CONFIG_MIPS" = "y" ]; then
+   dep_tristate '  CFI Flash device mapped on Broadcom BCM947XX boards' CONFIG_MTD_BCM947XX $CONFIG_MTD_CFI
    dep_tristate '  Pb1000 MTD support' CONFIG_MTD_PB1000 $CONFIG_MIPS_PB1000
    dep_tristate '  Pb1500 MTD support' CONFIG_MTD_PB1500 $CONFIG_MIPS_PB1500
    dep_tristate '  Pb1100 MTD support' CONFIG_MTD_PB1100 $CONFIG_MIPS_PB1100
diff -Nur linux-mips-cvs/drivers/mtd/maps/Makefile linux-broadcom/drivers/mtd/maps/Makefile
--- linux-mips-cvs/drivers/mtd/maps/Makefile	2004-02-26 01:46:35.000000000 +0100
+++ linux-broadcom/drivers/mtd/maps/Makefile	2005-01-31 13:13:14.000000000 +0100
@@ -10,6 +10,7 @@
 endif
 
 # Chip mappings
+obj-$(CONFIG_MTD_BCM947XX)	+= bcm947xx-flash.o
 obj-$(CONFIG_MTD_CDB89712)	+= cdb89712.o
 obj-$(CONFIG_MTD_ARM_INTEGRATOR)+= integrator-flash.o
 obj-$(CONFIG_MTD_CFI_FLAGADM)	+= cfi_flagadm.o
