Lines Matching refs:mtd

39 static int cfi_staa_writev(struct mtd_info *mtd, const struct kvec *vecs,
43 static int cfi_staa_lock(struct mtd_info *mtd, loff_t ofs, uint64_t len);
44 static int cfi_staa_unlock(struct mtd_info *mtd, loff_t ofs, uint64_t len);
169 struct mtd_info *mtd; in cfi_staa_setup() local
174 mtd = kzalloc(sizeof(*mtd), GFP_KERNEL); in cfi_staa_setup()
177 if (!mtd) { in cfi_staa_setup()
182 mtd->priv = map; in cfi_staa_setup()
183 mtd->type = MTD_NORFLASH; in cfi_staa_setup()
184 mtd->size = devsize * cfi->numchips; in cfi_staa_setup()
186 mtd->numeraseregions = cfi->cfiq->NumEraseRegions * cfi->numchips; in cfi_staa_setup()
187 mtd->eraseregions = kmalloc(sizeof(struct mtd_erase_region_info) in cfi_staa_setup()
188 * mtd->numeraseregions, GFP_KERNEL); in cfi_staa_setup()
189 if (!mtd->eraseregions) { in cfi_staa_setup()
191 kfree(mtd); in cfi_staa_setup()
200 if (mtd->erasesize < ersize) { in cfi_staa_setup()
201 mtd->erasesize = ersize; in cfi_staa_setup()
204 mtd->eraseregions[(j*cfi->cfiq->NumEraseRegions)+i].offset = (j*devsize)+offset; in cfi_staa_setup()
205 mtd->eraseregions[(j*cfi->cfiq->NumEraseRegions)+i].erasesize = ersize; in cfi_staa_setup()
206 mtd->eraseregions[(j*cfi->cfiq->NumEraseRegions)+i].numblocks = ernum; in cfi_staa_setup()
214 kfree(mtd->eraseregions); in cfi_staa_setup()
216 kfree(mtd); in cfi_staa_setup()
220 for (i=0; i<mtd->numeraseregions;i++){ in cfi_staa_setup()
222 i, (unsigned long long)mtd->eraseregions[i].offset, in cfi_staa_setup()
223 mtd->eraseregions[i].erasesize, in cfi_staa_setup()
224 mtd->eraseregions[i].numblocks); in cfi_staa_setup()
228 mtd->_erase = cfi_staa_erase_varsize; in cfi_staa_setup()
229 mtd->_read = cfi_staa_read; in cfi_staa_setup()
230 mtd->_write = cfi_staa_write_buffers; in cfi_staa_setup()
231 mtd->_writev = cfi_staa_writev; in cfi_staa_setup()
232 mtd->_sync = cfi_staa_sync; in cfi_staa_setup()
233 mtd->_lock = cfi_staa_lock; in cfi_staa_setup()
234 mtd->_unlock = cfi_staa_unlock; in cfi_staa_setup()
235 mtd->_suspend = cfi_staa_suspend; in cfi_staa_setup()
236 mtd->_resume = cfi_staa_resume; in cfi_staa_setup()
237 mtd->flags = MTD_CAP_NORFLASH & ~MTD_BIT_WRITEABLE; in cfi_staa_setup()
238 mtd->writesize = 8; /* FIXME: Should be 0 for STMicro flashes w/out ECC */ in cfi_staa_setup()
239 mtd->writebufsize = cfi_interleave(cfi) << cfi->cfiq->MaxBufWriteSize; in cfi_staa_setup()
242 mtd->name = map->name; in cfi_staa_setup()
243 return mtd; in cfi_staa_setup()
382 static int cfi_staa_read (struct mtd_info *mtd, loff_t from, size_t len, size_t *retlen, u_char *bu… in cfi_staa_read() argument
384 struct map_info *map = mtd->priv; in cfi_staa_read()
605 static int cfi_staa_write_buffers (struct mtd_info *mtd, loff_t to, in cfi_staa_write_buffers() argument
608 struct map_info *map = mtd->priv; in cfi_staa_write_buffers()
658 #define ECCBUF_SIZE (mtd->writesize)
662 cfi_staa_writev(struct mtd_info *mtd, const struct kvec *vecs, in cfi_staa_writev() argument
693 ret = mtd_write(mtd, to, ECCBUF_SIZE, &thislen, in cfi_staa_writev()
703 ret = mtd_write(mtd, to, ECCBUF_DIV(elem_len), in cfi_staa_writev()
718 ret = mtd_write(mtd, to, buflen, &thislen, buffer); in cfi_staa_writev()
889 static int cfi_staa_erase_varsize(struct mtd_info *mtd, in cfi_staa_erase_varsize() argument
891 { struct map_info *map = mtd->priv; in cfi_staa_erase_varsize()
896 struct mtd_erase_region_info *regions = mtd->eraseregions; in cfi_staa_erase_varsize()
910 while (i < mtd->numeraseregions && instr->addr >= regions[i].offset) in cfi_staa_erase_varsize()
930 while (i<mtd->numeraseregions && (instr->addr + instr->len) >= regions[i].offset) in cfi_staa_erase_varsize()
974 static void cfi_staa_sync (struct mtd_info *mtd) in cfi_staa_sync() argument
976 struct map_info *map = mtd->priv; in cfi_staa_sync()
1127 static int cfi_staa_lock(struct mtd_info *mtd, loff_t ofs, uint64_t len) in cfi_staa_lock() argument
1129 struct map_info *map = mtd->priv; in cfi_staa_lock()
1137 if (ofs & (mtd->erasesize - 1)) in cfi_staa_lock()
1140 if (len & (mtd->erasesize -1)) in cfi_staa_lock()
1165 adr += mtd->erasesize; in cfi_staa_lock()
1166 len -= mtd->erasesize; in cfi_staa_lock()
1273 static int cfi_staa_unlock(struct mtd_info *mtd, loff_t ofs, uint64_t len) in cfi_staa_unlock() argument
1275 struct map_info *map = mtd->priv; in cfi_staa_unlock()
1294 temp_adr += mtd->erasesize; in cfi_staa_unlock()
1295 temp_len -= mtd->erasesize; in cfi_staa_unlock()
1312 static int cfi_staa_suspend(struct mtd_info *mtd) in cfi_staa_suspend() argument
1314 struct map_info *map = mtd->priv; in cfi_staa_suspend()
1368 static void cfi_staa_resume(struct mtd_info *mtd) in cfi_staa_resume() argument
1370 struct map_info *map = mtd->priv; in cfi_staa_resume()
1392 static void cfi_staa_destroy(struct mtd_info *mtd) in cfi_staa_destroy() argument
1394 struct map_info *map = mtd->priv; in cfi_staa_destroy()