[Skiboot] [PATCH v2 2/7] libflash: Reintroduce typesafety in lowlevel libflash calls

Samuel Mendoza-Jonas sam.mj at au1.ibm.com
Wed Aug 26 10:25:14 AEST 2015


On 24/08/15 16:08, Cyril Bur wrote:
> 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 at au1.ibm.com>
> ---
>  libflash/libflash.c | 6 ++----
>  libflash/libflash.h | 4 ++--
>  2 files changed, 4 insertions(+), 6 deletions(-)
> 
> diff --git a/libflash/libflash.c b/libflash/libflash.c
> index 831bdd4..18357fb 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 fa5143a..82b38ca 100644
> --- a/libflash/libflash.h
> +++ b/libflash/libflash.h
> @@ -52,7 +52,7 @@ void flash_exit(struct blocklevel_device *bl);
>  /* 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
> @@ -90,6 +90,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);

I'm sure I'm guilty of this myself elsewhere, but this is going to break pflash between this patch
and the next isn't it? Would it be neater to have 3/7 occur first (adding the arch calls), and then
have a transition patch?

>  
>  #endif /* __LIBFLASH_H */
> 


-- 
-----------
LTC Ozlabs
IBM



More information about the Skiboot mailing list