From: Ezequiel Garcia <ezequiel.garcia@free-electrons.com>
To: Brian Norris <computersforpeace@gmail.com>
Cc: Lior Amsalem <alior@marvell.com>,
Thomas Petazzoni <thomas.petazzoni@free-electrons.com>,
Gregory Clement <gregory.clement@free-electrons.com>,
linux-mtd@lists.infradead.org,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v5 12/14] mtd: nand: pxa3xx: Introduce multiple page I/O support
Date: Thu, 14 Nov 2013 20:02:50 -0300 [thread overview]
Message-ID: <20131114230249.GC24184@localhost> (raw)
In-Reply-To: <20131114224056.GU9468@ld-irv-0074.broadcom.com>
On Thu, Nov 14, 2013 at 02:40:56PM -0800, Brian Norris wrote:
> On Thu, Nov 14, 2013 at 06:25:37PM -0300, Ezequiel Garcia wrote:
> > --- a/drivers/mtd/nand/pxa3xx_nand.c
> > +++ b/drivers/mtd/nand/pxa3xx_nand.c
> > @@ -1151,7 +1288,28 @@ static int armada370_ecc_init(struct pxa3xx_nand_info *info,
> > struct nand_ecc_ctrl *ecc,
> > int strength, int page_size)
> > {
> > - /* Unimplemented yet */
> > + if (strength == 4 && page_size == 4096) {
>
> I still think this sort of check can be improved just a bit. Can you
> comment on my additional diff, pasted below? (Not even compile-tested)
>
> > + info->ecc_bch = 1;
> > + info->chunk_size = 2048;
> > + info->spare_size = 32;
> > + info->ecc_size = 32;
> > + ecc->mode = NAND_ECC_HW;
> > + ecc->size = info->chunk_size;
> > + ecc->layout = &ecc_layout_4KB_bch4bit;
> > + ecc->strength = 16;
> > + return 1;
> > +
> > + } else if (strength == 8 && page_size == 4096) {
> > + info->ecc_bch = 1;
> > + info->chunk_size = 1024;
> > + info->spare_size = 0;
> > + info->ecc_size = 32;
> > + ecc->mode = NAND_ECC_HW;
> > + ecc->size = info->chunk_size;
> > + ecc->layout = &ecc_layout_4KB_bch8bit;
> > + ecc->strength = 16;
> > + return 1;
> > + }
> > return 0;
> > }
> >
>
> Brian
>
> diff --git a/drivers/mtd/nand/pxa3xx_nand.c b/drivers/mtd/nand/pxa3xx_nand.c
> index 8cb6640..e219d75 100644
> --- a/drivers/mtd/nand/pxa3xx_nand.c
> +++ b/drivers/mtd/nand/pxa3xx_nand.c
> @@ -1363,9 +1363,13 @@ static int pxa_ecc_init(struct pxa3xx_nand_info *info,
>
> static int armada370_ecc_init(struct pxa3xx_nand_info *info,
> struct nand_ecc_ctrl *ecc,
> - int strength, int page_size)
> + int strength, int ecc_stepsize, int page_size)
> {
> - if (strength == 4 && page_size == 4096) {
> + /*
> + * Required ECC: 4-bit correction per 512 bytes
> + * Select: 16-bit correction per 2048 bytes
> + */
> + if (strength == 4 && ecc_stepsize == 512 && page_size == 4096) {
> info->ecc_bch = 1;
> info->chunk_size = 2048;
> info->spare_size = 32;
> @@ -1376,7 +1380,11 @@ static int armada370_ecc_init(struct pxa3xx_nand_info *info,
> ecc->strength = 16;
> return 1;
>
> - } else if (strength == 8 && page_size == 4096) {
> + /*
> + * Required ECC: 8-bit correction per 512 bytes
> + * Select: 16-bit correction per 1024 bytes
> + */
> + } else if (strength == 8 && ecc_stepsize == 512 && page_size == 4096) {
> info->ecc_bch = 1;
> info->chunk_size = 1024;
> info->spare_size = 0;
> @@ -1484,6 +1492,7 @@ KEEP_CONFIG:
> if (info->variant == PXA3XX_NAND_VARIANT_ARMADA370)
> ret = armada370_ecc_init(info, &chip->ecc,
> chip->ecc_strength_ds,
> + chip->ecc_step_ds,
> mtd->writesize);
> else
> ret = pxa_ecc_init(info, &chip->ecc,
Looks good, but let me see if I'm getting this straight.
Your point is that an ECC "strength" is meaningless without
the _step_ definition.
So, I was assuming the step to be 512, and your diff is making such
assumption an explicit check.
Correct me if I didn't understand.
--
Ezequiel García, Free Electrons
Embedded Linux, Kernel and Android Engineering
http://free-electrons.com
WARNING: multiple messages have this Message-ID (diff)
From: ezequiel.garcia@free-electrons.com (Ezequiel Garcia)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v5 12/14] mtd: nand: pxa3xx: Introduce multiple page I/O support
Date: Thu, 14 Nov 2013 20:02:50 -0300 [thread overview]
Message-ID: <20131114230249.GC24184@localhost> (raw)
In-Reply-To: <20131114224056.GU9468@ld-irv-0074.broadcom.com>
On Thu, Nov 14, 2013 at 02:40:56PM -0800, Brian Norris wrote:
> On Thu, Nov 14, 2013 at 06:25:37PM -0300, Ezequiel Garcia wrote:
> > --- a/drivers/mtd/nand/pxa3xx_nand.c
> > +++ b/drivers/mtd/nand/pxa3xx_nand.c
> > @@ -1151,7 +1288,28 @@ static int armada370_ecc_init(struct pxa3xx_nand_info *info,
> > struct nand_ecc_ctrl *ecc,
> > int strength, int page_size)
> > {
> > - /* Unimplemented yet */
> > + if (strength == 4 && page_size == 4096) {
>
> I still think this sort of check can be improved just a bit. Can you
> comment on my additional diff, pasted below? (Not even compile-tested)
>
> > + info->ecc_bch = 1;
> > + info->chunk_size = 2048;
> > + info->spare_size = 32;
> > + info->ecc_size = 32;
> > + ecc->mode = NAND_ECC_HW;
> > + ecc->size = info->chunk_size;
> > + ecc->layout = &ecc_layout_4KB_bch4bit;
> > + ecc->strength = 16;
> > + return 1;
> > +
> > + } else if (strength == 8 && page_size == 4096) {
> > + info->ecc_bch = 1;
> > + info->chunk_size = 1024;
> > + info->spare_size = 0;
> > + info->ecc_size = 32;
> > + ecc->mode = NAND_ECC_HW;
> > + ecc->size = info->chunk_size;
> > + ecc->layout = &ecc_layout_4KB_bch8bit;
> > + ecc->strength = 16;
> > + return 1;
> > + }
> > return 0;
> > }
> >
>
> Brian
>
> diff --git a/drivers/mtd/nand/pxa3xx_nand.c b/drivers/mtd/nand/pxa3xx_nand.c
> index 8cb6640..e219d75 100644
> --- a/drivers/mtd/nand/pxa3xx_nand.c
> +++ b/drivers/mtd/nand/pxa3xx_nand.c
> @@ -1363,9 +1363,13 @@ static int pxa_ecc_init(struct pxa3xx_nand_info *info,
>
> static int armada370_ecc_init(struct pxa3xx_nand_info *info,
> struct nand_ecc_ctrl *ecc,
> - int strength, int page_size)
> + int strength, int ecc_stepsize, int page_size)
> {
> - if (strength == 4 && page_size == 4096) {
> + /*
> + * Required ECC: 4-bit correction per 512 bytes
> + * Select: 16-bit correction per 2048 bytes
> + */
> + if (strength == 4 && ecc_stepsize == 512 && page_size == 4096) {
> info->ecc_bch = 1;
> info->chunk_size = 2048;
> info->spare_size = 32;
> @@ -1376,7 +1380,11 @@ static int armada370_ecc_init(struct pxa3xx_nand_info *info,
> ecc->strength = 16;
> return 1;
>
> - } else if (strength == 8 && page_size == 4096) {
> + /*
> + * Required ECC: 8-bit correction per 512 bytes
> + * Select: 16-bit correction per 1024 bytes
> + */
> + } else if (strength == 8 && ecc_stepsize == 512 && page_size == 4096) {
> info->ecc_bch = 1;
> info->chunk_size = 1024;
> info->spare_size = 0;
> @@ -1484,6 +1492,7 @@ KEEP_CONFIG:
> if (info->variant == PXA3XX_NAND_VARIANT_ARMADA370)
> ret = armada370_ecc_init(info, &chip->ecc,
> chip->ecc_strength_ds,
> + chip->ecc_step_ds,
> mtd->writesize);
> else
> ret = pxa_ecc_init(info, &chip->ecc,
Looks good, but let me see if I'm getting this straight.
Your point is that an ECC "strength" is meaningless without
the _step_ definition.
So, I was assuming the step to be 512, and your diff is making such
assumption an explicit check.
Correct me if I didn't understand.
--
Ezequiel Garc?a, Free Electrons
Embedded Linux, Kernel and Android Engineering
http://free-electrons.com
next prev parent reply other threads:[~2013-11-14 23:02 UTC|newest]
Thread overview: 122+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-14 21:25 [PATCH v5 00/14] Armada 370/XP NAND support Ezequiel Garcia
2013-11-14 21:25 ` Ezequiel Garcia
2013-11-14 21:25 ` [PATCH v5 01/14] mtd: nand: pxa3xx: Use a completion to signal device ready Ezequiel Garcia
2013-11-14 21:25 ` Ezequiel Garcia
2013-11-14 21:25 ` [PATCH v5 02/14] mtd: nand: pxa3xx: Use waitfunc() to wait for the device to be ready Ezequiel Garcia
2013-11-14 21:25 ` Ezequiel Garcia
2013-11-14 21:25 ` [PATCH v5 03/14] mtd: nand: pxa3xx: Add bad block handling Ezequiel Garcia
2013-11-14 21:25 ` Ezequiel Garcia
2013-11-14 22:12 ` Brian Norris
2013-11-14 22:12 ` Brian Norris
2013-11-14 22:37 ` Ezequiel Garcia
2013-11-14 22:37 ` Ezequiel Garcia
2013-11-14 21:25 ` [PATCH v5 04/14] mtd: nand: pxa3xx: Add driver-specific ECC BCH support Ezequiel Garcia
2013-11-14 21:25 ` Ezequiel Garcia
2013-11-14 21:25 ` [PATCH v5 05/14] mtd: nand: pxa3xx: Clear cmd buffer #3 (NDCB3) on command start Ezequiel Garcia
2013-11-14 21:25 ` Ezequiel Garcia
2013-11-14 22:18 ` Brian Norris
2013-11-14 22:18 ` Brian Norris
2013-11-14 21:25 ` [PATCH v5 06/14] mtd: nand: pxa3xx: Add helper function to set page address Ezequiel Garcia
2013-11-14 21:25 ` Ezequiel Garcia
2013-11-14 21:25 ` [PATCH v5 07/14] mtd: nand: pxa3xx: Remove READ0 switch/case falltrough Ezequiel Garcia
2013-11-14 21:25 ` Ezequiel Garcia
2013-11-14 21:25 ` [PATCH v5 08/14] mtd: nand: pxa3xx: Split prepare_command_pool() in two stages Ezequiel Garcia
2013-11-14 21:25 ` Ezequiel Garcia
2013-11-14 21:25 ` [PATCH v5 09/14] mtd: nand: pxa3xx: Move the data buffer clean to prepare_start_command() Ezequiel Garcia
2013-11-14 21:25 ` Ezequiel Garcia
2013-11-14 22:25 ` Brian Norris
2013-11-14 22:25 ` Brian Norris
2013-11-14 22:45 ` Ezequiel Garcia
2013-11-14 22:45 ` Ezequiel Garcia
2013-11-14 21:25 ` [PATCH v5 10/14] mtd: nand: pxa3xx: Fix SEQIN column address set Ezequiel Garcia
2013-11-14 21:25 ` Ezequiel Garcia
2013-11-14 21:25 ` [PATCH v5 11/14] mtd: nand: pxa3xx: Add a read/write buffers markers Ezequiel Garcia
2013-11-14 21:25 ` Ezequiel Garcia
2013-11-14 21:25 ` [PATCH v5 12/14] mtd: nand: pxa3xx: Introduce multiple page I/O support Ezequiel Garcia
2013-11-14 21:25 ` Ezequiel Garcia
2013-11-14 22:40 ` Brian Norris
2013-11-14 22:40 ` Brian Norris
2013-11-14 23:02 ` Ezequiel Garcia [this message]
2013-11-14 23:02 ` Ezequiel Garcia
2013-11-14 23:07 ` Brian Norris
2013-11-14 23:07 ` Brian Norris
2013-11-14 21:25 ` [PATCH v5 13/14] mtd: nand: pxa3xx: Add multiple chunk write support Ezequiel Garcia
2013-11-14 21:25 ` Ezequiel Garcia
2013-11-14 21:25 ` [PATCH v5 14/14] mtd: nand: pxa3xx: Add ECC BCH correctable errors detection Ezequiel Garcia
2013-11-14 21:25 ` Ezequiel Garcia
2013-11-14 23:04 ` [PATCH v5 00/14] Armada 370/XP NAND support Brian Norris
2013-11-14 23:04 ` Brian Norris
2013-11-14 23:05 ` Brian Norris
2013-11-14 23:05 ` Brian Norris
2013-11-14 23:15 ` Ezequiel Garcia
2013-11-14 23:15 ` Ezequiel Garcia
2013-11-14 23:17 ` Brian Norris
2013-11-14 23:17 ` Brian Norris
2013-11-15 7:59 ` Daniel Mack
2013-11-15 7:59 ` Daniel Mack
2013-11-15 13:07 ` Ezequiel Garcia
2013-11-15 13:07 ` Ezequiel Garcia
2013-11-15 13:47 ` Daniel Mack
2013-11-15 13:47 ` Daniel Mack
2013-11-15 14:27 ` Ezequiel Garcia
2013-11-15 14:27 ` Ezequiel Garcia
2013-11-15 14:30 ` Daniel Mack
2013-11-15 14:30 ` Daniel Mack
2013-11-15 18:05 ` Brian Norris
2013-11-15 18:05 ` Brian Norris
2013-11-15 18:35 ` Ezequiel Garcia
2013-11-15 18:35 ` Ezequiel Garcia
2013-11-24 14:08 ` Arnaud Ebalard
2013-11-24 14:08 ` Arnaud Ebalard
2013-11-24 14:22 ` Thomas Petazzoni
2013-11-24 14:22 ` Thomas Petazzoni
2013-11-25 12:03 ` Ezequiel Garcia
2013-11-25 12:03 ` Ezequiel Garcia
2013-11-25 23:04 ` Arnaud Ebalard
2013-11-25 23:04 ` Arnaud Ebalard
2013-11-26 12:40 ` Ezequiel Garcia
2013-11-26 12:40 ` Ezequiel Garcia
2013-11-27 20:24 ` Arnaud Ebalard
2013-11-27 20:24 ` Arnaud Ebalard
2013-11-27 20:52 ` Arnaud Ebalard
2013-11-27 20:52 ` Arnaud Ebalard
2013-11-28 7:48 ` Ricard Wanderlof
2013-11-28 7:48 ` Ricard Wanderlof
2013-11-28 18:50 ` Ezequiel Garcia
2013-11-28 18:50 ` Ezequiel Garcia
2013-11-29 23:25 ` Arnaud Ebalard
2013-11-29 23:25 ` Arnaud Ebalard
2013-12-02 10:33 ` Ezequiel Garcia
2013-12-02 10:33 ` Ezequiel Garcia
2013-12-02 21:05 ` Arnaud Ebalard
2013-12-02 21:05 ` Arnaud Ebalard
2013-12-03 0:22 ` Ezequiel Garcia
2013-12-03 0:22 ` Ezequiel Garcia
2013-12-03 20:21 ` Arnaud Ebalard
2013-12-03 20:21 ` Arnaud Ebalard
2013-12-03 21:25 ` Arnaud Ebalard
2013-12-03 21:25 ` Arnaud Ebalard
2013-12-04 14:20 ` Ezequiel Garcia
2013-12-04 14:20 ` Ezequiel Garcia
2013-12-04 14:41 ` Ezequiel Garcia
2013-12-04 14:41 ` Ezequiel Garcia
2013-12-04 20:48 ` Arnaud Ebalard
2013-12-04 20:48 ` Arnaud Ebalard
2013-12-05 20:42 ` Arnaud Ebalard
2013-12-05 20:42 ` Arnaud Ebalard
2013-12-05 22:24 ` [PATCH v5 00/14] Armada 370/XP NAND supportg Ezequiel Garcia
2013-12-05 22:24 ` Ezequiel Garcia
2013-12-06 12:56 ` [PATCH v5 00/14] Armada 370/XP NAND support Ezequiel Garcia
2013-12-06 12:56 ` Ezequiel Garcia
2013-12-06 21:41 ` Arnaud Ebalard
2013-12-06 21:41 ` Arnaud Ebalard
2013-12-06 22:05 ` Ezequiel Garcia
2013-12-06 22:05 ` Ezequiel Garcia
2013-12-05 21:32 ` Brian Norris
2013-12-05 21:32 ` Brian Norris
2013-12-05 21:23 ` Brian Norris
2013-12-05 21:23 ` Brian Norris
2013-12-05 22:23 ` Ezequiel Garcia
2013-12-05 22:23 ` Ezequiel Garcia
2013-12-05 22:45 ` Brian Norris
2013-12-05 22:45 ` 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=20131114230249.GC24184@localhost \
--to=ezequiel.garcia@free-electrons.com \
--cc=alior@marvell.com \
--cc=computersforpeace@gmail.com \
--cc=gregory.clement@free-electrons.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-mtd@lists.infradead.org \
--cc=thomas.petazzoni@free-electrons.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.