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

Subversion Repositories test_project

[/] [test_project/] [trunk/] [linux_sd_driver/] [include/] [linux/] [uio_driver.h] - Blame information for rev 81

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 62 marcus.erl
/*
2
 * include/linux/uio_driver.h
3
 *
4
 * Copyright(C) 2005, Benedikt Spranger <b.spranger@linutronix.de>
5
 * Copyright(C) 2005, Thomas Gleixner <tglx@linutronix.de>
6
 * Copyright(C) 2006, Hans J. Koch <hjk@linutronix.de>
7
 * Copyright(C) 2006, Greg Kroah-Hartman <greg@kroah.com>
8
 *
9
 * Userspace IO driver.
10
 *
11
 * Licensed under the GPLv2 only.
12
 */
13
 
14
#ifndef _UIO_DRIVER_H_
15
#define _UIO_DRIVER_H_
16
 
17
#include <linux/module.h>
18
#include <linux/fs.h>
19
#include <linux/interrupt.h>
20
 
21
/**
22
 * struct uio_mem - description of a UIO memory region
23
 * @kobj:               kobject for this mapping
24
 * @addr:               address of the device's memory
25
 * @size:               size of IO
26
 * @memtype:            type of memory addr points to
27
 * @internal_addr:      ioremap-ped version of addr, for driver internal use
28
 */
29
struct uio_mem {
30
        struct kobject          kobj;
31
        unsigned long           addr;
32
        unsigned long           size;
33
        int                     memtype;
34
        void __iomem            *internal_addr;
35
};
36
 
37
#define MAX_UIO_MAPS    5
38
 
39
struct uio_device;
40
 
41
/**
42
 * struct uio_info - UIO device capabilities
43
 * @uio_dev:            the UIO device this info belongs to
44
 * @name:               device name
45
 * @version:            device driver version
46
 * @mem:                list of mappable memory regions, size==0 for end of list
47
 * @irq:                interrupt number or UIO_IRQ_CUSTOM
48
 * @irq_flags:          flags for request_irq()
49
 * @priv:               optional private data
50
 * @handler:            the device's irq handler
51
 * @mmap:               mmap operation for this uio device
52
 * @open:               open operation for this uio device
53
 * @release:            release operation for this uio device
54
 */
55
struct uio_info {
56
        struct uio_device       *uio_dev;
57
        char                    *name;
58
        char                    *version;
59
        struct uio_mem          mem[MAX_UIO_MAPS];
60
        long                    irq;
61
        unsigned long           irq_flags;
62
        void                    *priv;
63
        irqreturn_t (*handler)(int irq, struct uio_info *dev_info);
64
        int (*mmap)(struct uio_info *info, struct vm_area_struct *vma);
65
        int (*open)(struct uio_info *info, struct inode *inode);
66
        int (*release)(struct uio_info *info, struct inode *inode);
67
};
68
 
69
extern int __must_check
70
        __uio_register_device(struct module *owner,
71
                              struct device *parent,
72
                              struct uio_info *info);
73
static inline int __must_check
74
        uio_register_device(struct device *parent, struct uio_info *info)
75
{
76
        return __uio_register_device(THIS_MODULE, parent, info);
77
}
78
extern void uio_unregister_device(struct uio_info *info);
79
extern void uio_event_notify(struct uio_info *info);
80
 
81
/* defines for uio_device->irq */
82
#define UIO_IRQ_CUSTOM  -1
83
#define UIO_IRQ_NONE    -2
84
 
85
/* defines for uio_device->memtype */
86
#define UIO_MEM_NONE    0
87
#define UIO_MEM_PHYS    1
88
#define UIO_MEM_LOGICAL 2
89
#define UIO_MEM_VIRTUAL 3
90
 
91
#endif /* _LINUX_UIO_DRIVER_H_ */

powered by: WebSVN 2.1.0

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