All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Jörg Krause" <jkrause@posteo.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 1/2] mtd:mxs:nand calculate ecc strength dynamically
Date: Wed, 28 Jan 2015 00:14:59 +0100	[thread overview]
Message-ID: <1422400499.22055.27.camel@posteo.de> (raw)
In-Reply-To: <1418963953-1623-1-git-send-email-Peng.Fan@freescale.com>

On Fr, 2014-12-19 at 12:39 +0800, Peng Fan wrote:
> Calculate ecc strength according oobsize, but not hardcoded
> which is not aligned with kernel driver
> 
> Signed-off-by: Peng Fan <Peng.Fan@freescale.com>
> Signed-off-by: Ye.Li <b37916@freescale.com>
> ---
>  drivers/mtd/nand/mxs_nand.c | 22 ++++------------------
>  1 file changed, 4 insertions(+), 18 deletions(-)
> 
> diff --git a/drivers/mtd/nand/mxs_nand.c b/drivers/mtd/nand/mxs_nand.c
> index 7a064ab..a45fcf9 100644
> --- a/drivers/mtd/nand/mxs_nand.c
> +++ b/drivers/mtd/nand/mxs_nand.c
> @@ -146,26 +146,12 @@ static uint32_t mxs_nand_aux_status_offset(void)
>  static inline uint32_t mxs_nand_get_ecc_strength(uint32_t page_data_size,
>  						uint32_t page_oob_size)
>  {
> -	if (page_data_size == 2048) {
> -		if (page_oob_size == 64)
> -			return 8;
> +	int ecc_strength;
>  
> -		if (page_oob_size == 112)
> -			return 14;
> -	}
> -
> -	if (page_data_size == 4096) {
> -		if (page_oob_size == 128)
> -			return 8;
> -
> -		if (page_oob_size == 218)
> -			return 16;
> +	ecc_strength = ((page_oob_size - MXS_NAND_METADATA_SIZE) * 8)
> +			/ (13 * mxs_nand_ecc_chunk_cnt(page_data_size));
>  
> -		if (page_oob_size == 224)
> -			return 16;
> -	}
> -
> -	return 0;
> +	return round_down(ecc_strength, 2);
>  }
>  
>  static inline uint32_t mxs_nand_get_mark_offset(uint32_t page_data_size,

Many thanks for the patch! But this patch affects mxsboot which is no
not aligned with the U-Boot mxs nand driver.

I was able to fix mxsboot, but I had difficulties with round_down, which
is a macro definition in linux/kernel.h. I've copied the macro
definition to mxsboot. I will submit the patch in a seperate mail.

I would like to see a comment or a macro for the magic number 13, which
is the value for the Galois Field, just for clarification

With fixing mxsboot, I was able to test the patch on a custom
i.MX28-based board assembled with a 1Gbit NAND flash (page size = 2048
bytes, oob size = 128 bytes).

U-Boot correctly reads the NAND info
=> nand info
        Device 0: nand0, sector size 128 KiB
          Page size      2048 b
          OOB size        128 b
          Erase size   131072 b

Before the patch linux failed to read from the UBI device with an ECC
error:
        UBI error: ubi_io_read: error -74 (ECC error)

This patch resolves the error. Linux can read the UBI device now. This
is kernel message:
        nand: device found, Manufacturer ID: 0x98, Chip ID: 0xf1
        [    1.327810] nand: Toshiba NAND 128MiB 3,3V 8-bit
        [    1.332482] nand: 128MiB, SLC, page size: 2048, OOB size: 128
        BCH Geometry :
        [    1.594658] GF length              : 13
        [    1.594658] ECC Strength           : 18
        [    1.594658] Page Size in Bytes     : 2176
        [    1.594658] Metadata Size in Bytes : 10
        [    1.594658] ECC Chunk Size in Bytes: 512
        [    1.594658] ECC Chunk Count        : 4
        [    1.594658] Payload Size in Bytes  : 2048
        [    1.594658] Auxiliary Size in Bytes: 16
        [    1.594658] Auxiliary Status Offset: 12
        [    1.594658] Block Mark Byte Offset : 1950
        [    1.594658] Block Mark Bit Offset  : 2

      parent reply	other threads:[~2015-01-27 23:14 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-19  4:39 [U-Boot] [PATCH 1/2] mtd:mxs:nand calculate ecc strength dynamically Peng Fan
2014-12-19  4:39 ` [U-Boot] [PATCH 2/2] mtd:mxs:nand support oobsize bigger than 512 Peng Fan
2015-01-20  6:35   ` Peng Fan
2015-01-20 11:03   ` Marek Vasut
2015-01-20 13:12     ` Peng Fan
2015-01-22  7:09       ` Marek Vasut
2015-01-20  6:35 ` [U-Boot] [PATCH 1/2] mtd:mxs:nand calculate ecc strength dynamically Peng Fan
2015-01-20 11:04   ` Marek Vasut
2015-01-20 13:18     ` Peng Fan
2015-01-20 11:02 ` Marek Vasut
2015-01-27 23:14 ` Jörg Krause [this message]

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=1422400499.22055.27.camel@posteo.de \
    --to=jkrause@posteo.de \
    --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.