mtd: m25p80: don't probe device which has status of 'disabled'
authorShaohui Xie <Shaohui.Xie@freescale.com>
Fri, 14 Oct 2011 07:49:00 +0000 (15:49 +0800)
committerArtem Bityutskiy <artem.bityutskiy@linux.intel.com>
Sun, 16 Oct 2011 11:51:04 +0000 (14:51 +0300)
On some platforms such as P3060QDS, has multiple spi flashes, but they are
not available at same time, so if their status is 'disabled', which is set
by u-boot, will not be probed.

Signed-off-by: Shaohui Xie <Shaohui.Xie@freescale.com>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
drivers/mtd/devices/m25p80.c

index 02aecacd1994ae2fdfac5a4f82010eb3652a7118..884904d3f9d2deda9088046f8666e2f14b2aa664 100644 (file)
@@ -30,6 +30,7 @@
 #include <linux/mtd/cfi.h>
 #include <linux/mtd/mtd.h>
 #include <linux/mtd/partitions.h>
+#include <linux/of_platform.h>
 
 #include <linux/spi/spi.h>
 #include <linux/spi/flash.h>
@@ -823,6 +824,11 @@ static int __devinit m25p_probe(struct spi_device *spi)
        unsigned                        i;
        struct mtd_part_parser_data     ppdata;
 
+#ifdef CONFIG_MTD_OF_PARTS
+       if (!of_device_is_available(spi->dev.of_node))
+               return -ENODEV;
+#endif
+
        /* Platform data helps sort out which chip type we have, as
         * well as how this board partitions it.  If we don't have
         * a chip ID, try the JEDEC id commands; they'll work for most