forked from Minki/linux
59018b6d2a
Once upon a time, the MTD repository was using CVS. This patch therefore removes all usages of the no longer updated CVS keywords from the MTD code. This also includes code that printed them to the user. Signed-off-by: Adrian Bunk <bunk@kernel.org> Signed-off-by: David Woodhouse <dwmw2@infradead.org>
83 lines
1.7 KiB
C
83 lines
1.7 KiB
C
/*
|
|
* (C) 2003 David Woodhouse <dwmw2@infradead.org>
|
|
*
|
|
* Simple read-only (writable only for RAM) mtdblock driver
|
|
*/
|
|
|
|
#include <linux/init.h>
|
|
#include <linux/slab.h>
|
|
#include <linux/mtd/mtd.h>
|
|
#include <linux/mtd/blktrans.h>
|
|
|
|
static int mtdblock_readsect(struct mtd_blktrans_dev *dev,
|
|
unsigned long block, char *buf)
|
|
{
|
|
size_t retlen;
|
|
|
|
if (dev->mtd->read(dev->mtd, (block * 512), 512, &retlen, buf))
|
|
return 1;
|
|
return 0;
|
|
}
|
|
|
|
static int mtdblock_writesect(struct mtd_blktrans_dev *dev,
|
|
unsigned long block, char *buf)
|
|
{
|
|
size_t retlen;
|
|
|
|
if (dev->mtd->write(dev->mtd, (block * 512), 512, &retlen, buf))
|
|
return 1;
|
|
return 0;
|
|
}
|
|
|
|
static void mtdblock_add_mtd(struct mtd_blktrans_ops *tr, struct mtd_info *mtd)
|
|
{
|
|
struct mtd_blktrans_dev *dev = kzalloc(sizeof(*dev), GFP_KERNEL);
|
|
|
|
if (!dev)
|
|
return;
|
|
|
|
dev->mtd = mtd;
|
|
dev->devnum = mtd->index;
|
|
|
|
dev->size = mtd->size >> 9;
|
|
dev->tr = tr;
|
|
dev->readonly = 1;
|
|
|
|
add_mtd_blktrans_dev(dev);
|
|
}
|
|
|
|
static void mtdblock_remove_dev(struct mtd_blktrans_dev *dev)
|
|
{
|
|
del_mtd_blktrans_dev(dev);
|
|
kfree(dev);
|
|
}
|
|
|
|
static struct mtd_blktrans_ops mtdblock_tr = {
|
|
.name = "mtdblock",
|
|
.major = 31,
|
|
.part_bits = 0,
|
|
.blksize = 512,
|
|
.readsect = mtdblock_readsect,
|
|
.writesect = mtdblock_writesect,
|
|
.add_mtd = mtdblock_add_mtd,
|
|
.remove_dev = mtdblock_remove_dev,
|
|
.owner = THIS_MODULE,
|
|
};
|
|
|
|
static int __init mtdblock_init(void)
|
|
{
|
|
return register_mtd_blktrans(&mtdblock_tr);
|
|
}
|
|
|
|
static void __exit mtdblock_exit(void)
|
|
{
|
|
deregister_mtd_blktrans(&mtdblock_tr);
|
|
}
|
|
|
|
module_init(mtdblock_init);
|
|
module_exit(mtdblock_exit);
|
|
|
|
MODULE_LICENSE("GPL");
|
|
MODULE_AUTHOR("David Woodhouse <dwmw2@infradead.org>");
|
|
MODULE_DESCRIPTION("Simple read-only block device emulation access to MTD devices");
|