lkml.org 
[lkml]   [2010]   [Jan]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 09/17] MTD: nand: make MTD_OOB_PLACE work correctly.
    Date
    MTD_OOB_PLACE is supposed to read/write raw oob data similiar to MTD_OOB_RAW
    however due to a bug, currently its not possible to read more data that
    specified in oob 'free' regions

    Signed-off-by: Maxim Levitsky <maximlevitsky@gmail.com>
    ---
    drivers/mtd/nand/nand_base.c | 6 +++++-
    1 files changed, 5 insertions(+), 1 deletions(-)

    diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c
    index 8f2958f..405c538 100644
    --- a/drivers/mtd/nand/nand_base.c
    +++ b/drivers/mtd/nand/nand_base.c
    @@ -1232,6 +1232,9 @@ static int nand_do_read_ops(struct mtd_info *mtd, loff_t from,
    int ret = 0;
    uint32_t readlen = ops->len;
    uint32_t oobreadlen = ops->ooblen;
    + uint32_t max_oobsize = ops->mode == MTD_OOB_AUTO ?
    + mtd->oobavail : mtd->oobsize;
    +
    uint8_t *bufpoi, *oob, *buf;

    stats = mtd->ecc_stats;
    @@ -1282,10 +1285,11 @@ static int nand_do_read_ops(struct mtd_info *mtd, loff_t from,
    buf += bytes;

    if (unlikely(oob)) {
    +
    /* Raw mode does data:oob:data:oob */
    if (ops->mode != MTD_OOB_RAW) {
    int toread = min(oobreadlen,
    - chip->ecc.layout->oobavail);
    + max_oobsize);
    if (toread) {
    oob = nand_transfer_oob(chip,
    oob, ops, toread);
    --
    1.6.3.3


    \
     
     \ /
      Last update: 2010-01-30 16:07    [W:4.518 / U:0.052 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site