Patchwork mtd: m25p80: don't probe device which has status of 'disabled'

login
register
mail settings
Submitter shaohui xie
Date Oct. 14, 2011, 7:49 a.m.
Message ID <1318578540-12872-1-git-send-email-Shaohui.Xie@freescale.com>
Download mbox | patch
Permalink /patch/119735/
State New
Headers show

Comments

shaohui xie - Oct. 14, 2011, 7:49 a.m.
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>
---
Disabled nodes should automatically not be probed. But I found this is only
true for spi node, for the flash nodes which embedded in spi node, still got
probed even it has a status of 'disabled'.

 drivers/mtd/devices/m25p80.c |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)
Artem Bityutskiy - Oct. 16, 2011, 11:51 a.m.
On Fri, 2011-10-14 at 15:49 +0800, Shaohui Xie wrote:
> 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>

Pushed to l2-mtd-2.6.git, thanks!

Patch

diff --git a/drivers/mtd/devices/m25p80.c b/drivers/mtd/devices/m25p80.c
index 4e20c4d..30d61d5 100644
--- a/drivers/mtd/devices/m25p80.c
+++ b/drivers/mtd/devices/m25p80.c
@@ -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>
@@ -829,6 +830,11 @@  static int __devinit m25p_probe(struct spi_device *spi)
 	struct mtd_partition		*parts = NULL;
 	int				nr_parts = 0;
 
+#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