RFC on large number of hacks in mtd core files

Boris Brezillon boris.brezillon at free-electrons.com
Sat Jan 30 03:37:09 PST 2016


On Fri, 29 Jan 2016 10:14:29 -0800
Brian Norris <computersforpeace at gmail.com> wrote:

> On Fri, Jan 29, 2016 at 05:27:17PM +0100, Boris Brezillon wrote:
> > On Mon, 25 Jan 2016 18:34:50 +0100
> > Mason <slash.tmp at free.fr> wrote:
> > > @@ -2888,16 +2951,29 @@ static int nand_flash_detect_onfi(struct mtd_info *mtd, struct nand_chip *chip,
> > >  	sanitize_string(p->model, sizeof(p->model));
> > >  	if (!mtd->name)
> > >  		mtd->name = p->model;
> > > +
> > >  	mtd->writesize = le32_to_cpu(p->byte_per_page);
> > > -	mtd->erasesize = le32_to_cpu(p->pages_per_block) * mtd->writesize;
> > > +
> > > +	/*
> > > +	 * pages_per_block and blocks_per_lun may not be a power-of-2 size
> > > +	 * (don't ask me who thought of this...). MTD assumes that these
> > > +	 * dimensions will be power-of-2, so just truncate the remaining area.
> > > +	 */
> > > +	mtd->erasesize = 1 << (fls(le32_to_cpu(p->pages_per_block)) - 1);
> > > +	mtd->erasesize *= mtd->writesize;
> > > +
> > 
> > Hm, I'd like to have a real example (all the chips I've seen so far
> > are using power-of-2 here). And even if that's the case, then this means
> > we should patch nand_base to deal with that.
> > 
> > >  	mtd->oobsize = le16_to_cpu(p->spare_bytes_per_page);
> > > -	chip->chipsize = le32_to_cpu(p->blocks_per_lun);
> > > +
> > > +	/* See erasesize comment */
> > > +	chip->chipsize = 1 << (fls(le32_to_cpu(p->blocks_per_lun)) - 1);
> > 
> > Ditto.
> 
> It looks like he borrowed these from this commit of mine:
> 
> commit 4355b70cf48363c50a9de450b01178c83aba8f6a
> Author: Brian Norris <computersforpeace at gmail.com>
> Date:   Tue Aug 27 18:45:10 2013 -0700
> 
>     mtd: nand: hack ONFI for non-power-of-2 dimensions
> 
> As evidenced in the commit subject ("hack"), it's debatably a shortcut
> that could have been dealt with in other ways.

Oh, interesting, so I was definitely wrong about that, thanks for
pointing this out.

-- 
Boris Brezillon, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com



More information about the linux-mtd mailing list