]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - drivers/mtd/mtdpart.c
Merge branches 'pm-core', 'pm-qos', 'pm-domains' and 'pm-opp'
[linux.git] / drivers / mtd / mtdpart.c
index fccdd49bb96407d844e11d67a454ae015194bdea..ea5e5307f667f2a6669287377a633824bb67a4bb 100644 (file)
@@ -349,6 +349,14 @@ static const struct mtd_ooblayout_ops part_ooblayout_ops = {
        .free = part_ooblayout_free,
 };
 
+static int part_max_bad_blocks(struct mtd_info *mtd, loff_t ofs, size_t len)
+{
+       struct mtd_part *part = mtd_to_part(mtd);
+
+       return part->master->_max_bad_blocks(part->master,
+                                            ofs + part->offset, len);
+}
+
 static inline void free_partition(struct mtd_part *p)
 {
        kfree(p->mtd.name);
@@ -424,6 +432,7 @@ static struct mtd_part *allocate_partition(struct mtd_info *master,
        slave->mtd.dev.parent = IS_ENABLED(CONFIG_MTD_PARTITIONED_MASTER) ?
                                &master->dev :
                                master->dev.parent;
+       slave->mtd.dev.of_node = part->of_node;
 
        slave->mtd._read = part_read;
        slave->mtd._write = part_write;
@@ -475,6 +484,8 @@ static struct mtd_part *allocate_partition(struct mtd_info *master,
                slave->mtd._block_isbad = part_block_isbad;
        if (master->_block_markbad)
                slave->mtd._block_markbad = part_block_markbad;
+       if (master->_max_bad_blocks)
+               slave->mtd._max_bad_blocks = part_max_bad_blocks;
 
        if (master->_get_device)
                slave->mtd._get_device = part_get_device;