Signed-off-by: Mingkai Hu <mingkai...@freescale.com> --- drivers/of/of_spi.c | 11 +++++++++++ drivers/spi/spi_mpc8xxx.c | 1 + 2 files changed, 12 insertions(+), 0 deletions(-)
diff --git a/drivers/of/of_spi.c b/drivers/of/of_spi.c index 5fed7e3..284ca0e 100644 --- a/drivers/of/of_spi.c +++ b/drivers/of/of_spi.c @@ -10,6 +10,8 @@ #include <linux/device.h> #include <linux/spi/spi.h> #include <linux/of_spi.h> +#include <linux/spi/flash.h> +#include <linux/mtd/partitions.h> /** * of_register_spi_devices - Register child devices onto the SPI bus @@ -26,6 +28,7 @@ void of_register_spi_devices(struct spi_master *master, struct device_node *np) const __be32 *prop; int rc; int len; + struct flash_platform_data *pdata; for_each_child_of_node(np, nc) { /* Alloc an spi_device */ @@ -81,6 +84,14 @@ void of_register_spi_devices(struct spi_master *master, struct device_node *np) of_node_get(nc); spi->dev.of_node = nc; + /* Parse the mtd partitions */ + pdata = kzalloc(sizeof(*pdata), GFP_KERNEL); + if (!pdata) + return; + pdata->nr_parts = of_mtd_parse_partitions(&master->dev, + nc, &pdata->parts); + spi->dev.platform_data = pdata; + /* Register the new device */ request_module(spi->modalias); rc = spi_add_device(spi); diff --git a/drivers/spi/spi_mpc8xxx.c b/drivers/spi/spi_mpc8xxx.c index efed70e..0fadaeb 100644 --- a/drivers/spi/spi_mpc8xxx.c +++ b/drivers/spi/spi_mpc8xxx.c @@ -137,6 +137,7 @@ int mpc8xxx_spi_transfer(struct spi_device *spi, void mpc8xxx_spi_cleanup(struct spi_device *spi) { + kfree(spi->dev.platform_data); kfree(spi->controller_state); } -- 1.6.4 _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev