aboutsummaryrefslogtreecommitdiff
path: root/libflash
diff options
context:
space:
mode:
authorCyril Bur <cyril.bur@au1.ibm.com>2015-08-26 16:02:34 +1000
committerStewart Smith <stewart@linux.vnet.ibm.com>2015-08-28 15:24:04 +1000
commit55c30aa53919fda1bd903630c4c92bca95cbd42d (patch)
tree865d63360c7103c7d9213dabc44bbc0f32d275d8 /libflash
parentaa0f5f4cb904faeff3ae53e35d16e5e12191de4e (diff)
downloadskiboot-55c30aa53919fda1bd903630c4c92bca95cbd42d.zip
skiboot-55c30aa53919fda1bd903630c4c92bca95cbd42d.tar.gz
skiboot-55c30aa53919fda1bd903630c4c92bca95cbd42d.tar.bz2
libflash: Reintroduce typesafety in lowlevel libflash calls
Previous work did away with some typesafety when adding the blocklevel_device abstraction, this has resulted in the ability to accidently call libflash low level code with a blocklevel_device which has not been initialised by the libflash backend. The end result will not be good. Best to reintroduce that low level calls be called with libflashes own structures. Signed-off-by: Cyril Bur <cyril.bur@au1.ibm.com> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
Diffstat (limited to 'libflash')
-rw-r--r--libflash/libflash.c6
-rw-r--r--libflash/libflash.h4
2 files changed, 4 insertions, 6 deletions
diff --git a/libflash/libflash.c b/libflash/libflash.c
index 4b9948b..c43f212 100644
--- a/libflash/libflash.c
+++ b/libflash/libflash.c
@@ -267,9 +267,8 @@ static int flash_erase(struct blocklevel_device *bl, uint32_t dst, uint32_t size
return 0;
}
-int flash_erase_chip(struct blocklevel_device *bl)
+int flash_erase_chip(struct flash_chip *c)
{
- struct flash_chip *c = container_of(bl, struct flash_chip, bl);
struct spi_flash_ctrl *ct = c->ctrl;
int rc;
@@ -692,9 +691,8 @@ static int flash_set_4b(struct flash_chip *c, bool enable)
return ct->cmd_wr(ct, enable ? CMD_EN4B : CMD_EX4B, false, 0, NULL, 0);
}
-int flash_force_4b_mode(struct blocklevel_device *bl, bool enable_4b)
+int flash_force_4b_mode(struct flash_chip *c, bool enable_4b)
{
- struct flash_chip *c = container_of(bl, struct flash_chip, bl);
struct spi_flash_ctrl *ct = c->ctrl;
int rc;
diff --git a/libflash/libflash.h b/libflash/libflash.h
index 3fdd00b..4fecfe7 100644
--- a/libflash/libflash.h
+++ b/libflash/libflash.h
@@ -57,7 +57,7 @@ void flash_exit_close(struct blocklevel_device *bl, void (*close)(struct spi_fla
/* libflash sets the 4b mode automatically based on the flash
* size and controller capabilities but it can be overriden
*/
-int flash_force_4b_mode(struct blocklevel_device *bl, bool enable_4b);
+int flash_force_4b_mode(struct flash_chip *c, bool enable_4b);
/*
* This provides a wapper around flash_read() on ECCed data. All params are
@@ -95,6 +95,6 @@ int flash_smart_write_corrected(struct blocklevel_device *bl, uint32_t dst, cons
/* chip erase may not be supported by all chips/controllers, get ready
* for FLASH_ERR_CHIP_ER_NOT_SUPPORTED
*/
-int flash_erase_chip(struct blocklevel_device *bl);
+int flash_erase_chip(struct flash_chip *c);
#endif /* __LIBFLASH_H */