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
Hi,

 

 

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,

Youxin

Outcomes