diff --git a/drivers/mtd/spi/spansion.c b/drivers/mtd/spi/spansion.c
index 3dcccd3b28eb243f2518869c8c3c42c5ed8c3b6c..fdb791798560edf65598c7423e423f0a5bb87bdc 100644
--- a/drivers/mtd/spi/spansion.c
+++ b/drivers/mtd/spi/spansion.c
@@ -310,15 +310,9 @@ struct spi_flash *spi_flash_probe_spansion(struct spi_slave *spi, u8 *idcode)
 	struct spansion_spi_flash *spsn;
 	unsigned int i;
 	unsigned short jedec, ext_jedec;
-	int ret;
-	u8 id[5] = {0};
-
-	ret = spi_flash_cmd(spi, CMD_READ_ID, id, sizeof(id));
-	if (ret)
-		return NULL;
 
-	jedec = id[1] << 8 | id[2];
-	ext_jedec = id[3] << 8 | id[4];
+	jedec = idcode[1] << 8 | idcode[2];
+	ext_jedec = idcode[3] << 8 | idcode[4];
 
 	for (i = 0; i < ARRAY_SIZE(spansion_spi_flash_table); i++) {
 		params = &spansion_spi_flash_table[i];
diff --git a/drivers/mtd/spi/spi_flash.c b/drivers/mtd/spi/spi_flash.c
index 21ba5f9009359e888e90f96aefac7f76bf7a35d2..274895ad8ea21fad8d2c467be906d0c9c04903f7 100644
--- a/drivers/mtd/spi/spi_flash.c
+++ b/drivers/mtd/spi/spi_flash.c
@@ -101,7 +101,7 @@ struct spi_flash *spi_flash_probe(unsigned int bus, unsigned int cs,
 	struct spi_slave *spi;
 	struct spi_flash *flash;
 	int ret;
-	u8 idcode[3];
+	u8 idcode[5];
 
 	spi = spi_setup_slave(bus, cs, max_hz, spi_mode);
 	if (!spi) {
@@ -120,8 +120,8 @@ struct spi_flash *spi_flash_probe(unsigned int bus, unsigned int cs,
 	if (ret)
 		goto err_read_id;
 
-	debug("SF: Got idcode %02x %02x %02x\n", idcode[0],
-			idcode[1], idcode[2]);
+	debug("SF: Got idcode %02x %02x %02x %02x %02x\n", idcode[0],
+			idcode[1], idcode[2], idcode[3], idcode[4]);
 
 	switch (idcode[0]) {
 #ifdef CONFIG_SPI_FLASH_SPANSION