OK, I have made progress, but not solved the problem. I now have
nanddump no longer complaining about ECC errors.
I did this by defining an ecclayout in my nand chip driver, so that
all access to this device uses the old ecc layout. The ecclayout
I use is:-
static struct nand_ecclayout rb_ecclayout = {
.eccbytes = 6,
.eccpos = { 8, 9, 10, 13, 14, 15 },
.oobfree = { { 0, 5 }, { 6, 2 }, { 11, 2 } }
};
and then when initialising the nand_chip structure in my driver I
use:-
rnand.ecc.layout = &rb_ecclayout;
This was derived from Ian McDonnel's emails (thank you for those) and
once I had worked out I needed a nand_ecclayout rather than a
nand_ooblayout (which I think must be for the older MTD support) I
got to where I am now. The only thing that confuses me is that this
is an 8bit chip, but this ecclayout looks more like a 16bit one than
an 8bit one, but that may simply be a feature of the old Yaffs layout.
But now I have a Yaffs problem (I suspect).
When I mount the partition I no longer get complaints about bad blocks
or any of the other odd messages I used to get, but I get no files in
the partition. Yet the first block contains the same information it
has always contained, i.e. the file header for the file "kernel".
My guess is that this is because the Yaffs code is still using the new
layout even though the MTD code is using the old layout.
Any ideas as to either how I should configure Yaffs to force the use
of the old layout, or if changes are needed to any of the Yaffs code
what they should be?
David