[U-Boot] [PATCH 1/8] mtd: nand: sunxi: Fix strength minimum value

Miquel Raynal miquel.raynal at free-electrons.com
Wed Jan 24 22:19:53 UTC 2018


Hello Boris,

On Wed, 24 Jan 2018 08:57:23 +0100
Boris Brezillon <boris.brezillon at free-electrons.com> wrote:

> On Wed, 24 Jan 2018 01:44:47 +0100
> Miquel Raynal <miquel.raynal at free-electrons.com> wrote:
> 
> > When no requirement in Device Tree is given about the ECC strength and
> > step size, the engine should fallback on the minimal working case for
> > this engine (16b/1024B) instead of the NAND chip requirement which might
> > be simply unreachable.  
> 
> Actually, this is not what this patch is fixing. It fixes all cases
> where the requested ECC strength does not exactly match the strengths
> supported by the ECC engine. In this case, the driver is selecting the
> closest strength meeting the 'selected_strength > requested_strength'
> constraint. The problem was that we were not updating ecc->strength
> with the real strength, which is what you're fixing here.

That is entirely right, I kept one explanation on the easiest case
where this is needed: when there is not ECC-related property in the DT.

> 
> > 
> > Signed-off-by: Miquel Raynal <miquel.raynal at free-electrons.com>
> > ---
> >  drivers/mtd/nand/sunxi_nand.c | 1 +
> >  1 file changed, 1 insertion(+)
> > 
> > diff --git a/drivers/mtd/nand/sunxi_nand.c b/drivers/mtd/nand/sunxi_nand.c
> > index 8bc3828854..e8e7ad8ac5 100644
> > --- a/drivers/mtd/nand/sunxi_nand.c
> > +++ b/drivers/mtd/nand/sunxi_nand.c
> > @@ -1417,6 +1417,7 @@ static int sunxi_nand_hw_common_ecc_ctrl_init(struct mtd_info *mtd,
> >  		goto err;
> >  	}
> >  
> > +	ecc->strength = strengths[i];
> >  	data->mode = i;
> >  
> >  	/* HW ECC always request ECC bytes for 1024 bytes blocks */  
> 



-- 
Miquel Raynal, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com


More information about the U-Boot mailing list