14 Oct, 2007

1 commit


23 Jul, 2007

1 commit


08 Mar, 2007

1 commit

  • During the MTD rework the oobavail parameter of mtd_info structure has become
    private. This is not quite correct in terms of integrity and logic. If we have
    means to write to OOB area, then we'd like to know upfront how many bytes out
    of OOB are spare per page to be able to adapt to specific cases.
    The patch inlined adds the public oobavail parameter.

    Signed-off-by: Vitaly Wool
    Signed-off-by: David Woodhouse

    Vitaly Wool
     

09 Feb, 2007

1 commit

  • Remove unused and broken mtd->ecctype and mtd->eccsize fields
    from struct mtd_info. Do not remove them from userspace API
    data structures (don't want to breake userspace) but mark them
    as obsolete by a comment. Any userspace program which uses them
    should be half-broken anyway, so this is more about saving
    data structure size.

    Signed-off-by: Artem Bityutskiy
    Signed-off-by: David Woodhouse

    Artem Bityutskiy
     

29 Nov, 2006

3 commits

  • Many SLC NANDs support up to 4 writes at one NAND page. Add support
    of this feature.

    Signed-off-by: Artem Bityutskiy

    Thomas Gleixner
     
  • Signed-off-by: Yan Burman
    Signed-off-by: David Woodhouse

    Burman Yan
     
  • As was discussed between Ricard Wanderlöf, David Woodhouse, Artem
    Bityutskiy and me, the current API for reading/writing OOB is confusing.

    The thing that introduces confusion is the need to specify ops.len
    together with ops.ooblen for reads/writes that concern only OOB not data
    area. So, ops.len is overloaded: when ops.datbuf != NULL it serves to
    specify the length of the data read, and when ops.datbuf == NULL, it
    serves to specify the full OOB read length.

    The patch inlined below is the slightly updated version of the previous
    patch serving the same purpose, but with the new Artem's comments taken
    into account.

    Artem, BTW, thanks a lot for your valuable input!

    Signed-off-by: Vitaly Wool
    Signed-off-by: David Woodhouse

    Vitaly Wool
     

30 May, 2006

1 commit

  • The raw read/write access to NAND (without ECC) has been changed in the
    NAND rework. Expose the new way - setting the file mode via ioctl - to
    userspace. Also allow to read out the ecc statistics information so userspace
    tools can see that bitflips happened and whether errors where correctable
    or not. Also expose the number of bad blocks for the partition, so nandwrite
    can check if the data fits into the parition before writing to it.

    Signed-off-by: Thomas Gleixner

    Thomas Gleixner
     

29 May, 2006

4 commits

  • Return -EUCLEAN on read when a bitflip was detected and corrected, so the
    clients can react and eventually copy the affected block to a spare one.
    Make all in kernel users aware of the change.

    Signed-off-by: Thomas Gleixner

    Thomas Gleixner
     
  • Hopefully the last iteration on this!

    The handling of out of band data on NAND was accompanied by tons of fruitless
    discussions and halfarsed patches to make it work for a particular
    problem. Sufficiently annoyed by I all those "I know it better" mails and the
    resonable amount of discarded "it solves my problem" patches, I finally decided
    to go for the big rework. After removing the _ecc variants of mtd read/write
    functions the solution to satisfy the various requirements was to refactor the
    read/write _oob functions in mtd.

    The major change is that read/write_oob now takes a pointer to an operation
    descriptor structure "struct mtd_oob_ops".instead of having a function with at
    least seven arguments.

    read/write_oob which should probably renamed to a more descriptive name, can do
    the following tasks:

    - read/write out of band data
    - read/write data content and out of band data
    - read/write raw data content and out of band data (ecc disabled)

    struct mtd_oob_ops has a mode field, which determines the oob handling mode.

    Aside of the MTD_OOB_RAW mode, which is intended to be especially for
    diagnostic purposes and some internal functions e.g. bad block table creation,
    the other two modes are for mtd clients:

    MTD_OOB_PLACE puts/gets the given oob data exactly to/from the place which is
    described by the ooboffs and ooblen fields of the mtd_oob_ops strcuture. It's
    up to the caller to make sure that the byte positions are not used by the ECC
    placement algorithms.

    MTD_OOB_AUTO puts/gets the given oob data automaticaly to/from the places in
    the out of band area which are described by the oobfree tuples in the ecclayout
    data structre which is associated to the devicee.

    The decision whether data plus oob or oob only handling is done depends on the
    setting of the datbuf member of the data structure. When datbuf == NULL then
    the internal read/write_oob functions are selected, otherwise the read/write
    data routines are invoked.

    Tested on a few platforms with all variants. Please be aware of possible
    regressions for your particular device / application scenario

    Disclaimer: Any whining will be ignored from those who just contributed "hot
    air blurb" and never sat down to tackle the underlying problem of the mess in
    the NAND driver grown over time and the big chunk of work to fix up the
    existing users. The problem was not the holiness of the existing MTD
    interfaces. The problems was the lack of time to go for the big overhaul. It's
    easy to add more mess to the existing one, but it takes alot of effort to go
    for a real solution.

    Improvements and bugfixes are welcome!

    Signed-off-by: Thomas Gleixner

    Thomas Gleixner
     
  • The nand_oobinfo structure is not fitting the newer error correction
    demands anymore. Replace it by struct nand_ecclayout and fixup the users
    all over the place. Keep the nand_oobinfo based ioctl for user space
    compability reasons.

    Signed-off-by: Thomas Gleixner

    Thomas Gleixner
     
  • The info structure for out of band data was copied into
    the mtd structure. Make it a pointer and remove the ability
    to set it from userspace. The position of ecc bytes is
    defined by the hardware and should not be changed by software.

    Signed-off-by: Thomas Gleixner

    Thomas Gleixner
     

23 May, 2006

3 commits


20 May, 2006

1 commit


18 May, 2006

1 commit


17 May, 2006

1 commit

  • There is a second revision of "mtdconcat NAND/Sibley" patch. I hope
    the patch will not get damaged as I'm posting it from gmail account,
    thanks to Jorn.

    The patch adds previously missing concat_writev(),
    concat_writev_ecc(), concat_block_isbad(), concat_block_markbad()
    functions to make concatenation layer compatible with Sibley and NAND
    chips.

    Patch has been cleared from whitespaces, fixed some lines of code as
    requested. Also I have added code for alignment check that should
    support Jorn's "writesize" patch.

    Signed-off-by: Alexander Belyakov
    Signed-off-by: David Woodhouse

    Alexander Belyakov
     

27 Mar, 2006

1 commit


07 Nov, 2005

2 commits


31 Oct, 2005

1 commit

  • I recently picked up my older work to remove unnecessary #includes of
    sched.h, starting from a patch by Dave Jones to not include sched.h
    from module.h. This reduces the number of indirect includes of sched.h
    by ~300. Another ~400 pointless direct includes can be removed after
    this disentangling (patch to follow later).
    However, quite a few indirect includes need to be fixed up for this.

    In order to feed the patches through -mm with as little disturbance as
    possible, I've split out the fixes I accumulated up to now (complete for
    i386 and x86_64, more archs to follow later) and post them before the real
    patch. This way this large part of the patch is kept simple with only
    adding #includes, and all hunks are independent of each other. So if any
    hunk rejects or gets in the way of other patches, just drop it. My scripts
    will pick it up again in the next round.

    Signed-off-by: Tim Schmielau
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Tim Schmielau
     

17 Apr, 2005

1 commit

  • Initial git repository build. I'm not bothering with the full history,
    even though we have it. We can create a separate "historical" git
    archive of that later if we want to, and in the meantime it's about
    3.2GB when imported into git - space that would just make the early
    git days unnecessarily complicated, when we don't have a lot of good
    infrastructure for it.

    Let it rip!

    Linus Torvalds