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

Cyril Bur cyril.bur at au1.ibm.com
Wed Aug 26 13:13:35 AEST 2015


On Wed, 26 Aug 2015 10:25:14 +1000
Samuel Mendoza-Jonas <sam.mj at au1.ibm.com> wrote:

> 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?
> 

Good point, there's a bit of rejigging but really not that much, I'll send a v3 

> >  
> >  #endif /* __LIBFLASH_H */
> > 
> 
> 



More information about the Skiboot mailing list