Hi Jagan, On 26 November 2015 at 04:03, Jagan Teki <jt...@openedev.com> wrote: > This patch add support to use spi_flash_scan in > dm-spi-flash probe, so-that it can access > the spi_flash functionalities same as non-dm sf probe. > > Signed-off-by: Jagan Teki <jt...@openedev.com> > --- > drivers/mtd/spi/sf_probe.c | 28 +++++++++++++++++++++++++--- > 1 file changed, 25 insertions(+), 3 deletions(-) > > diff --git a/drivers/mtd/spi/sf_probe.c b/drivers/mtd/spi/sf_probe.c > index f2e210d..60856f9 100644 > --- a/drivers/mtd/spi/sf_probe.c > +++ b/drivers/mtd/spi/sf_probe.c > @@ -137,14 +137,36 @@ int spi_flash_std_erase(struct udevice *dev, u32 > offset, size_t len) > > int spi_flash_std_probe(struct udevice *dev) > { > - struct spi_slave *slave = dev_get_parent_priv(dev); > struct dm_spi_slave_platdata *plat = dev_get_parent_platdata(dev); > + struct spi_slave *slave = dev_get_parent_priv(dev); > struct spi_flash *flash; > + int ret; > + > + debug("%s: slave=%p, cs=%d\n", __func__, slave, plat->cs); > > flash = dev_get_uclass_priv(dev); > flash->dev = dev; > - debug("%s: slave=%p, cs=%d\n", __func__, slave, plat->cs); > - return spi_flash_probe_slave(slave, flash); > + > + /* Claim spi bus */ > + ret = spi_claim_bus(slave); > + if (ret) { > + debug("SF: Failed to claim SPI bus: %d\n", ret); > + return ret; > + } > + > + ret = spi_flash_scan(slave, flash); > + if (ret) { > + ret = -EINVAL; > + goto err_read_id; > + } > + > +#ifdef CONFIG_SPI_FLASH_MTD > + ret = spi_flash_mtd_register(flash); > +#endif
But you can't call this from driver model code. As far as I can see the MTD layer does not support driver model. You are going to create a plate of spaghetti and it will be a big job to untangle it. > + > +err_read_id: > + spi_release_bus(slave); > + return ret; > } > > static const struct dm_spi_flash_ops spi_flash_std_ops = { > -- > 1.9.1 > Regards, Simon _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot