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