We are trying to use a Nand Flash (Micron MT29F4G08ABAEAWP among others) from U-Boot 2020.04 on an iMX6DL processor.
We try to configure the ECC strength to 16 bits through the DTSI but when the U-Boot is started, the command mtd list returns that the ECC strength is 8 bits.
An extract of our defconfig :
Content of our configs/*.h file :
Content of our *.dtsi file :
pinctrl-names = "default";
pinctrl-0 = <&configure_nandflash_pins>;
status = "okay";
I dug into the source code of the drivers and found out the function nand_dt_init (nand_base.c) reads the nand-ecc-strength property form the dtsi and puts its value into chip->ecc.strength.
Whereas, when the function mxs_nand_set_geometry (mxs_nand.c) calls mxs_nand_calc_ecc_layout_by_info, instead of using chip->ecc.strength as a parameter of mxs_nand_calc_ecc_layout_by_info, it uses chip->ecc_strength_ds.
The ecc_strength_ds value is set to 8 bits by nand_flash_detect_onfi (nand_base.c) which reads the ONFI data of our Nand.
I have tried to remove the define CONFIG_SYS_NAND_ONFI_DETECTION, but doing so the driver uses Legacy BCH Geometry and set the ECC strength to 8 bits.
I managed to get the driver to work by changing the following line from the function mxs_nand_set_geometry (mxs_nand.c) :
return mxs_nand_calc_ecc_layout_by_info(geo, mtd, chip->ecc_strength_ds, chip->ecc_step_ds);
return mxs_nand_calc_ecc_layout_by_info(geo, mtd, chip->ecc.strength, chip->ecc_step_ds);
Even though this quick fix solves our issue, I have no clue if it works with all the different configurations supported by the U-Boot.
If you have any suggestion to solve this issue, please let me know.
And if you have any question, I will do my utmost to answer.
>Even though this quick fix solves our issue, I have no clue if it works with all the
>different configurations supported by the U-Boot.
>If you have any suggestion to solve this issue, please let me know.
your solution looks as good, for " all the different configurations supported by the U-Boot"
may be recommended to post on uboot mail list : https://lists.denx.de/listinfo/u-boot