Hi,

I have seen this issue being discussed in this forum. The context was Davinci 
git.  For using with MontaVista, I am not sure of this issue being discussed.  
If you search the posts from march to May, you will get more information. That 
should help you to sort this out.

With best regards,

Venkatachala Upadhya| Extn: 65395|
--
From: davinci-linux-open-source-boun...@linux.davincidsp.com 
[mailto:davinci-linux-open-source-boun...@linux.davincidsp.com] On Behalf Of 
omkar savagaonkar
Sent: 07 July, 2009 10:38 AM
To: davinci-linux-open-source@linux.davincidsp.com
Subject: DM6446: LSP1.30 NAND Driver Bug

We are working with Monta Vista Linux with TI-Davinci platform.
Previously we were using TI LSP release of 1.20 and now we have migrated to LSP 
1.30.
After migration to 1.30 we are facing issue of NAND bad block erase.
From logs we can see almost all blocks are getting marked as bad blocks.
Then I tried to trace code to figure out the issue.
I found following changes…
1.    Board-evm.c :-
a.     some members are added to nand data-structure and masks of cle and ale 
initialized here
b.    Cle mask changed to 0x08 from 0x0a which was macro in nand-davinci.c 
previous version(suspect of problem tried change of 0x0a but not working)
c.    Ecc mode changed to NAND_ECC_HW3_512 (but previous one also using 1-bit 
ecc only so may not be the problem)
d.    Instead of 1 there are 2 NAND resources (verified and may not be a 
problem)

2.    Nand_davinci.c, nand_base.c :-
a.    Virtual address related access methods changed(may not be a problem).
b.    Code contains multiple chips support. (but it has been verified that 
correct base addresses are getting used)
c.    ECC modes added and hence num of ecc bytes getting changed.

Considering above cases I tried to trace behavior of code and found that 
execution of this one is almost similar to previous one..
But still call to following method in Create_bbt [nand_bbt.c] gives wrong 
buffer data.

    ret = mtd->read_oob(mtd, from + j * mtd->oobblock, mtd->oobsize, &retlen, 
buf);

Thus check_short_pattern (buf, bd) method fails to check it against 0xff and I 
get Bad Erase blocks error.

Code function trace (as per our initialization of structures )is as follows…
Nand_davinci_probe -> nand_scan -> nand_default_bbt -> 
nand_scan_bbt(largepage_memorybased) -> nand_memory_bbt -> create_bbt

If I boot through previous version on same board everything related to NAND 
works fine.
So anybody here to have faced this problem...

Omkar


________________________________
Looking for local information? Find it on Yahoo! 
Local<http://in.rd.yahoo.com/tagline_local_1/*http:/in..local.yahoo.com/>

________________________________
http://www.mindtree.com/email/disclaimer.html
_______________________________________________
Davinci-linux-open-source mailing list
Davinci-linux-open-source@linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to