Lines Matching full:master
454 struct mtd_info *master = mtd_get_master(mtd); in mtd_wunit_to_pairing_info() local
455 int npairs = mtd_wunit_per_eb(master) / mtd_pairing_groups(master); in mtd_wunit_to_pairing_info()
460 if (master->pairing && master->pairing->get_info) in mtd_wunit_to_pairing_info()
461 return master->pairing->get_info(master, wunit, info); in mtd_wunit_to_pairing_info()
497 struct mtd_info *master = mtd_get_master(mtd); in mtd_pairing_info_to_wunit() local
498 int ngroups = mtd_pairing_groups(master); in mtd_pairing_info_to_wunit()
499 int npairs = mtd_wunit_per_eb(master) / ngroups; in mtd_pairing_info_to_wunit()
505 if (master->pairing && master->pairing->get_wunit) in mtd_pairing_info_to_wunit()
506 return mtd->pairing->get_wunit(master, info); in mtd_pairing_info_to_wunit()
524 struct mtd_info *master = mtd_get_master(mtd); in mtd_pairing_groups() local
526 if (!master->pairing || !master->pairing->ngroups) in mtd_pairing_groups()
529 return master->pairing->ngroups; in mtd_pairing_groups()
646 struct mtd_info *master = mtd_get_master(mtd); in add_mtd_device() local
652 * mtd_device_parse_register() multiple times on the same master MTD, in add_mtd_device()
668 if (WARN_ON((!mtd->erasesize || !master->_erase) && in add_mtd_device()
674 * master is an MLC NAND and has a proper pairing scheme defined. in add_mtd_device()
681 (!mtd_is_partition(mtd) || master->type != MTD_MLCNANDFLASH || in add_mtd_device()
682 !master->pairing || master->_writev)) in add_mtd_device()
707 int ngroups = mtd_pairing_groups(master); in add_mtd_device()
710 mtd->size = (u64)mtd_div_by_eb(mtd->size, master) * in add_mtd_device()
853 mutex_init(&mtd->master.partitions_lock); in mtd_set_dev_defaults()
854 mutex_init(&mtd->master.chrdev_lock); in mtd_set_dev_defaults()
1124 * @master: the MTD device to unregister. This will unregister both the master
1127 int mtd_device_unregister(struct mtd_info *master) in mtd_device_unregister() argument
1131 if (master->_reboot) { in mtd_device_unregister()
1132 unregister_reboot_notifier(&master->reboot_notifier); in mtd_device_unregister()
1133 memset(&master->reboot_notifier, 0, sizeof(master->reboot_notifier)); in mtd_device_unregister()
1136 nvmem_unregister(master->otp_user_nvmem); in mtd_device_unregister()
1137 nvmem_unregister(master->otp_factory_nvmem); in mtd_device_unregister()
1139 err = del_mtd_partitions(master); in mtd_device_unregister()
1143 if (!device_is_registered(&master->dev)) in mtd_device_unregister()
1146 return del_mtd_device(master); in mtd_device_unregister()
1249 struct mtd_info *master = mtd_get_master(mtd); in __get_mtd_device() local
1252 if (master->_get_device) { in __get_mtd_device()
1253 err = master->_get_device(mtd); in __get_mtd_device()
1258 if (!try_module_get(master->owner)) { in __get_mtd_device()
1259 if (master->_put_device) in __get_mtd_device()
1260 master->_put_device(master); in __get_mtd_device()
1265 if (mtd != master) in __get_mtd_device()
1271 kref_get(&master->refcnt); in __get_mtd_device()
1354 struct mtd_info *master = mtd_get_master(mtd); in __put_mtd_device() local
1360 if (mtd != master) in __put_mtd_device()
1366 kref_put(&master->refcnt, mtd_device_release); in __put_mtd_device()
1368 module_put(master->owner); in __put_mtd_device()
1370 /* must be the last as master can be freed in the _put_device */ in __put_mtd_device()
1371 if (master->_put_device) in __put_mtd_device()
1372 master->_put_device(master); in __put_mtd_device()
1383 struct mtd_info *master = mtd_get_master(mtd); in mtd_erase() local
1391 if (!mtd->erasesize || !master->_erase) in mtd_erase()
1406 master->erasesize; in mtd_erase()
1408 master->erasesize) - in mtd_erase()
1414 ret = master->_erase(master, &adjinstr); in mtd_erase()
1420 master); in mtd_erase()
1436 struct mtd_info *master = mtd_get_master(mtd); in mtd_point() local
1442 if (!master->_point) in mtd_point()
1450 return master->_point(master, from, len, retlen, virt, phys); in mtd_point()
1457 struct mtd_info *master = mtd_get_master(mtd); in mtd_unpoint() local
1459 if (!master->_unpoint) in mtd_unpoint()
1465 return master->_unpoint(master, mtd_get_master_ofs(mtd, from), len); in mtd_unpoint()
1492 static void mtd_update_ecc_stats(struct mtd_info *mtd, struct mtd_info *master, in mtd_update_ecc_stats() argument
1497 if (master == mtd) in mtd_update_ecc_stats()
1500 diff = master->ecc_stats; in mtd_update_ecc_stats()
1557 struct mtd_info *master = mtd_get_master(mtd); in mtd_panic_write() local
1560 if (!master->_panic_write) in mtd_panic_write()
1568 if (!master->oops_panic_write) in mtd_panic_write()
1569 master->oops_panic_write = true; in mtd_panic_write()
1571 return master->_panic_write(master, mtd_get_master_ofs(mtd, to), len, in mtd_panic_write()
1612 struct mtd_info *master = mtd_get_master(mtd); in mtd_read_oob_std() local
1616 if (master->_read_oob) in mtd_read_oob_std()
1617 ret = master->_read_oob(master, from, ops); in mtd_read_oob_std()
1619 ret = master->_read(master, from, ops->len, &ops->retlen, in mtd_read_oob_std()
1628 struct mtd_info *master = mtd_get_master(mtd); in mtd_write_oob_std() local
1632 if (master->_write_oob) in mtd_write_oob_std()
1633 ret = master->_write_oob(master, to, ops); in mtd_write_oob_std()
1635 ret = master->_write(master, to, ops->len, &ops->retlen, in mtd_write_oob_std()
1644 struct mtd_info *master = mtd_get_master(mtd); in mtd_io_emulated_slc() local
1645 int ngroups = mtd_pairing_groups(master); in mtd_io_emulated_slc()
1646 int npairs = mtd_wunit_per_eb(master) / ngroups; in mtd_io_emulated_slc()
1655 base = (loff_t)mtd_div_by_eb(start, mtd) * master->erasesize; in mtd_io_emulated_slc()
1666 base += master->erasesize; in mtd_io_emulated_slc()
1669 wunit = mtd_pairing_info_to_wunit(master, &info); in mtd_io_emulated_slc()
1706 struct mtd_info *master = mtd_get_master(mtd); in mtd_read_oob() local
1707 struct mtd_ecc_stats old_stats = master->ecc_stats; in mtd_read_oob()
1719 if (!master->_read_oob && (!master->_read || ops->oobbuf)) in mtd_read_oob()
1730 mtd_update_ecc_stats(mtd, master, &old_stats); in mtd_read_oob()
1751 struct mtd_info *master = mtd_get_master(mtd); in mtd_write_oob() local
1766 if (!master->_write_oob && (!master->_write || ops->oobbuf)) in mtd_write_oob()
1795 struct mtd_info *master = mtd_get_master(mtd); in mtd_ooblayout_ecc() local
1799 if (!master || section < 0) in mtd_ooblayout_ecc()
1802 if (!master->ooblayout || !master->ooblayout->ecc) in mtd_ooblayout_ecc()
1805 return master->ooblayout->ecc(master, section, oobecc); in mtd_ooblayout_ecc()
1829 struct mtd_info *master = mtd_get_master(mtd); in mtd_ooblayout_free() local
1833 if (!master || section < 0) in mtd_ooblayout_free()
1836 if (!master->ooblayout || !master->ooblayout->free) in mtd_ooblayout_free()
1839 return master->ooblayout->free(master, section, oobfree); in mtd_ooblayout_free()
2148 struct mtd_info *master = mtd_get_master(mtd); in mtd_get_fact_prot_info() local
2150 if (!master->_get_fact_prot_info) in mtd_get_fact_prot_info()
2154 return master->_get_fact_prot_info(master, len, retlen, buf); in mtd_get_fact_prot_info()
2161 struct mtd_info *master = mtd_get_master(mtd); in mtd_read_fact_prot_reg() local
2164 if (!master->_read_fact_prot_reg) in mtd_read_fact_prot_reg()
2168 return master->_read_fact_prot_reg(master, from, len, retlen, buf); in mtd_read_fact_prot_reg()
2175 struct mtd_info *master = mtd_get_master(mtd); in mtd_get_user_prot_info() local
2177 if (!master->_get_user_prot_info) in mtd_get_user_prot_info()
2181 return master->_get_user_prot_info(master, len, retlen, buf); in mtd_get_user_prot_info()
2188 struct mtd_info *master = mtd_get_master(mtd); in mtd_read_user_prot_reg() local
2191 if (!master->_read_user_prot_reg) in mtd_read_user_prot_reg()
2195 return master->_read_user_prot_reg(master, from, len, retlen, buf); in mtd_read_user_prot_reg()
2202 struct mtd_info *master = mtd_get_master(mtd); in mtd_write_user_prot_reg() local
2206 if (!master->_write_user_prot_reg) in mtd_write_user_prot_reg()
2210 ret = master->_write_user_prot_reg(master, to, len, retlen, buf); in mtd_write_user_prot_reg()
2224 struct mtd_info *master = mtd_get_master(mtd); in mtd_lock_user_prot_reg() local
2226 if (!master->_lock_user_prot_reg) in mtd_lock_user_prot_reg()
2230 return master->_lock_user_prot_reg(master, from, len); in mtd_lock_user_prot_reg()
2236 struct mtd_info *master = mtd_get_master(mtd); in mtd_erase_user_prot_reg() local
2238 if (!master->_erase_user_prot_reg) in mtd_erase_user_prot_reg()
2242 return master->_erase_user_prot_reg(master, from, len); in mtd_erase_user_prot_reg()
2249 struct mtd_info *master = mtd_get_master(mtd); in mtd_lock() local
2251 if (!master->_lock) in mtd_lock()
2259 ofs = (loff_t)mtd_div_by_eb(ofs, mtd) * master->erasesize; in mtd_lock()
2260 len = (u64)mtd_div_by_eb(len, mtd) * master->erasesize; in mtd_lock()
2263 return master->_lock(master, mtd_get_master_ofs(mtd, ofs), len); in mtd_lock()
2269 struct mtd_info *master = mtd_get_master(mtd); in mtd_unlock() local
2271 if (!master->_unlock) in mtd_unlock()
2279 ofs = (loff_t)mtd_div_by_eb(ofs, mtd) * master->erasesize; in mtd_unlock()
2280 len = (u64)mtd_div_by_eb(len, mtd) * master->erasesize; in mtd_unlock()
2283 return master->_unlock(master, mtd_get_master_ofs(mtd, ofs), len); in mtd_unlock()
2289 struct mtd_info *master = mtd_get_master(mtd); in mtd_is_locked() local
2291 if (!master->_is_locked) in mtd_is_locked()
2299 ofs = (loff_t)mtd_div_by_eb(ofs, mtd) * master->erasesize; in mtd_is_locked()
2300 len = (u64)mtd_div_by_eb(len, mtd) * master->erasesize; in mtd_is_locked()
2303 return master->_is_locked(master, mtd_get_master_ofs(mtd, ofs), len); in mtd_is_locked()
2309 struct mtd_info *master = mtd_get_master(mtd); in mtd_block_isreserved() local
2313 if (!master->_block_isreserved) in mtd_block_isreserved()
2317 ofs = (loff_t)mtd_div_by_eb(ofs, mtd) * master->erasesize; in mtd_block_isreserved()
2319 return master->_block_isreserved(master, mtd_get_master_ofs(mtd, ofs)); in mtd_block_isreserved()
2325 struct mtd_info *master = mtd_get_master(mtd); in mtd_block_isbad() local
2329 if (!master->_block_isbad) in mtd_block_isbad()
2333 ofs = (loff_t)mtd_div_by_eb(ofs, mtd) * master->erasesize; in mtd_block_isbad()
2335 return master->_block_isbad(master, mtd_get_master_ofs(mtd, ofs)); in mtd_block_isbad()
2341 struct mtd_info *master = mtd_get_master(mtd); in mtd_block_markbad() local
2344 if (!master->_block_markbad) in mtd_block_markbad()
2352 ofs = (loff_t)mtd_div_by_eb(ofs, mtd) * master->erasesize; in mtd_block_markbad()
2354 ret = master->_block_markbad(master, mtd_get_master_ofs(mtd, ofs)); in mtd_block_markbad()
2414 struct mtd_info *master = mtd_get_master(mtd); in mtd_writev() local
2420 if (!master->_writev) in mtd_writev()
2423 return master->_writev(master, vecs, count, in mtd_writev()