Lines Matching full:mtd
13 #include <linux/mtd/mtd.h>
14 #include <linux/mtd/concat.h>
15 #include <mtd/cfi_flash.h>
23 static int cfi_mtd_erase(struct mtd_info *mtd, struct erase_info *instr) in cfi_mtd_erase() argument
25 flash_info_t *fi = mtd->priv; in cfi_mtd_erase()
67 static int cfi_mtd_read(struct mtd_info *mtd, loff_t from, size_t len, in cfi_mtd_read() argument
70 flash_info_t *fi = mtd->priv; in cfi_mtd_read()
79 static int cfi_mtd_write(struct mtd_info *mtd, loff_t to, size_t len, in cfi_mtd_write() argument
82 flash_info_t *fi = mtd->priv; in cfi_mtd_write()
98 static void cfi_mtd_sync(struct mtd_info *mtd) in cfi_mtd_sync() argument
107 static int cfi_mtd_lock(struct mtd_info *mtd, loff_t ofs, uint64_t len) in cfi_mtd_lock() argument
109 flash_info_t *fi = mtd->priv; in cfi_mtd_lock()
119 static int cfi_mtd_unlock(struct mtd_info *mtd, loff_t ofs, uint64_t len) in cfi_mtd_unlock() argument
121 flash_info_t *fi = mtd->priv; in cfi_mtd_unlock()
131 static int cfi_mtd_set_erasesize(struct mtd_info *mtd, flash_info_t *fi) in cfi_mtd_set_erasesize() argument
155 mtd->numeraseregions = 0; in cfi_mtd_set_erasesize()
156 mtd->erasesize = sect_size_old; in cfi_mtd_set_erasesize()
160 mtd->numeraseregions = regions; in cfi_mtd_set_erasesize()
161 mtd->eraseregions = malloc(sizeof(struct mtd_erase_region_info) * regions); in cfi_mtd_set_erasesize()
171 mtd->eraseregions[regions].offset = offset - base_addr; in cfi_mtd_set_erasesize()
172 mtd->eraseregions[regions].erasesize = sect_size_old; in cfi_mtd_set_erasesize()
173 mtd->eraseregions[regions].numblocks = numblocks; in cfi_mtd_set_erasesize()
193 mtd->eraseregions[regions].offset = offset - base_addr; in cfi_mtd_set_erasesize()
194 mtd->eraseregions[regions].erasesize = sect_size_old; in cfi_mtd_set_erasesize()
195 mtd->eraseregions[regions].numblocks = numblocks; in cfi_mtd_set_erasesize()
197 mtd->erasesize = sect_size; in cfi_mtd_set_erasesize()
204 struct mtd_info *mtd; in cfi_mtd_init() local
214 mtd = &cfi_mtd_info[i]; in cfi_mtd_init()
216 memset(mtd, 0, sizeof(struct mtd_info)); in cfi_mtd_init()
218 error = cfi_mtd_set_erasesize(mtd, fi); in cfi_mtd_init()
223 mtd->name = cfi_mtd_names[i]; in cfi_mtd_init()
224 mtd->type = MTD_NORFLASH; in cfi_mtd_init()
225 mtd->flags = MTD_CAP_NORFLASH; in cfi_mtd_init()
226 mtd->size = fi->size; in cfi_mtd_init()
227 mtd->writesize = 1; in cfi_mtd_init()
228 mtd->writebufsize = mtd->writesize; in cfi_mtd_init()
230 mtd->_erase = cfi_mtd_erase; in cfi_mtd_init()
231 mtd->_read = cfi_mtd_read; in cfi_mtd_init()
232 mtd->_write = cfi_mtd_write; in cfi_mtd_init()
233 mtd->_sync = cfi_mtd_sync; in cfi_mtd_init()
234 mtd->_lock = cfi_mtd_lock; in cfi_mtd_init()
235 mtd->_unlock = cfi_mtd_unlock; in cfi_mtd_init()
236 mtd->priv = fi; in cfi_mtd_init()
238 if (add_mtd_device(mtd)) in cfi_mtd_init()
242 mtd_list[devices_found++] = mtd; in cfi_mtd_init()
252 mtd = mtd_concat_create(mtd_list, devices_found, c_mtd_name); in cfi_mtd_init()
254 if (mtd == NULL) in cfi_mtd_init()
257 if (add_mtd_device(mtd)) in cfi_mtd_init()