From: Marek Vasut <marex@denx.de>
To: Matthieu CASTET <matthieu.castet@parrot.com>
Cc: Scott Wood <scottwood@freescale.com>,
"linux-mtd@lists.infradead.org" <linux-mtd@lists.infradead.org>,
Brian Norris <computersforpeace@gmail.com>,
David Woodhouse <dwmw2@infradead.org>,
Artem Bityutskiy <dedekind1@gmail.com>
Subject: Re: [PATCH RESEND] mtd: nand: allow NAND_NO_SUBPAGE_WRITE to be set from driver
Date: Tue, 31 Jul 2012 16:12:27 +0200 [thread overview]
Message-ID: <201207311612.28066.marex@denx.de> (raw)
In-Reply-To: <5017E737.403@parrot.com>
Dear Matthieu CASTET,
> Marek Vasut a écrit :
> > Dear Matthieu CASTET,
> >
> >> Hi Marek,
> >>
> >> Marek Vasut a écrit :
> >>> Dear Matthieu CASTET,
> >>>
> >>>> Hi,
> >>>>
> >>>> for ONFI flash (like this micron one) the information should be
> >>>> extracted form the ONFI table (programs_per_page IIRC)
> >>>>
> >>>> This should be better than relying on the SOC driver for setting this
> >>>> flags.
> >>>>
> >>>> Does the gpmi driver set this flag because it do not support partial
> >>>> write ?
> >>>
> >>> Yes
> >>>
> >>>> In this case why it doesn't set chip->ecc.steps to 1 ?
> >>>
> >>> Can you elabore how exactly will that help please?
> >>
> >> If you look at the nand_base.c, you will see that mtd->subpage_sft = 0
> >> if NAND_NO_SUBPAGE_WRITE flags is set or chip->ecc.steps == 1 [1].
> >
> > Ok, this is what I saw coming ... this is yet another hole in the design
> > and I see only undefined behavior. So if default: branch started
> > returning an error, this whole code will break again.
>
> Do you see any reason why chip->ecc.steps == 1 will return an error ?
> This will break drivers.
It'd be enough if mtd->subpage_sft was inited to some other value. So either add
"case 1: mtd->subpage_sft = 0; break;" or go with this patch. Either way is fine
by me.
> The behavior match the comment : "Allow subpage writes up to ecc.steps"
>
> Matthieu
>
> >> [1]
> >>
> >> /* Allow subpage writes up to ecc.steps. Not possible for MLC flash
> >> */ if (!(chip->options & NAND_NO_SUBPAGE_WRITE) &&
> >>
> >> !(chip->cellinfo & NAND_CI_CELLTYPE_MSK)) {
> >> switch (chip->ecc.steps) {
> >>
> >> case 2:
> >> mtd->subpage_sft = 1;
> >> break;
> >>
> >> case 4:
> >> case 8:
> >>
> >> case 16:
> >> mtd->subpage_sft = 2;
> >> break;
> >>
> >> }
> >>
> >> }
> >> chip->subpagesize = mtd->writesize >> mtd->subpage_sft;
Best regards,
Marek Vasut
next prev parent reply other threads:[~2012-07-31 14:12 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-07-31 1:02 [PATCH RESEND] mtd: nand: allow NAND_NO_SUBPAGE_WRITE to be set from driver Brian Norris
2012-07-31 4:17 ` Marek Vasut
2012-07-31 7:33 ` Matthieu CASTET
2012-07-31 13:20 ` Marek Vasut
2012-07-31 13:28 ` Matthieu CASTET
2012-07-31 13:59 ` Marek Vasut
2012-07-31 14:09 ` Matthieu CASTET
2012-07-31 14:12 ` Marek Vasut [this message]
2012-07-31 16:11 ` Scott Wood
2012-08-01 2:21 ` Huang Shijie
2012-08-01 13:05 ` Matthieu CASTET
2012-08-01 16:15 ` Scott Wood
2012-08-02 1:08 ` Brian Norris
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=201207311612.28066.marex@denx.de \
--to=marex@denx.de \
--cc=computersforpeace@gmail.com \
--cc=dedekind1@gmail.com \
--cc=dwmw2@infradead.org \
--cc=linux-mtd@lists.infradead.org \
--cc=matthieu.castet@parrot.com \
--cc=scottwood@freescale.com \
/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.