On Friday 11 May 2007,
ian@brightstareng.com wrote:
> On Friday 11 May 2007 04:46, David Goodenough wrote:
> > Do I read this correctly to say that there are no changes
> > needed to the MTD code in order to achieve this? If so that
> > is great, otherwise I will go over to their list and campain
> > for whatever is needed.
>
> At a minimum, you would have to adjust the definition of
> struct nand_ecclayout nand_oob_16 in nand_base.c to get the
> ECC to match that used on the platform. You would also need
> to use the MTD_OOB_PLACE option in the calls to MTD from yaffs
> and then scatter/gather the tag bytes appropriately. Leaving the
> ECC bytes 0xff on writes and have MTD do ECC.
I will have a look at that code and see if I can understand how
to do that.
>
> If you are using a older version of mtd, one that uses nand_oobinfo
> on the read/write calls, you should be able to get some of the old
> code in Yaffs working. See the yaffs2 codebase file yaffs_mtdif.c,
> also see if CONFIG_YAFFS_USE_OLD_MTD is applicable.
I am using the newest version of mtd, I only need to be compatible with
the old version of mtd/yaffs "on flash".
BTW, in the svn code for Yaffs2 I can not find CONFIG_YAFFS_USE_OLD_MTD.
Any idea where it came from?
>
> Looking at our version of yaffs2 codebase's yaffs_mtdif.c
> we have running on an older 2.4.24 based product, we have:
>
> struct nand_oobinfo yaffs_oobinfo = {
> useecc: MTD_NANDECC_PLACE,
> eccbytes: 6, // ++BSE: was missing, needed by mtd->read_ecc
> #ifdef CONFIG_BSE_USE_ORIG_YAFFS1_ECC_LAYOUT
> // swap 1st and 2nd bytes of each of the 3 byte ECC groups to
> // match original yaffs/smartmedia layout.
> eccpos: {9, 8, 10, 14, 13, 15}
> #else
> eccpos: {8, 9, 10, 13, 14, 15}
> #endif
> };
This looks like what I need. I will try this when I get a moment this
evening.
>
> With the older MTD api, the application (yaffs) cooperates with
> MTD when handling the oob/spare bytes -- you have to ensure that
> both Yaffs and MTD have the same layout. You control this
> using the struct nand_oobinfo passed of the calls to MTD, and/or
> with the default nand_oobinfo defined in the mtd's nand_base.c.
>
> Sorry to be non-specific, one needs to see the actual versions of
> source to be sure.
For the avoidance of doubt, what I need to do is to have the very latest
version of linux, with the very latest MTD and the very latest Yaffs
working in such a way that an original Yaffs1 piece of code (the RB112
Bootloader which I only have as a binary object - I can not change it)
can read.
>
> -imcd
David