Lines Matching refs:master
453 struct mtd_info *master = mtd_get_master(mtd);
454 int npairs = mtd_wunit_per_eb(master) / mtd_pairing_groups(master);
459 if (master->pairing && master->pairing->get_info)
460 return master->pairing->get_info(master, wunit, info);
496 struct mtd_info *master = mtd_get_master(mtd);
497 int ngroups = mtd_pairing_groups(master);
498 int npairs = mtd_wunit_per_eb(master) / ngroups;
504 if (master->pairing && master->pairing->get_wunit)
505 return mtd->pairing->get_wunit(master, info);
523 struct mtd_info *master = mtd_get_master(mtd);
525 if (!master->pairing || !master->pairing->ngroups)
528 return master->pairing->ngroups;
644 struct mtd_info *master = mtd_get_master(mtd);
650 * mtd_device_parse_register() multiple times on the same master MTD,
666 if (WARN_ON((!mtd->erasesize || !master->_erase) &&
672 * master is an MLC NAND and has a proper pairing scheme defined.
679 (!mtd_is_partition(mtd) || master->type != MTD_MLCNANDFLASH ||
680 !master->pairing || master->_writev))
705 int ngroups = mtd_pairing_groups(master);
708 mtd->size = (u64)mtd_div_by_eb(mtd->size, master) *
848 mutex_init(&mtd->master.partitions_lock);
849 mutex_init(&mtd->master.chrdev_lock);
1110 * @master: the MTD device to unregister. This will unregister both the master
1113 int mtd_device_unregister(struct mtd_info *master)
1117 if (master->_reboot) {
1118 unregister_reboot_notifier(&master->reboot_notifier);
1119 memset(&master->reboot_notifier, 0, sizeof(master->reboot_notifier));
1122 nvmem_unregister(master->otp_user_nvmem);
1123 nvmem_unregister(master->otp_factory_nvmem);
1125 err = del_mtd_partitions(master);
1129 if (!device_is_registered(&master->dev))
1132 return del_mtd_device(master);
1235 struct mtd_info *master = mtd_get_master(mtd);
1238 if (master->_get_device) {
1239 err = master->_get_device(mtd);
1244 if (!try_module_get(master->owner)) {
1245 if (master->_put_device)
1246 master->_put_device(master);
1251 if (mtd != master)
1257 kref_get(&master->refcnt);
1340 struct mtd_info *master = mtd_get_master(mtd);
1346 if (mtd != master)
1352 kref_put(&master->refcnt, mtd_device_release);
1354 module_put(master->owner);
1356 /* must be the last as master can be freed in the _put_device */
1357 if (master->_put_device)
1358 master->_put_device(master);
1369 struct mtd_info *master = mtd_get_master(mtd);
1377 if (!mtd->erasesize || !master->_erase)
1392 master->erasesize;
1394 master->erasesize) -
1400 ret = master->_erase(master, &adjinstr);
1406 master);
1421 struct mtd_info *master = mtd_get_master(mtd);
1427 if (!master->_point)
1435 return master->_point(master, from, len, retlen, virt, phys);
1442 struct mtd_info *master = mtd_get_master(mtd);
1444 if (!master->_unpoint)
1450 return master->_unpoint(master, mtd_get_master_ofs(mtd, from), len);
1477 static void mtd_update_ecc_stats(struct mtd_info *mtd, struct mtd_info *master,
1482 if (master == mtd)
1485 diff = master->ecc_stats;
1538 struct mtd_info *master = mtd_get_master(mtd);
1541 if (!master->_panic_write)
1549 if (!master->oops_panic_write)
1550 master->oops_panic_write = true;
1552 return master->_panic_write(master, mtd_get_master_ofs(mtd, to), len,
1593 struct mtd_info *master = mtd_get_master(mtd);
1597 if (master->_read_oob)
1598 ret = master->_read_oob(master, from, ops);
1600 ret = master->_read(master, from, ops->len, &ops->retlen,
1609 struct mtd_info *master = mtd_get_master(mtd);
1613 if (master->_write_oob)
1614 ret = master->_write_oob(master, to, ops);
1616 ret = master->_write(master, to, ops->len, &ops->retlen,
1625 struct mtd_info *master = mtd_get_master(mtd);
1626 int ngroups = mtd_pairing_groups(master);
1627 int npairs = mtd_wunit_per_eb(master) / ngroups;
1636 base = (loff_t)mtd_div_by_eb(start, mtd) * master->erasesize;
1647 base += master->erasesize;
1650 wunit = mtd_pairing_info_to_wunit(master, &info);
1687 struct mtd_info *master = mtd_get_master(mtd);
1688 struct mtd_ecc_stats old_stats = master->ecc_stats;
1700 if (!master->_read_oob && (!master->_read || ops->oobbuf))
1711 mtd_update_ecc_stats(mtd, master, &old_stats);
1732 struct mtd_info *master = mtd_get_master(mtd);
1747 if (!master->_write_oob && (!master->_write || ops->oobbuf))
1776 struct mtd_info *master = mtd_get_master(mtd);
1780 if (!master || section < 0)
1783 if (!master->ooblayout || !master->ooblayout->ecc)
1786 return master->ooblayout->ecc(master, section, oobecc);
1810 struct mtd_info *master = mtd_get_master(mtd);
1814 if (!master || section < 0)
1817 if (!master->ooblayout || !master->ooblayout->free)
1820 return master->ooblayout->free(master, section, oobfree);
2129 struct mtd_info *master = mtd_get_master(mtd);
2131 if (!master->_get_fact_prot_info)
2135 return master->_get_fact_prot_info(master, len, retlen, buf);
2142 struct mtd_info *master = mtd_get_master(mtd);
2145 if (!master->_read_fact_prot_reg)
2149 return master->_read_fact_prot_reg(master, from, len, retlen, buf);
2156 struct mtd_info *master = mtd_get_master(mtd);
2158 if (!master->_get_user_prot_info)
2162 return master->_get_user_prot_info(master, len, retlen, buf);
2169 struct mtd_info *master = mtd_get_master(mtd);
2172 if (!master->_read_user_prot_reg)
2176 return master->_read_user_prot_reg(master, from, len, retlen, buf);
2183 struct mtd_info *master = mtd_get_master(mtd);
2187 if (!master->_write_user_prot_reg)
2191 ret = master->_write_user_prot_reg(master, to, len, retlen, buf);
2205 struct mtd_info *master = mtd_get_master(mtd);
2207 if (!master->_lock_user_prot_reg)
2211 return master->_lock_user_prot_reg(master, from, len);
2217 struct mtd_info *master = mtd_get_master(mtd);
2219 if (!master->_erase_user_prot_reg)
2223 return master->_erase_user_prot_reg(master, from, len);
2230 struct mtd_info *master = mtd_get_master(mtd);
2232 if (!master->_lock)
2240 ofs = (loff_t)mtd_div_by_eb(ofs, mtd) * master->erasesize;
2241 len = (u64)mtd_div_by_eb(len, mtd) * master->erasesize;
2244 return master->_lock(master, mtd_get_master_ofs(mtd, ofs), len);
2250 struct mtd_info *master = mtd_get_master(mtd);
2252 if (!master->_unlock)
2260 ofs = (loff_t)mtd_div_by_eb(ofs, mtd) * master->erasesize;
2261 len = (u64)mtd_div_by_eb(len, mtd) * master->erasesize;
2264 return master->_unlock(master, mtd_get_master_ofs(mtd, ofs), len);
2270 struct mtd_info *master = mtd_get_master(mtd);
2272 if (!master->_is_locked)
2280 ofs = (loff_t)mtd_div_by_eb(ofs, mtd) * master->erasesize;
2281 len = (u64)mtd_div_by_eb(len, mtd) * master->erasesize;
2284 return master->_is_locked(master, mtd_get_master_ofs(mtd, ofs), len);
2290 struct mtd_info *master = mtd_get_master(mtd);
2294 if (!master->_block_isreserved)
2298 ofs = (loff_t)mtd_div_by_eb(ofs, mtd) * master->erasesize;
2300 return master->_block_isreserved(master, mtd_get_master_ofs(mtd, ofs));
2306 struct mtd_info *master = mtd_get_master(mtd);
2310 if (!master->_block_isbad)
2314 ofs = (loff_t)mtd_div_by_eb(ofs, mtd) * master->erasesize;
2316 return master->_block_isbad(master, mtd_get_master_ofs(mtd, ofs));
2322 struct mtd_info *master = mtd_get_master(mtd);
2325 if (!master->_block_markbad)
2333 ofs = (loff_t)mtd_div_by_eb(ofs, mtd) * master->erasesize;
2335 ret = master->_block_markbad(master, mtd_get_master_ofs(mtd, ofs));
2394 struct mtd_info *master = mtd_get_master(mtd);
2400 if (!master->_writev)
2403 return master->_writev(master, vecs, count,