diff options
author | Shawn Guo <shawn.guo@linaro.org> | 2011-07-15 04:38:56 -0400 |
---|---|---|
committer | Artem Bityutskiy <artem.bityutskiy@intel.com> | 2011-09-11 08:02:15 -0400 |
commit | b94e757c4b3aafa52f8b82efed8660427a8d2880 (patch) | |
tree | 0664de3fe29e8d10741bc603aed6342d9ab13be4 /drivers/mtd | |
parent | f3c8cfc237927cc095e8bcb1e3794cfa76390bab (diff) |
mtd: dataflash: add device tree probe support
It adds device tree probe support for mtd_dataflash driver.
Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@intel.com>
Diffstat (limited to 'drivers/mtd')
-rw-r--r-- | drivers/mtd/devices/mtd_dataflash.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/drivers/mtd/devices/mtd_dataflash.c b/drivers/mtd/devices/mtd_dataflash.c index 8f6b02c43b4..c86fa573c30 100644 --- a/drivers/mtd/devices/mtd_dataflash.c +++ b/drivers/mtd/devices/mtd_dataflash.c | |||
@@ -17,6 +17,8 @@ | |||
17 | #include <linux/mutex.h> | 17 | #include <linux/mutex.h> |
18 | #include <linux/err.h> | 18 | #include <linux/err.h> |
19 | #include <linux/math64.h> | 19 | #include <linux/math64.h> |
20 | #include <linux/of.h> | ||
21 | #include <linux/of_device.h> | ||
20 | 22 | ||
21 | #include <linux/spi/spi.h> | 23 | #include <linux/spi/spi.h> |
22 | #include <linux/spi/flash.h> | 24 | #include <linux/spi/flash.h> |
@@ -24,7 +26,6 @@ | |||
24 | #include <linux/mtd/mtd.h> | 26 | #include <linux/mtd/mtd.h> |
25 | #include <linux/mtd/partitions.h> | 27 | #include <linux/mtd/partitions.h> |
26 | 28 | ||
27 | |||
28 | /* | 29 | /* |
29 | * DataFlash is a kind of SPI flash. Most AT45 chips have two buffers in | 30 | * DataFlash is a kind of SPI flash. Most AT45 chips have two buffers in |
30 | * each chip, which may be used for double buffered I/O; but this driver | 31 | * each chip, which may be used for double buffered I/O; but this driver |
@@ -98,6 +99,16 @@ struct dataflash { | |||
98 | struct mtd_info mtd; | 99 | struct mtd_info mtd; |
99 | }; | 100 | }; |
100 | 101 | ||
102 | #ifdef CONFIG_OF | ||
103 | static const struct of_device_id dataflash_dt_ids[] = { | ||
104 | { .compatible = "atmel,at45", }, | ||
105 | { .compatible = "atmel,dataflash", }, | ||
106 | { /* sentinel */ } | ||
107 | }; | ||
108 | #else | ||
109 | #define dataflash_dt_ids NULL | ||
110 | #endif | ||
111 | |||
101 | /* ......................................................................... */ | 112 | /* ......................................................................... */ |
102 | 113 | ||
103 | /* | 114 | /* |
@@ -634,6 +645,7 @@ add_dataflash_otp(struct spi_device *spi, char *name, | |||
634 | { | 645 | { |
635 | struct dataflash *priv; | 646 | struct dataflash *priv; |
636 | struct mtd_info *device; | 647 | struct mtd_info *device; |
648 | struct mtd_part_parser_data ppdata; | ||
637 | struct flash_platform_data *pdata = spi->dev.platform_data; | 649 | struct flash_platform_data *pdata = spi->dev.platform_data; |
638 | char *otp_tag = ""; | 650 | char *otp_tag = ""; |
639 | int err = 0; | 651 | int err = 0; |
@@ -675,7 +687,8 @@ add_dataflash_otp(struct spi_device *spi, char *name, | |||
675 | pagesize, otp_tag); | 687 | pagesize, otp_tag); |
676 | dev_set_drvdata(&spi->dev, priv); | 688 | dev_set_drvdata(&spi->dev, priv); |
677 | 689 | ||
678 | err = mtd_device_parse_register(device, NULL, 0, | 690 | ppdata.of_node = spi->dev.of_node; |
691 | err = mtd_device_parse_register(device, NULL, &ppdata, | ||
679 | pdata ? pdata->parts : NULL, | 692 | pdata ? pdata->parts : NULL, |
680 | pdata ? pdata->nr_parts : 0); | 693 | pdata ? pdata->nr_parts : 0); |
681 | 694 | ||
@@ -926,6 +939,7 @@ static struct spi_driver dataflash_driver = { | |||
926 | .name = "mtd_dataflash", | 939 | .name = "mtd_dataflash", |
927 | .bus = &spi_bus_type, | 940 | .bus = &spi_bus_type, |
928 | .owner = THIS_MODULE, | 941 | .owner = THIS_MODULE, |
942 | .of_match_table = dataflash_dt_ids, | ||
929 | }, | 943 | }, |
930 | 944 | ||
931 | .probe = dataflash_probe, | 945 | .probe = dataflash_probe, |