From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Babic Date: Tue, 11 Aug 2015 14:10:36 +0200 Subject: [U-Boot] [PATCH 1/1] tools: mxsboot: calculate ECC block level dynamically In-Reply-To: <1439293466-19860-1-git-send-email-joerg.krause@embedded.rocks> References: <1439293466-19860-1-git-send-email-joerg.krause@embedded.rocks> Message-ID: <55C9E63C.3040004@denx.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On 11/08/2015 13:44, J?rg Krause wrote: > For pages of 2048 bytes the current setting of the ECC Error Correction Level > is only true for an oob size of 64 bytes and wrong for all others. > > Instead of hard-coding every possible combination of page size and oob size use > the dynamic calculation of the ECC strength introduced in commit > 6121560d7714d6d8e41ce1687a1388a1a8fea4cb. > > Cc: Marek Vasut > Signed-off-by: J?rg Krause > --- > tools/mxsboot.c | 21 ++++----------------- > 1 file changed, 4 insertions(+), 17 deletions(-) > > diff --git a/tools/mxsboot.c b/tools/mxsboot.c > index 185b327..15eec91 100644 > --- a/tools/mxsboot.c > +++ b/tools/mxsboot.c > @@ -271,23 +271,10 @@ static struct mx28_nand_fcb *mx28_nand_get_fcb(uint32_t size) > fcb->ecc_block_0_size = 512; > fcb->ecc_block_n_size = 512; > fcb->metadata_bytes = 10; > - > - if (nand_writesize == 2048) { > - fcb->ecc_block_n_ecc_type = 4; > - fcb->ecc_block_0_ecc_type = 4; > - } else if (nand_writesize == 4096) { > - if (nand_oobsize == 128) { > - fcb->ecc_block_n_ecc_type = 4; > - fcb->ecc_block_0_ecc_type = 4; > - } else if (nand_oobsize == 218) { > - fcb->ecc_block_n_ecc_type = 8; > - fcb->ecc_block_0_ecc_type = 8; > - } else if (nand_oobsize == 224) { > - fcb->ecc_block_n_ecc_type = 8; > - fcb->ecc_block_0_ecc_type = 8; > - } > - } > - > + fcb->ecc_block_n_ecc_type = mx28_nand_get_ecc_strength( > + nand_writesize, nand_oobsize) >> 1; > + fcb->ecc_block_0_ecc_type = mx28_nand_get_ecc_strength( > + nand_writesize, nand_oobsize) >> 1; > if (fcb->ecc_block_n_ecc_type == 0) { > printf("MX28 NAND: Unsupported NAND geometry\n"); > goto err; > Reviewed-by: Stefano Babic Best regards, Stefano Babic -- ===================================================================== DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de =====================================================================