OpenCores
URL https://opencores.org/ocsvn/test_project/test_project/trunk

Subversion Repositories test_project

[/] [test_project/] [trunk/] [linux_sd_driver/] [drivers/] [mtd/] [mtdblock_ro.c] - Blame information for rev 62

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 62 marcus.erl
/*
2
 * $Id: mtdblock_ro.c,v 1.19 2004/11/16 18:28:59 dwmw2 Exp $
3
 *
4
 * (C) 2003 David Woodhouse <dwmw2@infradead.org>
5
 *
6
 * Simple read-only (writable only for RAM) mtdblock driver
7
 */
8
 
9
#include <linux/init.h>
10
#include <linux/slab.h>
11
#include <linux/mtd/mtd.h>
12
#include <linux/mtd/blktrans.h>
13
 
14
static int mtdblock_readsect(struct mtd_blktrans_dev *dev,
15
                              unsigned long block, char *buf)
16
{
17
        size_t retlen;
18
 
19
        if (dev->mtd->read(dev->mtd, (block * 512), 512, &retlen, buf))
20
                return 1;
21
        return 0;
22
}
23
 
24
static int mtdblock_writesect(struct mtd_blktrans_dev *dev,
25
                              unsigned long block, char *buf)
26
{
27
        size_t retlen;
28
 
29
        if (dev->mtd->write(dev->mtd, (block * 512), 512, &retlen, buf))
30
                return 1;
31
        return 0;
32
}
33
 
34
static void mtdblock_add_mtd(struct mtd_blktrans_ops *tr, struct mtd_info *mtd)
35
{
36
        struct mtd_blktrans_dev *dev = kzalloc(sizeof(*dev), GFP_KERNEL);
37
 
38
        if (!dev)
39
                return;
40
 
41
        dev->mtd = mtd;
42
        dev->devnum = mtd->index;
43
 
44
        dev->size = mtd->size >> 9;
45
        dev->tr = tr;
46
        dev->readonly = 1;
47
 
48
        add_mtd_blktrans_dev(dev);
49
}
50
 
51
static void mtdblock_remove_dev(struct mtd_blktrans_dev *dev)
52
{
53
        del_mtd_blktrans_dev(dev);
54
        kfree(dev);
55
}
56
 
57
static struct mtd_blktrans_ops mtdblock_tr = {
58
        .name           = "mtdblock",
59
        .major          = 31,
60
        .part_bits      = 0,
61
        .blksize        = 512,
62
        .readsect       = mtdblock_readsect,
63
        .writesect      = mtdblock_writesect,
64
        .add_mtd        = mtdblock_add_mtd,
65
        .remove_dev     = mtdblock_remove_dev,
66
        .owner          = THIS_MODULE,
67
};
68
 
69
static int __init mtdblock_init(void)
70
{
71
        return register_mtd_blktrans(&mtdblock_tr);
72
}
73
 
74
static void __exit mtdblock_exit(void)
75
{
76
        deregister_mtd_blktrans(&mtdblock_tr);
77
}
78
 
79
module_init(mtdblock_init);
80
module_exit(mtdblock_exit);
81
 
82
MODULE_LICENSE("GPL");
83
MODULE_AUTHOR("David Woodhouse <dwmw2@infradead.org>");
84
MODULE_DESCRIPTION("Simple read-only block device emulation access to MTD devices");

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.