All of lore.kernel.org
 help / color / mirror / Atom feed
From: Miquel Raynal <miquel.raynal@bootlin.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v2 04/21] mtd: Fallback to ->_read/write() when ->_read/write_oob() is missing
Date: Thu, 12 Jul 2018 10:05:32 +0200	[thread overview]
Message-ID: <20180712100532.562f8c7b@xps13> (raw)
In-Reply-To: <20180712002052.63ec7709@bbrezillon>

Hi Boris,

Boris Brezillon <boris.brezillon@bootlin.com> wrote on Thu, 12 Jul 2018
00:20:52 +0200:

> On Wed, 11 Jul 2018 17:25:12 +0200
> Miquel Raynal <miquel.raynal@bootlin.com> wrote:
> 
> > Some MTD sublayers/drivers are implementing ->_read/write() and
> > not ->_read/write_oob().
> > 
> > While for NAND devices both are usually valid, for NOR devices, using
> > the _oob variant has no real meaning. But, as the MTD layer is supposed
> > to hide as much as possible the flash complexity to the user, there is
> > no reason to error out while it is just a matter of rewritting things
> > internally.
> > 
> > Add a fallback on mtd->_read() (resp. mtd->_write()) when the user calls
> > mtd_read_oob() (resp. mtd_write_oob()) while mtd->_read_oob() (resp.
> > mtd->_write_oob) is not implemented. There is already a fallback on the
> > _oob variant if the former is used.  
> 
> Now I'm jealous. Can we have the same thing Linux :-).

U-Boot, one step ahead ;)

> 
> > 
> > Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
> > ---
> >  drivers/mtd/mtdcore.c | 26 ++++++++++++++++++++------
> >  1 file changed, 20 insertions(+), 6 deletions(-)
> > 
> > diff --git a/drivers/mtd/mtdcore.c b/drivers/mtd/mtdcore.c
> > index ba170f212e..095c58cf8c 100644
> > --- a/drivers/mtd/mtdcore.c
> > +++ b/drivers/mtd/mtdcore.c
> > @@ -1048,20 +1048,27 @@ int mtd_read_oob(struct mtd_info *mtd, loff_t from, struct mtd_oob_ops *ops)
> >  {
> >  	int ret_code;
> >  	ops->retlen = ops->oobretlen = 0;
> > -	if (!mtd->_read_oob)
> > -		return -EOPNOTSUPP;
> >  
> >  	ret_code = mtd_check_oob_ops(mtd, from, ops);
> >  	if (ret_code)
> >  		return ret_code;
> >  
> > +	/* Check the validity of a potential fallback on mtd->_read */
> > +	if ((!mtd->_read_oob) && (!mtd->_read || ops->oobbuf))  
> 
> Parens around !mtd->_read_oob are not needed.

[...]

> > -	return mtd->_write_oob(mtd, to, ops);
> > +	/* Check the validity of a potential fallback on mtd->_write */
> > +	if ((!mtd->_write_oob) && (!mtd->_write || ops->oobbuf))  
> 
> Ditto.
> 

Right!

Thanks,
Miquèl

  reply	other threads:[~2018-07-12  8:05 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-07-11 15:25 [U-Boot] [PATCH v2 00/21] SPI-NAND support Miquel Raynal
2018-07-11 15:25 ` [U-Boot] [PATCH v2 01/21] mtd: Fallback to ->_read/write_oob() when ->_read/write() is missing Miquel Raynal
2018-07-11 15:25 ` [U-Boot] [PATCH v2 02/21] mtd: Uninline mtd_write_oob and move it to mtdcore.c Miquel Raynal
2018-07-11 15:25 ` [U-Boot] [PATCH v2 03/21] mtd: Add sanity checks in mtd_write/read_oob() Miquel Raynal
2018-07-11 15:25 ` [U-Boot] [PATCH v2 04/21] mtd: Fallback to ->_read/write() when ->_read/write_oob() is missing Miquel Raynal
2018-07-11 22:20   ` Boris Brezillon
2018-07-12  8:05     ` Miquel Raynal [this message]
2018-07-11 15:25 ` [U-Boot] [PATCH v2 05/21] mtd: add get/set of_node/flash_node helpers Miquel Raynal
2018-07-11 15:25 ` [U-Boot] [PATCH v2 06/21] mtd: fix build issue with includes Miquel Raynal
2018-07-11 15:25 ` [U-Boot] [PATCH v2 07/21] mtd: move definitions to enlarge their range Miquel Raynal
2018-07-11 15:25 ` [U-Boot] [PATCH v2 08/21] mtd: move all flash categories inside MTD submenu Miquel Raynal
2018-07-11 15:25 ` [U-Boot] [PATCH v2 09/21] mtd: move NAND fiels into a raw/ subdirectory Miquel Raynal
2018-07-11 22:23   ` Boris Brezillon
2018-07-11 15:25 ` [U-Boot] [PATCH v2 10/21] mtd: rename nand into rawnand in Kconfig prompt Miquel Raynal
2018-07-11 15:25 ` [U-Boot] [PATCH v2 11/21] mtd: nand: Add core infrastructure to deal with NAND devices Miquel Raynal
2018-07-11 15:25 ` [U-Boot] [PATCH v2 12/21] mtd: nand: Pass mode information to nand_page_io_req Miquel Raynal
2018-07-11 15:25 ` [U-Boot] [PATCH v2 13/21] spi: Extend the core to ease integration of SPI memory controllers Miquel Raynal
2018-07-12 13:27   ` Stefan Roese
2018-07-12 14:46     ` Miquel Raynal
2018-07-11 15:25 ` [U-Boot] [PATCH v2 14/21] mtd: nand: Add core infrastructure to support SPI NANDs Miquel Raynal
2018-07-11 15:25 ` [U-Boot] [PATCH v2 15/21] mtd: spinand: Add initial support for Micron MT29F2G01ABAGD Miquel Raynal
2018-07-11 15:25 ` [U-Boot] [PATCH v2 16/21] mtd: spinand: Add initial support for Winbond W25M02GV Miquel Raynal
2018-07-11 15:25 ` [U-Boot] [PATCH v2 17/21] mtd: spinand: Add initial support for the MX35LF1GE4AB chip Miquel Raynal
2018-07-11 15:25 ` [U-Boot] [PATCH v2 18/21] mtd: spinand: Add initial support for the MX35LF2GE4AB chip Miquel Raynal
2018-07-11 15:25 ` [U-Boot] [PATCH v2 19/21] mtd: uclass: add probe function Miquel Raynal
2018-07-11 15:25 ` [U-Boot] [PATCH v2 20/21] cmd: mtd: add 'mtd' command Miquel Raynal
2018-07-11 22:42   ` Boris Brezillon
2018-07-12 12:51     ` Miquel Raynal
2018-07-12 13:12       ` Miquel Raynal
2018-07-11 15:25 ` [U-Boot] [PATCH v2 21/21] dt-bindings: Add bindings for SPI NAND devices Miquel Raynal
2018-07-11 22:44   ` Boris Brezillon
2018-07-12 12:29     ` Miquel Raynal

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180712100532.562f8c7b@xps13 \
    --to=miquel.raynal@bootlin.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.