Hi Bastien, On 7/17/2026 8:21 PM, Bastien Curutchet wrote: > Hi Love > > On 7/13/26 3:52 PM, Kumar, Love wrote: >> Hi Bastien, >> >> On 7/13/2026 3:18 PM, Bastien Curutchet wrote: >>> Hi Love, >>> >>> On 7/11/26 8:36 AM, Kumar, Love wrote: >>>> Hi Michal, >>>> >>>> On 7/9/2026 11:23 AM, Michal Simek wrote: >>>>> Hi Love, >>>>> >>>>> On 7/2/26 15:08, Bastien Curutchet wrote: >>>>>> This driver is deeply broken in many ways. Miquèl has cleaned it up by: >>>>>> - flagging the most hideous parts (where Micron on-die ECC support is >>>>>> hardcoded) >>>>>> - enabling DT support, eg. for reading the ECC configuration >>>>>> - fixing software ECC support >>>>>> - aligning the software ECC OOB layout to the rest of the world and >>>>>> allow a working interoperability in Linux. >>>>>> >>>>>> I then added a patch to fix writes when soft ECC is on. >>>>>> >>>>>> Signed-off-by: Miquel Raynal (DAVE.eu) <[email protected]> >>>>>> Signed-off-by: Bastien Curutchet (DAVE.eu) >>>>>> <[email protected]> >>>>>> --- >>>>>> Changes in v3: >>>>>> - Add patch 6 to fix write issues in soft ECC. >>>>>> - Link to v2: >>>>>> https://lore.kernel.org/r/[email protected] >>>>>> >>>>>> Changes in v2: >>>>>> - Fix the sponsor: s/DAVE/DAVE.eu/, no other change. >>>>>> - Link to v1: >>>>>> https://lore.kernel.org/r/[email protected] >>>>>> >>>>>> --- >>>>>> Bastien Curutchet (DAVE.eu) (1): >>>>>> mtd: rawnand: nand_base: Don't overwrite read/write_page_raw() >>>>>> for soft ECC >>>>>> >>>>>> Miquel Raynal (DAVE.eu) (5): >>>>>> mtd: rawnand: zynq: Align the layout structures with the driver >>>>>> namespace >>>>>> mtd: rawnand: zynq: Add comments about very bad practices >>>>>> mtd: rawnand: zynq: Make sure an of node is attached >>>>>> mtd: rawnand: zynq: Do not fail the probe for no reason >>>>>> mtd: rawnand: zynq: Fix Software ECC engine support >>>>>> >>>>>> drivers/mtd/nand/raw/nand_base.c | 6 +- >>>>>> drivers/mtd/nand/raw/zynq_nand.c | 115 >>>>>> ++++++++++----------------------------- >>>>>> 2 files changed, 32 insertions(+), 89 deletions(-) >>>>>> --- >>>>>> base-commit: 4433253ecf2041f9362a763bb6cb79960921ac7e >>>>>> change-id: 20260522-dave-upstream-nand-fixes-60a5336517a2 >>>>>> >>>>>> Best regards, >>>>> >>>>> Please test this series. >>>> >>>> We are again seeing the NAND write issue with zynq-zc770-xm011 board. >>>> >>>> Below is the log snippet: >>>> >>>> Zynq> nand write 0x80000 0x0 0x126f80 >>>> nand write 0x80000 0x0 0x126f80 >>>> NAND write: device 0 offset 0x0, size 0x126f80 >>>> NAND write to offset 0 failed -5 >>>> >>> The exact same command works in my setup: >>> >>> ``` >>> Zynq> nand write 0x80000 0x0 0x126f80 >>> >>> NAND write: device 0 offset 0x0, size 0x126f80 >>> 1208192 bytes written: OK >>> ``` >>> >>> Can you please share your device-tree / defconfig ? I'd like to dig into >>> this a bit. >>> >>> I'd also be interested in seeing the output of 'mtd list' and 'nand info' >>> on your side. >> >> I have used the xilinx_zynq_virt_defconfig with zynq-zc770-xm011 DT. >> Below are the log snippets for 'nand info' and 'mtd list' commands: >> Zynq> nand info >> Device 0: nand0, sector size 128 KiB >> Page size 2048 b >> OOB size 64 b >> Erase size 131072 b >> ecc strength 0 bits >> ecc step size 2048 b >> subpagesize 2048 b >> options 0x40000000 >> bbt options 0x00028000 >> Zynq> mtd list >> List of MTD devices: >> * nand0 >> - type: NAND flash >> - block size: 0x20000 bytes >> - min I/O: 0x800 bytes >> - OOB size: 64 bytes >> - OOB available: 38 bytes >> - 0x000000000000-0x000008000000 : "nand0" >> - 0x000000000000-0x000001000000 : "nand-fsbl-uboot" >> - 0x000001000000-0x000003000000 : "nand-linux" >> - 0x000003000000-0x000003200000 : "nand-rootfs" >> Zynq> >> > > Thank for these information. > > Have you explicitly enabled the soft ECC ? I don't find the nand-ecc-mode > property in the upstream zynq-zc770-xm011 DT. >
Yes, tested it by explicitly enabling it with `nand-ecc-mode = "soft";` in zynq-zc770-xm011 DT, observed the same behavior - NAND write fails. Same issue was observed without enabling ecc mode as well. ``` Zynq> nand write 0x80000 0x0 0x80000 NAND write: device 0 offset 0x0, size 0x80000 NAND write to offset 0 failed -5 0 bytes written: ERROR Zynq> ``` Am I missing any other configurations? Regards, Love Kumar
