Check maximum ecc strength for each platfrom to avoid the calculated ecc exceed the limitation.
Signed-off-by: Peng Fan <peng....@freescale.com> Signed-off-by: Han Xu <b45...@freescale.com> Tested-By: Tim Harvey <tharvey at gateworks.com> Reviewed-by: Marek Vasut <ma...@denx.de> Acked-by: Scott Wood <scottw...@freescale.com> Cc: Stefano Babic <sba...@denx.de> --- Original V2 mail thread: http://lists.denx.de/pipermail/u-boot/2015-August/225362.html Because is_cpu_type was not merged to uboot upstream at that time, this patch can not be compiled successfully. Since now is_cpu_type is already in uboot upstream master branch, this patch can be applied and built without failure. Changes v3: Add Scott's Acked by Add Tim's Tested by Changes v2: Add Marek's reviewed by. drivers/mtd/nand/mxs_nand.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/mtd/nand/mxs_nand.c b/drivers/mtd/nand/mxs_nand.c index 1d68901..f15cf36 100644 --- a/drivers/mtd/nand/mxs_nand.c +++ b/drivers/mtd/nand/mxs_nand.c @@ -149,6 +149,13 @@ static inline uint32_t mxs_nand_get_ecc_strength(uint32_t page_data_size, uint32_t page_oob_size) { int ecc_strength; + int max_ecc_strength_supported; + + /* Refer to Chapter 17 for i.MX6DQ, Chapter 18 for i.MX6SX */ + if (is_cpu_type(MXC_CPU_MX6SX)) + max_ecc_strength_supported = 62; + else + max_ecc_strength_supported = 40; /* * Determine the ECC layout with the formula: @@ -162,7 +169,7 @@ static inline uint32_t mxs_nand_get_ecc_strength(uint32_t page_data_size, / (galois_field * mxs_nand_ecc_chunk_cnt(page_data_size)); - return round_down(ecc_strength, 2); + return min(round_down(ecc_strength, 2), max_ecc_strength_supported); } static inline uint32_t mxs_nand_get_mark_offset(uint32_t page_data_size, -- 1.8.4 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot