[U-Boot] [PATCH v2 2/2] dm: sf: Make SST flash write op work again

With SPI flash moving to driver model, commit fbb0991 "dm: Convert spi_flash_probe() and 'sf probe' to use driver model" ignored the SST flash-specific write op (byte program & word program), which actually broke the SST flash from wroking.
This commit makes SST flash work again under driver model, by adding SST flash-specific handling in the spi_flash_std_write().
Signed-off-by: Bin Meng bmeng.cn@gmail.com
---
Changes in v2: - Instead of creating an SST flash-specifc driver to handle the write op, handle that in the standard spi_flash_std_write(). - Drop the crownbay.dts update patch
drivers/mtd/spi/sf_probe.c | 9 +++++++++ 1 file changed, 9 insertions(+)
diff --git a/drivers/mtd/spi/sf_probe.c b/drivers/mtd/spi/sf_probe.c index ac93114..038fe2d 100644 --- a/drivers/mtd/spi/sf_probe.c +++ b/drivers/mtd/spi/sf_probe.c @@ -472,6 +472,15 @@ int spi_flash_std_write(struct udevice *dev, u32 offset, size_t len, { struct spi_flash *flash = dev_get_uclass_priv(dev);
+#if defined(CONFIG_SPI_FLASH_SST) + if (flash->flags & SST_WR) { + if (flash->spi->op_mode_tx & SPI_OPM_TX_BP) + 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); }

On 24 April 2015 at 17:21, Bin Meng bmeng.cn@gmail.com wrote:
With SPI flash moving to driver model, commit fbb0991 "dm: Convert spi_flash_probe() and 'sf probe' to use driver model" ignored the SST flash-specific write op (byte program & word program), which actually broke the SST flash from wroking.
This commit makes SST flash work again under driver model, by adding SST flash-specific handling in the spi_flash_std_write().
Signed-off-by: Bin Meng bmeng.cn@gmail.com
Changes in v2:
- Instead of creating an SST flash-specifc driver to handle the write op, handle that in the standard spi_flash_std_write().
- Drop the crownbay.dts update patch
drivers/mtd/spi/sf_probe.c | 9 +++++++++ 1 file changed, 9 insertions(+)
diff --git a/drivers/mtd/spi/sf_probe.c b/drivers/mtd/spi/sf_probe.c index ac93114..038fe2d 100644 --- a/drivers/mtd/spi/sf_probe.c +++ b/drivers/mtd/spi/sf_probe.c @@ -472,6 +472,15 @@ int spi_flash_std_write(struct udevice *dev, u32 offset, size_t len, { struct spi_flash *flash = dev_get_uclass_priv(dev);
+#if defined(CONFIG_SPI_FLASH_SST)
if (flash->flags & SST_WR) {
if (flash->spi->op_mode_tx & SPI_OPM_TX_BP)
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);
}
-- 1.8.2.1
Applied to u-boot-spi/master
thanks!
participants (2)
-
Bin Meng
-
Jagan Teki