Lines Matching refs:mtd

14 #include <linux/mtd/pfow.h>
15 #include <linux/mtd/qinfo.h>
19 static int lpddr_read(struct mtd_info *mtd, loff_t adr, size_t len,
21 static int lpddr_write_buffers(struct mtd_info *mtd, loff_t to,
23 static int lpddr_writev(struct mtd_info *mtd, const struct kvec *vecs,
25 static int lpddr_erase(struct mtd_info *mtd, struct erase_info *instr);
26 static int lpddr_lock(struct mtd_info *mtd, loff_t ofs, uint64_t len);
27 static int lpddr_unlock(struct mtd_info *mtd, loff_t ofs, uint64_t len);
28 static int lpddr_point(struct mtd_info *mtd, loff_t adr, size_t len,
30 static int lpddr_unpoint(struct mtd_info *mtd, loff_t adr, size_t len);
40 struct mtd_info *mtd;
44 mtd = kzalloc(sizeof(*mtd), GFP_KERNEL);
45 if (!mtd)
47 mtd->priv = map;
48 mtd->type = MTD_NORFLASH;
50 /* Fill in the default mtd operations */
51 mtd->_read = lpddr_read;
52 mtd->type = MTD_NORFLASH;
53 mtd->flags = MTD_CAP_NORFLASH;
54 mtd->flags &= ~MTD_BIT_WRITEABLE;
55 mtd->_erase = lpddr_erase;
56 mtd->_write = lpddr_write_buffers;
57 mtd->_writev = lpddr_writev;
58 mtd->_lock = lpddr_lock;
59 mtd->_unlock = lpddr_unlock;
61 mtd->_point = lpddr_point;
62 mtd->_unpoint = lpddr_unpoint;
64 mtd->size = 1ULL << lpddr->qinfo->DevSizeShift;
65 mtd->erasesize = 1 << lpddr->qinfo->UniformBlockSizeShift;
66 mtd->writesize = 1 << lpddr->qinfo->BufSizeShift;
71 kfree(mtd);
93 return mtd;
481 static int do_erase_oneblock(struct mtd_info *mtd, loff_t adr)
483 struct map_info *map = mtd->priv;
508 static int lpddr_read(struct mtd_info *mtd, loff_t adr, size_t len,
511 struct map_info *map = mtd->priv;
532 static int lpddr_point(struct mtd_info *mtd, loff_t adr, size_t len,
535 struct map_info *map = mtd->priv;
585 static int lpddr_unpoint (struct mtd_info *mtd, loff_t adr, size_t len)
587 struct map_info *map = mtd->priv;
630 static int lpddr_write_buffers(struct mtd_info *mtd, loff_t to, size_t len,
638 return lpddr_writev(mtd, &vec, 1, to, retlen);
642 static int lpddr_writev(struct mtd_info *mtd, const struct kvec *vecs,
645 struct map_info *map = mtd->priv;
689 static int lpddr_erase(struct mtd_info *mtd, struct erase_info *instr)
693 struct map_info *map = mtd->priv;
701 ret = do_erase_oneblock(mtd, ofs);
713 static int do_xxlock(struct mtd_info *mtd, loff_t adr, uint32_t len, int thunk)
716 struct map_info *map = mtd->priv;
748 static int lpddr_lock(struct mtd_info *mtd, loff_t ofs, uint64_t len)
750 return do_xxlock(mtd, ofs, len, DO_XXLOCK_LOCK);
753 static int lpddr_unlock(struct mtd_info *mtd, loff_t ofs, uint64_t len)
755 return do_xxlock(mtd, ofs, len, DO_XXLOCK_UNLOCK);