Hi David, I suggest you to try this with the latest Yaffs + recent kernel (2.6.19 or newer): Use MTD_OOB_AUTO with the following layout (as suggested by Ian): static struct nand_ecclayout nand_oob_16 = { .eccbytes = 6, .eccpos = { 9, 8, 10, 14, 13, 15 }, .oobfree = { { 0, 4 }, { 6, 2 }, { 11, 2 } } }; with CONFIG_NAND_ECC_SMC = N or static struct nand_ecclayout nand_oob_16 = { .eccbytes = 6, .eccpos = { 8, 9, 10, 13, 14, 15 }, .oobfree = { { 0, 4 }, { 6, 2 }, { 11, 2 } } }; with CONFIG_NAND_ECC_SMC = Y Be sure to use default Yaffs configuration. Especially CONFIG_YAFFS_DOES_ECC = N The translate functions (translate_spare2oob) in mtdif.c should work fine untouched. Cheers, Claudio Lanconelli