
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 jteki@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 + +err_read_id: + spi_release_bus(slave); + return ret; }
static const struct dm_spi_flash_ops spi_flash_std_ops = {