Lines Matching full:master
43 struct mtd_info *master; member
91 stats = part->master->ecc_stats; in part_read()
92 res = part->master->_read(part->master, from + part->offset, len, in part_read()
96 part->master->ecc_stats.failed - stats.failed; in part_read()
99 part->master->ecc_stats.corrected - stats.corrected; in part_read()
109 return part->master->_point(part->master, from + part->offset, len, in part_point()
117 return part->master->_unpoint(part->master, from + part->offset, len); in part_unpoint()
129 return part->master->_get_unmapped_area(part->master, len, offset, in part_get_unmapped_area()
161 res = part->master->_read_oob(part->master, from + part->offset, ops); in part_read_oob()
175 return part->master->_read_user_prot_reg(part->master, from, len, in part_read_user_prot_reg()
183 return part->master->_get_user_prot_info(part->master, len, retlen, in part_get_user_prot_info()
191 return part->master->_read_fact_prot_reg(part->master, from, len, in part_read_fact_prot_reg()
199 return part->master->_get_fact_prot_info(part->master, len, retlen, in part_get_fact_prot_info()
207 return part->master->_write(part->master, to + part->offset, len, in part_write()
215 return part->master->_panic_write(part->master, to + part->offset, len, in part_panic_write()
228 return part->master->_write_oob(part->master, to + part->offset, ops); in part_write_oob()
235 return part->master->_write_user_prot_reg(part->master, from, len, in part_write_user_prot_reg()
243 return part->master->_lock_user_prot_reg(part->master, from, len); in part_lock_user_prot_reg()
251 return part->master->_writev(part->master, vecs, count, in part_writev()
262 ret = part->master->_erase(part->master, instr); in part_erase()
288 return part->master->_lock(part->master, ofs + part->offset, len); in part_lock()
294 return part->master->_unlock(part->master, ofs + part->offset, len); in part_unlock()
300 return part->master->_is_locked(part->master, ofs + part->offset, len); in part_is_locked()
306 part->master->_sync(part->master); in part_sync()
313 return part->master->_suspend(part->master); in part_suspend()
319 part->master->_resume(part->master); in part_resume()
327 return part->master->_block_isreserved(part->master, ofs); in part_block_isreserved()
334 return part->master->_block_isbad(part->master, ofs); in part_block_isbad()
343 res = part->master->_block_markbad(part->master, ofs); in part_block_markbad()
357 * attached to the given master MTD object.
360 int del_mtd_partitions(struct mtd_info *master) in del_mtd_partitions() argument
367 if (slave->master == master) { in del_mtd_partitions()
381 static struct mtd_part *allocate_partition(struct mtd_info *master, in allocate_partition() argument
393 master->name); in allocate_partition()
400 slave->mtd.type = master->type; in allocate_partition()
401 slave->mtd.flags = master->flags & ~part->mask_flags; in allocate_partition()
403 slave->mtd.writesize = master->writesize; in allocate_partition()
404 slave->mtd.writebufsize = master->writebufsize; in allocate_partition()
405 slave->mtd.oobsize = master->oobsize; in allocate_partition()
406 slave->mtd.oobavail = master->oobavail; in allocate_partition()
407 slave->mtd.subpage_sft = master->subpage_sft; in allocate_partition()
410 slave->mtd.owner = master->owner; in allocate_partition()
412 slave->mtd.backing_dev_info = master->backing_dev_info; in allocate_partition()
417 slave->mtd.dev.parent = master->dev.parent; in allocate_partition()
423 if (master->_panic_write) in allocate_partition()
427 if (master->_point && master->_unpoint) { in allocate_partition()
433 if (master->_get_unmapped_area) in allocate_partition()
435 if (master->_read_oob) in allocate_partition()
437 if (master->_write_oob) in allocate_partition()
439 if (master->_read_user_prot_reg) in allocate_partition()
441 if (master->_read_fact_prot_reg) in allocate_partition()
443 if (master->_write_user_prot_reg) in allocate_partition()
445 if (master->_lock_user_prot_reg) in allocate_partition()
447 if (master->_get_user_prot_info) in allocate_partition()
449 if (master->_get_fact_prot_info) in allocate_partition()
451 if (master->_sync) in allocate_partition()
454 if (!partno && !master->dev.class && master->_suspend && in allocate_partition()
455 master->_resume) { in allocate_partition()
459 if (master->_writev) in allocate_partition()
462 if (master->_lock) in allocate_partition()
464 if (master->_unlock) in allocate_partition()
466 if (master->_is_locked) in allocate_partition()
468 if (master->_block_isreserved) in allocate_partition()
470 if (master->_block_isbad) in allocate_partition()
472 if (master->_block_markbad) in allocate_partition()
475 slave->master = master; in allocate_partition()
482 if (mtd_mod_by_eb(cur_offset, master) != 0) { in allocate_partition()
484 slave->offset = (mtd_div_by_eb(cur_offset, master) + 1) * master->erasesize; in allocate_partition()
492 if (master->size - slave->offset >= slave->mtd.size) { in allocate_partition()
493 slave->mtd.size = master->size - slave->offset in allocate_partition()
497 part->name, master->size - slave->offset, in allocate_partition()
504 slave->mtd.size = master->size - slave->offset; in allocate_partition()
510 if (slave->offset >= master->size) { in allocate_partition()
518 if (slave->offset + slave->mtd.size > master->size) { in allocate_partition()
519 slave->mtd.size = master->size - slave->offset; in allocate_partition()
521 part->name, master->name, (unsigned long long)slave->mtd.size); in allocate_partition()
523 if (master->numeraseregions > 1) { in allocate_partition()
525 int i, max = master->numeraseregions; in allocate_partition()
527 struct mtd_erase_region_info *regions = master->eraseregions; in allocate_partition()
546 slave->mtd.erasesize = master->erasesize; in allocate_partition()
565 slave->mtd.ecclayout = master->ecclayout; in allocate_partition()
566 slave->mtd.ecc_step_size = master->ecc_step_size; in allocate_partition()
567 slave->mtd.ecc_strength = master->ecc_strength; in allocate_partition()
568 slave->mtd.bitflip_threshold = master->bitflip_threshold; in allocate_partition()
570 if (master->_block_isbad) { in allocate_partition()
574 if (mtd_block_isbad(master, offs + slave->offset)) in allocate_partition()
585 int mtd_add_partition(struct mtd_info *master, const char *name, in mtd_add_partition() argument
599 length = master->size - offset; in mtd_add_partition()
610 new = allocate_partition(master, &part, -1, offset); in mtd_add_partition()
619 if (p->master == master) { in mtd_add_partition()
642 int mtd_del_partition(struct mtd_info *master, int partno) in mtd_del_partition() argument
649 if ((slave->master == master) && in mtd_del_partition()
667 * This function, given a master MTD object and a partition table, creates
668 * and registers slave MTD objects which are bound to the master according to
671 * We don't register the master, or expect the caller to have done so,
675 int add_mtd_partitions(struct mtd_info *master, in add_mtd_partitions() argument
693 debug("Creating %d MTD partitions on \"%s\":\n", nbparts, master->name); in add_mtd_partitions()
696 slave = allocate_partition(master, parts + i, i, cur_offset); in add_mtd_partitions()
763 * @master: the master partition (describes whole MTD device)
768 * This function tries to find partition on MTD device @master. It uses MTD
781 int parse_mtd_partitions(struct mtd_info *master, const char *const *types, in parse_mtd_partitions() argument
797 ret = (*parser->parse_fn)(master, pparts, data); in parse_mtd_partitions()
801 ret, parser->name, master->name); in parse_mtd_partitions()
832 return PART(mtd)->master->size; in mtd_get_device_size()