Merge tag 'u-boot-imx-20190719' of https://gitlab.denx.de/u-boot/custodians/u-boot-imx
[platform/kernel/u-boot.git] / drivers / mtd / spi / sf_probe.c
index 00f8558..73297e1 100644 (file)
@@ -40,7 +40,7 @@ static int spi_flash_probe_slave(struct spi_flash *flash)
                return ret;
        }
 
-       ret = spi_flash_scan(flash);
+       ret = spi_nor_scan(flash);
        if (ret)
                goto err_read_id;
 
@@ -96,32 +96,38 @@ static int spi_flash_std_read(struct udevice *dev, u32 offset, size_t len,
                              void *buf)
 {
        struct spi_flash *flash = dev_get_uclass_priv(dev);
+       struct mtd_info *mtd = &flash->mtd;
+       size_t retlen;
 
-       return log_ret(spi_flash_cmd_read_ops(flash, offset, len, buf));
+       return log_ret(mtd->_read(mtd, offset, len, &retlen, buf));
 }
 
 static int spi_flash_std_write(struct udevice *dev, u32 offset, size_t len,
                               const void *buf)
 {
        struct spi_flash *flash = dev_get_uclass_priv(dev);
+       struct mtd_info *mtd = &flash->mtd;
+       size_t retlen;
 
-#if defined(CONFIG_SPI_FLASH_SST)
-       if (flash->flags & SNOR_F_SST_WR) {
-               if (flash->spi->mode & SPI_TX_BYTE)
-                       return sst_write_bp(flash, offset, len, buf);
-               else
-                       return sst_write_wp(flash, offset, len, buf);
-       }
-#endif
-
-       return spi_flash_cmd_write_ops(flash, offset, len, buf);
+       return mtd->_write(mtd, offset, len, &retlen, buf);
 }
 
 static int spi_flash_std_erase(struct udevice *dev, u32 offset, size_t len)
 {
        struct spi_flash *flash = dev_get_uclass_priv(dev);
+       struct mtd_info *mtd = &flash->mtd;
+       struct erase_info instr;
+
+       if (offset % mtd->erasesize || len % mtd->erasesize) {
+               printf("SF: Erase offset/length not multiple of erase size\n");
+               return -EINVAL;
+       }
+
+       memset(&instr, 0, sizeof(instr));
+       instr.addr = offset;
+       instr.len = len;
 
-       return spi_flash_cmd_erase_ops(flash, offset, len);
+       return mtd->_erase(mtd, &instr);
 }
 
 static int spi_flash_std_get_sw_write_prot(struct udevice *dev)
@@ -160,7 +166,7 @@ static const struct dm_spi_flash_ops spi_flash_std_ops = {
 };
 
 static const struct udevice_id spi_flash_std_ids[] = {
-       { .compatible = "spi-flash" },
+       { .compatible = "jedec,spi-nor" },
        { }
 };