[Skiboot] [PATCH 1/2] libflash: don't use the low level interface if it doesn't exist
Cyril Bur
cyrilbur at gmail.com
Wed Apr 1 16:55:03 AEDT 2015
I'll rebase these onto master, sorry.
On Wed, 2015-04-01 at 16:51 +1100, Cyril Bur wrote:
> During init libflash calls low level functions without checking.
>
> libflash states to backends that if they implement all the higher level
> functions the lower level functions are optional (from libflash-priv.h):
> If all functions of the high level interface are
> implemented then the low level one is optional. A
> controller can implement some of the high level one
> in which case the missing ones will be handled by
> libflash using the low level interface.
>
> Signed-off-by: Cyril Bur <cyril.bur at au1.ibm.com>
> ---
> libflash/libflash.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/libflash/libflash.c b/libflash/libflash.c
> index 5b8a0ac..bb6f097 100644
> --- a/libflash/libflash.c
> +++ b/libflash/libflash.c
> @@ -668,6 +668,10 @@ static int flash_set_4b(struct flash_chip *c, bool enable)
> struct spi_flash_ctrl *ct = c->ctrl;
> int rc;
>
> + /* Don't have low level interface, assume all is well */
> + if (!ct->cmd_wr)
> + return 0;
> +
> /* Some flash chips want this */
> rc = fl_wren(ct);
> if (rc) {
> @@ -676,7 +680,6 @@ static int flash_set_4b(struct flash_chip *c, bool enable)
> }
>
> /* Ignore error in case chip is write protected */
> -
> return ct->cmd_wr(ct, enable ? CMD_EN4B : CMD_EX4B, false, 0, NULL, 0);
> }
>
> @@ -758,7 +761,6 @@ static int flash_configure(struct flash_chip *c)
> return rc;
> }
> }
> -
> /* Set controller to 3b mode if mode switch is supported */
> if (ct->set_4b) {
> FL_DBG("LIBFLASH: Disabling controller 4B mode...\n");
More information about the Skiboot
mailing list