[PATCH 07/10] mtd: spi-nor: add mtd_is_locked() support

Brian Norris computersforpeace at gmail.com
Wed Sep 2 13:30:41 PDT 2015


On Wed, Sep 02, 2015 at 11:01:49AM +0200, Marek Vasut wrote:
> On Tuesday, September 01, 2015 at 09:57:12 PM, Brian Norris wrote:
> > This enables ioctl(MEMISLOCKED). Status can now be reported in the
> > mtdinfo or flash_lock utilities found in mtd-utils.
> > 
> > Signed-off-by: Brian Norris <computersforpeace at gmail.com>
> > ---
> >  drivers/mtd/spi-nor/spi-nor.c | 37 ++++++++++++++++++++++++++++++++++++-
> >  include/linux/mtd/spi-nor.h   |  3 +++
> >  2 files changed, 39 insertions(+), 1 deletion(-)
> > 
> > diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c
> > index 62fa1b4ff3c0..c4fb1205f1d3 100644
> > --- a/drivers/mtd/spi-nor/spi-nor.c
> > +++ b/drivers/mtd/spi-nor/spi-nor.c
...
> > @@ -549,6 +567,21 @@ static int spi_nor_unlock(struct mtd_info *mtd, loff_t
> > ofs, uint64_t len) return ret;
> >  }
> > 
> > +static int spi_nor_is_locked(struct mtd_info *mtd, loff_t ofs, uint64_t
> > len) +{
> > +	struct spi_nor *nor = mtd_to_spi_nor(mtd);
> > +	int ret;
> > +
> > +	ret = spi_nor_lock_and_prep(nor, SPI_NOR_OPS_UNLOCK);
> > +	if (ret)
> > +		return ret;
> > +
> > +	ret = nor->flash_is_locked(nor, ofs, len);
> 
> Is nor->flash_is_locked () always available or should you check this here ?

spi_nor_is_locked() is only used when all 3 of
flash_{lock,unlock,is_locked} are available:

	if (nor->flash_lock && nor->flash_unlock && nor->flash_is_locked) {
		mtd->_lock = spi_nor_lock;
		mtd->_unlock = spi_nor_unlock;
		mtd->_is_locked = spi_nor_is_locked;
	}

I think it's a reasonable condition to enforce, that we only provide
lock/unlock support if your flash also implements is_locked.

> > +
> > +	spi_nor_unlock_and_unprep(nor, SPI_NOR_OPS_LOCK);
> > +	return ret;
> > +}
> > +
> [...]

Brian



More information about the linux-mtd mailing list