Lines Matching full:mtd

2  * block2mtd.c - create an mtd from a block device
28 #include <linux/mtd/mtd.h>
41 struct mtd_info mtd; member
46 /* Static info about the MTD, used in cleanup_module */
87 static int block2mtd_erase(struct mtd_info *mtd, struct erase_info *instr) in block2mtd_erase() argument
89 struct block2mtd_dev *dev = mtd->priv; in block2mtd_erase()
104 static int block2mtd_read(struct mtd_info *mtd, loff_t from, size_t len, in block2mtd_read() argument
107 struct block2mtd_dev *dev = mtd->priv; in block2mtd_read()
179 static int block2mtd_write(struct mtd_info *mtd, loff_t to, size_t len, in block2mtd_write() argument
182 struct block2mtd_dev *dev = mtd->priv; in block2mtd_write()
195 static void block2mtd_sync(struct mtd_info *mtd) in block2mtd_sync() argument
197 struct block2mtd_dev *dev = mtd->priv; in block2mtd_sync()
208 kfree(dev->mtd.name); in block2mtd_free_device()
291 pr_err("attempting to use an MTD device as a block device\n"); in add_device()
303 /* Setup the MTD structure */ in add_device()
312 dev->mtd.name = name; in add_device()
314 dev->mtd.size = size & PAGE_MASK; in add_device()
315 dev->mtd.erasesize = erase_size; in add_device()
316 dev->mtd.writesize = 1; in add_device()
317 dev->mtd.writebufsize = PAGE_SIZE; in add_device()
318 dev->mtd.type = MTD_RAM; in add_device()
319 dev->mtd.flags = MTD_CAP_RAM; in add_device()
320 dev->mtd._erase = block2mtd_erase; in add_device()
321 dev->mtd._write = block2mtd_write; in add_device()
322 dev->mtd._sync = block2mtd_sync; in add_device()
323 dev->mtd._read = block2mtd_read; in add_device()
324 dev->mtd.priv = dev; in add_device()
325 dev->mtd.owner = THIS_MODULE; in add_device()
327 if (mtd_device_register(&dev->mtd, NULL, 0)) { in add_device()
333 pr_info("mtd%d: [%s] erase_size = %dKiB [%d]\n", in add_device()
334 dev->mtd.index, in add_device()
335 label ? label : dev->mtd.name + strlen("block2mtd: "), in add_device()
336 dev->mtd.erasesize >> 10, dev->mtd.erasesize); in add_device()
456 pr_info("Using custom MTD label '%s' for dev %s\n", label, name); in block2mtd_setup2()
513 /* Remove the MTD devices */ in block2mtd_exit()
516 block2mtd_sync(&dev->mtd); in block2mtd_exit()
517 mtd_device_unregister(&dev->mtd); in block2mtd_exit()
519 pr_info("mtd%d: [%s] removed\n", in block2mtd_exit()
520 dev->mtd.index, in block2mtd_exit()
521 dev->mtd.name + strlen("block2mtd: ")); in block2mtd_exit()
532 MODULE_DESCRIPTION("Emulate an MTD using a block device");