AnsweredAssumed Answered

GPMI driver ecc_write_page with oob data problem

Question asked by Youxin Su on Apr 1, 2015
Latest reply on Apr 12, 2015 by igorpadykov



I am attempting to mount Yaffs2 on a GPMI controlled NAND flash on IMX6. Unfortunately, I'm not able to mount it with default settings, instead I have to mount it with "inband-tags" which means don't use OOB area on NAND page to store data.


Then I am running into check why yaffs2 can't use OOB area.


We use MICRON MT29F32G08CBADAWP it has 8192 bytes payload and 744 bytes OOB as log show below:


[    0.982938] nand: Micron MT29F32G08CBADAWP
[    0.987056] nand: 4096MiB, MLC, page size: 8192, OOB size: 744
[    0.993508] gpmi-nand 112000.gpmi-nand: enable the asynchronous EDO mode 5


Since the IMX6 only support up to 40bits ECC corrections, we don't want all the OOB used by BCH for ECC correction data. So we enabled "fsl,use-minimum-ecc" which is still use the max 40 bits corrections in BCH, after set_geometry_by_ecc_info does the calculation, its end up following geometry:


page_size = 8762
write_size = 8129
metadat_size = 10
auxiliary_size = 24

oob_free->offset = 570

oob_free->length = 174


Which means we do have 174 bytes free OOB area can be used by file system. After a few days tracing and debugging I've found out the GPMI driver method gpmi_ecc_write_page actually does not write oob data(the 174 bytes area) to NAND flash at all? The flags "oob_required" never been used in the method.



Did anybody else use GPMI with OOB data read/write before? Did it work fine or Am I missing something?



Best regards,