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>
This commit is contained in:
committed by
Artem Bityutskiy
parent
f3c8cfc237
commit
b94e757c4b
14
Documentation/devicetree/bindings/mtd/atmel-dataflash.txt
Normal file
14
Documentation/devicetree/bindings/mtd/atmel-dataflash.txt
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
* Atmel Data Flash
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- compatible : "atmel,<model>", "atmel,<series>", "atmel,dataflash".
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
flash@1 {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <1>;
|
||||||
|
compatible = "atmel,at45db321d", "atmel,at45", "atmel,dataflash";
|
||||||
|
spi-max-frequency = <25000000>;
|
||||||
|
reg = <1>;
|
||||||
|
};
|
@@ -17,6 +17,8 @@
|
|||||||
#include <linux/mutex.h>
|
#include <linux/mutex.h>
|
||||||
#include <linux/err.h>
|
#include <linux/err.h>
|
||||||
#include <linux/math64.h>
|
#include <linux/math64.h>
|
||||||
|
#include <linux/of.h>
|
||||||
|
#include <linux/of_device.h>
|
||||||
|
|
||||||
#include <linux/spi/spi.h>
|
#include <linux/spi/spi.h>
|
||||||
#include <linux/spi/flash.h>
|
#include <linux/spi/flash.h>
|
||||||
@@ -24,7 +26,6 @@
|
|||||||
#include <linux/mtd/mtd.h>
|
#include <linux/mtd/mtd.h>
|
||||||
#include <linux/mtd/partitions.h>
|
#include <linux/mtd/partitions.h>
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* DataFlash is a kind of SPI flash. Most AT45 chips have two buffers in
|
* DataFlash is a kind of SPI flash. Most AT45 chips have two buffers in
|
||||||
* each chip, which may be used for double buffered I/O; but this driver
|
* each chip, which may be used for double buffered I/O; but this driver
|
||||||
@@ -98,6 +99,16 @@ struct dataflash {
|
|||||||
struct mtd_info mtd;
|
struct mtd_info mtd;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#ifdef CONFIG_OF
|
||||||
|
static const struct of_device_id dataflash_dt_ids[] = {
|
||||||
|
{ .compatible = "atmel,at45", },
|
||||||
|
{ .compatible = "atmel,dataflash", },
|
||||||
|
{ /* sentinel */ }
|
||||||
|
};
|
||||||
|
#else
|
||||||
|
#define dataflash_dt_ids NULL
|
||||||
|
#endif
|
||||||
|
|
||||||
/* ......................................................................... */
|
/* ......................................................................... */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -634,6 +645,7 @@ add_dataflash_otp(struct spi_device *spi, char *name,
|
|||||||
{
|
{
|
||||||
struct dataflash *priv;
|
struct dataflash *priv;
|
||||||
struct mtd_info *device;
|
struct mtd_info *device;
|
||||||
|
struct mtd_part_parser_data ppdata;
|
||||||
struct flash_platform_data *pdata = spi->dev.platform_data;
|
struct flash_platform_data *pdata = spi->dev.platform_data;
|
||||||
char *otp_tag = "";
|
char *otp_tag = "";
|
||||||
int err = 0;
|
int err = 0;
|
||||||
@@ -675,7 +687,8 @@ add_dataflash_otp(struct spi_device *spi, char *name,
|
|||||||
pagesize, otp_tag);
|
pagesize, otp_tag);
|
||||||
dev_set_drvdata(&spi->dev, priv);
|
dev_set_drvdata(&spi->dev, priv);
|
||||||
|
|
||||||
err = mtd_device_parse_register(device, NULL, 0,
|
ppdata.of_node = spi->dev.of_node;
|
||||||
|
err = mtd_device_parse_register(device, NULL, &ppdata,
|
||||||
pdata ? pdata->parts : NULL,
|
pdata ? pdata->parts : NULL,
|
||||||
pdata ? pdata->nr_parts : 0);
|
pdata ? pdata->nr_parts : 0);
|
||||||
|
|
||||||
@@ -926,6 +939,7 @@ static struct spi_driver dataflash_driver = {
|
|||||||
.name = "mtd_dataflash",
|
.name = "mtd_dataflash",
|
||||||
.bus = &spi_bus_type,
|
.bus = &spi_bus_type,
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
|
.of_match_table = dataflash_dt_ids,
|
||||||
},
|
},
|
||||||
|
|
||||||
.probe = dataflash_probe,
|
.probe = dataflash_probe,
|
||||||
|
Reference in New Issue
Block a user