diff options
Diffstat (limited to 'linux-2.4.x/drivers/mtd/mtdpart.c')
-rw-r--r-- | linux-2.4.x/drivers/mtd/mtdpart.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/linux-2.4.x/drivers/mtd/mtdpart.c b/linux-2.4.x/drivers/mtd/mtdpart.c index 58142a9..2453697 100644 --- a/linux-2.4.x/drivers/mtd/mtdpart.c +++ b/linux-2.4.x/drivers/mtd/mtdpart.c @@ -85,6 +85,18 @@ static int part_write (struct mtd_info *mtd, loff_t to, size_t len, len, retlen, buf); } +static int part_point (struct mtd_info *mtd, loff_t off, size_t len, + size_t *retlen, u_char **buf) +{ + struct mtd_part *part = PART(mtd); + if (off >= mtd->size) + len = 0; + else if (off + len > mtd->size) + len = mtd->size - off; + return part->master->point (part->master, off + part->offset, len, + retlen, buf); +} + static int part_write_oob (struct mtd_info *mtd, loff_t to, size_t len, size_t *retlen, const u_char *buf) { @@ -245,6 +257,10 @@ int add_mtd_partitions(struct mtd_info *master, slave->mtd.suspend = part_suspend; slave->mtd.resume = part_resume; } + + if (master->point) + slave->mtd.point = part_point; + if (master->writev) slave->mtd.writev = part_writev; if (master->readv) |