summaryrefslogtreecommitdiffstats
path: root/drivers/mtd/spi/spi_flash.c
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2012-03-04 23:18:17 -0500
committerMike Frysinger <vapier@gentoo.org>2012-03-04 23:18:17 -0500
commit41e1713425d9817fdbe4fc89ad11b8dc9c4fca30 (patch)
treecc284fbfb28cd5da90278a9af9849596cb82548e /drivers/mtd/spi/spi_flash.c
parent7a6d2a7ec1afb53df8b78185fe77d66423c8dcea (diff)
downloadtalos-obmc-uboot-41e1713425d9817fdbe4fc89ad11b8dc9c4fca30.tar.gz
talos-obmc-uboot-41e1713425d9817fdbe4fc89ad11b8dc9c4fca30.zip
sf: unify status register writing (and thus block unlocking)
The only two drivers to write the status register do it in the same way, so unify the implementations. This also makes the block unlock logic the same. Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Diffstat (limited to 'drivers/mtd/spi/spi_flash.c')
-rw-r--r--drivers/mtd/spi/spi_flash.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/drivers/mtd/spi/spi_flash.c b/drivers/mtd/spi/spi_flash.c
index 4ab4e13b46..00aece9291 100644
--- a/drivers/mtd/spi/spi_flash.c
+++ b/drivers/mtd/spi/spi_flash.c
@@ -242,6 +242,33 @@ int spi_flash_cmd_erase(struct spi_flash *flash, u32 offset, size_t len)
return ret;
}
+int spi_flash_cmd_write_status(struct spi_flash *flash, u8 sr)
+{
+ u8 cmd;
+ int ret;
+
+ ret = spi_flash_cmd_write_enable(flash);
+ if (ret < 0) {
+ debug("SF: enabling write failed\n");
+ return ret;
+ }
+
+ cmd = CMD_WRITE_STATUS;
+ ret = spi_flash_cmd_write(flash->spi, &cmd, 1, &sr, 1);
+ if (ret) {
+ debug("SF: fail to write status register\n");
+ return ret;
+ }
+
+ ret = spi_flash_cmd_wait_ready(flash, SPI_FLASH_PROG_TIMEOUT);
+ if (ret < 0) {
+ debug("SF: write status register timed out\n");
+ return ret;
+ }
+
+ return 0;
+}
+
/*
* The following table holds all device probe functions
*
OpenPOWER on IntegriCloud