
Dear Feng Kan,
In message 4B7DD691.8070805@amcc.com you wrote:
The problem goes back a bit. The ordering you see in the ndfc file has been changed a few times, back and forth and cause quite a bit of problem. The define we speak of is in the driver/mtd/nand/nand_ecc.c file. The nand_correct_data function uses two ways
Right, CONFIG_MTD_NAND_ECC_SMC is only ever defined and used in driver/mtd/nand/nand_ecc.c, but your patch modifies drivers/mtd/nand/ndfc.c, i. e. a different file - so this #define will never be seen there.
Either the code needs to be permanently changed, then we don't need the #ifdef stuff, or it depends on some conditions, then it's unclear what these might be.
In any case a clear description of the problem you are trying to fix is needed, and an explanation how your change is supposed to fix this problem.
Please provide a specific test case that can be used to 1) see the problem in the unchanged code and 2) verify that it's working after applying your suggested changes.
of check ECC correctness. However the ndfc calculate only supports one ordering, although both placement method in the patch would work. It also serves to nail down the ordering depending on the define is used or not.
I don;t understand what you mean here. Sorry, but I'm afraid you have to provide a bit more context.
There is also the following in the code, should you agree, this will also need to be removed as well.
/* The PPC4xx NDFC uses Smart Media (SMC) bytes order */ #ifdef CONFIG_NAND_NDFC #define CONFIG_MTD_NAND_ECC_SMC #endif
This is in another file (driver/mtd/nand/nand_ecc.c) which is not touched by your patch. If you think this file needs to be changed as well, then this change should be part of your patch. Obviously, the reason for the need to change has to be explained here as well.
Thanks.
Wolfgang Denk