/alps/pcitool

To get this branch, use:
bzr branch http://suren.me/webbzr/alps/pcitool
365 by Suren A. Chilingaryan
Restructure driver headers
1
#ifndef _PCIDRIVER_DEV_H
2
#define _PCIDRIVER_DEV_H
3
4
typedef struct pcidriver_privdata_s pcidriver_privdata_t;
5
6
#include "kmem.h"
7
#include "umem.h"
8
9
10
/* Hold the driver private data */
11
struct pcidriver_privdata_s {
12
    int devid;                                  /* the device id */
13
    dev_t devno;				/* device number (major and minor) */
14
    struct pci_dev *pdev;			/* PCI device */
15
    struct device *class_dev;                 	/* Class device */
16
    struct cdev cdev;				/* char device struct */
17
    int mmap_mode;				/* current mmap mode */
18
    int mmap_area;				/* current PCI mmap area */
19
20
#ifdef ENABLE_IRQ
21
    int irq_enabled;				/* Non-zero if IRQ is enabled */
22
    int irq_count;				/* Just an IRQ counter */
23
24
    wait_queue_head_t irq_queues[ PCIDRIVER_INT_MAXSOURCES ];       /* One queue per interrupt source */
25
    atomic_t irq_outstanding[ PCIDRIVER_INT_MAXSOURCES ];           /* Outstanding interrupts per queue */
26
    volatile unsigned int *bars_kmapped[6];		            /* PCI BARs mmapped in kernel space */
27
#endif
28
29
    spinlock_t kmemlist_lock;			/* Spinlock to lock kmem list operations */
30
    struct list_head kmem_list;			/* List of 'kmem_list_entry's associated with this device */
31
    pcidriver_kmem_entry_t *kmem_last_sync;	/* Last accessed kmem entry */
32
    atomic_t kmem_count;			/* id for next kmem entry */
33
34
    int kmem_cur_id;				/* Currently selected kmem buffer, for mmap */
35
36
    spinlock_t umemlist_lock;			/* Spinlock to lock umem list operations */
37
    struct list_head umem_list;			/* List of 'umem_list_entry's associated with this device */
38
    atomic_t umem_count;			/* id for next umem entry */
39
40
    int msi_mode;				/* Flag specifying if interrupt have been initialized in MSI mode */
41
    atomic_t refs;				/* Reference counter */
42
};
43
44
const struct file_operations *pcidriver_get_fops(void);
45
46
void pcidriver_module_get(pcidriver_privdata_t *privdata);
47
void pcidriver_module_put(pcidriver_privdata_t *privdata);
48
49
long pcidriver_ioctl(struct file *filp, unsigned int cmd, unsigned long arg);
50
51
#endif /* _PCIDRIVER_DEV_H */
52