Lines Matching refs:mtd
106 static int get_valid_cis_sector(struct mtd_info *mtd) in get_valid_cis_sector() argument
124 for (k = 0, offset = 0; k < 4; k++, offset += mtd->erasesize) { in get_valid_cis_sector()
125 if (mtd_block_isbad(mtd, offset)) { in get_valid_cis_sector()
126 ret = mtd_read(mtd, offset, SECTOR_SIZE, &retlen, in get_valid_cis_sector()
139 " on %s (mtd%d)\n", mtd->name, in get_valid_cis_sector()
140 mtd->index); in get_valid_cis_sector()
152 static int read_physical_sector(struct mtd_info *mtd, uint8_t *sect_buf, in read_physical_sector() argument
159 ret = mtd_read(mtd, offset, SECTOR_SIZE, &retlen, sect_buf); in read_physical_sector()
167 static int read_raw_oob(struct mtd_info *mtd, loff_t offs, uint8_t *buf) in read_raw_oob() argument
178 ret = mtd_read_oob(mtd, offs, &ops); in read_raw_oob()
248 struct mtd_info *mtd = ssfdc->mbd.mtd; in build_logical_block_map() local
258 if (mtd_block_isbad(mtd, offset)) in build_logical_block_map()
261 ret = read_raw_oob(mtd, offset, oob_buf); in build_logical_block_map()
287 static void ssfdcr_add_mtd(struct mtd_blktrans_ops *tr, struct mtd_info *mtd) in ssfdcr_add_mtd() argument
293 if (!mtd_type_is_nand(mtd) || mtd->oobsize != OOB_SIZE || in ssfdcr_add_mtd()
294 mtd->size > UINT_MAX) in ssfdcr_add_mtd()
298 cis_sector = get_valid_cis_sector(mtd); in ssfdcr_add_mtd()
306 ssfdc->mbd.mtd = mtd; in ssfdcr_add_mtd()
311 ssfdc->cis_block = cis_sector / (mtd->erasesize >> SECTOR_SHIFT); in ssfdcr_add_mtd()
312 ssfdc->erase_size = mtd->erasesize; in ssfdcr_add_mtd()
313 ssfdc->map_len = (u32)mtd->size / mtd->erasesize; in ssfdcr_add_mtd()
322 get_chs(mtd->size, NULL, &ssfdc->heads, &ssfdc->sectors); in ssfdcr_add_mtd()
323 ssfdc->cylinders = (unsigned short)(((u32)mtd->size >> SECTOR_SHIFT) / in ssfdcr_add_mtd()
351 ssfdc->mbd.devnum + 'a', mtd->index, mtd->name); in ssfdcr_add_mtd()
400 if (read_physical_sector(ssfdc->mbd.mtd, buf, sect_no) < 0) in ssfdcr_readsect()