Lines Matching refs:mtd
857 static int doc_read_oob(struct mtd_info *mtd, loff_t from, in doc_read_oob() argument
860 struct docg3 *docg3 = mtd->priv; in doc_read_oob()
885 if (from + len > mtd->size) in doc_read_oob()
942 mtd->ecc_stats.failed++; in doc_read_oob()
946 mtd->ecc_stats.corrected += ret; in doc_read_oob()
985 static int doc_read(struct mtd_info *mtd, loff_t from, size_t len, in doc_read() argument
996 ret = doc_read_oob(mtd, from, &ops); in doc_read()
1030 static int doc_block_isbad(struct mtd_info *mtd, loff_t from) in doc_block_isbad() argument
1032 struct docg3 *docg3 = mtd->priv; in doc_block_isbad()
1201 static int doc_erase(struct mtd_info *mtd, struct erase_info *info) in doc_erase() argument
1203 struct docg3 *docg3 = mtd->priv; in doc_erase()
1213 if (info->addr + info->len > mtd->size || page || ofs) in doc_erase()
1222 for (len = info->len; !ret && len > 0; len -= mtd->erasesize) { in doc_erase()
1411 static int doc_write_oob(struct mtd_info *mtd, loff_t ofs, in doc_write_oob() argument
1414 struct docg3 *docg3 = mtd->priv; in doc_write_oob()
1438 oobdelta = mtd->oobsize; in doc_write_oob()
1441 oobdelta = mtd->ecclayout->oobavail; in doc_write_oob()
1452 if (ofs + len > mtd->size) in doc_write_oob()
1507 static int doc_write(struct mtd_info *mtd, loff_t to, size_t len, in doc_write() argument
1510 struct docg3 *docg3 = mtd->priv; in doc_write()
1522 ret = doc_write_oob(mtd, to, &ops); in doc_write()
1828 static int __init doc_set_driver_info(int chip_id, struct mtd_info *mtd) in doc_set_driver_info() argument
1830 struct docg3 *docg3 = mtd->priv; in doc_set_driver_info()
1839 mtd->name = kasprintf(GFP_KERNEL, "docg3.%d", in doc_set_driver_info()
1841 if (!mtd->name) in doc_set_driver_info()
1846 mtd->type = MTD_NANDFLASH; in doc_set_driver_info()
1847 mtd->flags = MTD_CAP_NANDFLASH; in doc_set_driver_info()
1848 mtd->size = (docg3->max_block + 1) * DOC_LAYOUT_BLOCK_SIZE; in doc_set_driver_info()
1850 mtd->size /= 2; in doc_set_driver_info()
1851 mtd->erasesize = DOC_LAYOUT_BLOCK_SIZE * DOC_LAYOUT_NBPLANES; in doc_set_driver_info()
1853 mtd->erasesize /= 2; in doc_set_driver_info()
1854 mtd->writebufsize = mtd->writesize = DOC_LAYOUT_PAGE_SIZE; in doc_set_driver_info()
1855 mtd->oobsize = DOC_LAYOUT_OOB_SIZE; in doc_set_driver_info()
1856 mtd->_erase = doc_erase; in doc_set_driver_info()
1857 mtd->_read = doc_read; in doc_set_driver_info()
1858 mtd->_write = doc_write; in doc_set_driver_info()
1859 mtd->_read_oob = doc_read_oob; in doc_set_driver_info()
1860 mtd->_write_oob = doc_write_oob; in doc_set_driver_info()
1861 mtd->_block_isbad = doc_block_isbad; in doc_set_driver_info()
1862 mtd->ecclayout = &docg3_oobinfo; in doc_set_driver_info()
1863 mtd->ecc_strength = DOC_ECC_BCH_T; in doc_set_driver_info()
1887 struct mtd_info *mtd; in doc_probe_device() local
1893 mtd = kzalloc(sizeof(struct mtd_info), GFP_KERNEL); in doc_probe_device()
1894 if (!mtd) in doc_probe_device()
1896 mtd->priv = docg3; in doc_probe_device()
1897 mtd->dev.parent = dev; in doc_probe_device()
1930 ret = doc_set_driver_info(chip_id, mtd); in doc_probe_device()
1936 return mtd; in doc_probe_device()
1941 kfree(mtd); in doc_probe_device()
1952 static void doc_release_device(struct mtd_info *mtd) in doc_release_device() argument
1954 struct docg3 *docg3 = mtd->priv; in doc_release_device()
1956 mtd_device_unregister(mtd); in doc_release_device()
1959 kfree(mtd->name); in doc_release_device()
1960 kfree(mtd); in doc_release_device()
1973 struct mtd_info **docg3_floors, *mtd; in docg3_resume() local
1978 mtd = docg3_floors[0]; in docg3_resume()
1979 docg3 = mtd->priv; in docg3_resume()
2000 struct mtd_info **docg3_floors, *mtd; in docg3_suspend() local
2007 mtd = docg3_floors[floor]; in docg3_suspend()
2008 if (!mtd) in docg3_suspend()
2010 docg3 = mtd->priv; in docg3_suspend()
2033 mtd = docg3_floors[0]; in docg3_suspend()
2034 docg3 = mtd->priv; in docg3_suspend()
2051 struct mtd_info *mtd; in docg3_probe() local
2078 mtd = doc_probe_device(cascade, floor, dev); in docg3_probe()
2079 if (IS_ERR(mtd)) { in docg3_probe()
2080 ret = PTR_ERR(mtd); in docg3_probe()
2083 if (!mtd) { in docg3_probe()
2089 cascade->floors[floor] = mtd; in docg3_probe()
2090 ret = mtd_device_parse_register(mtd, part_probes, NULL, NULL, in docg3_probe()