Subversion Repositories shark

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
170 giacomo 1
#ifndef _GPIO_HEADER_INCLUDED_
2
#define _GPIO_HEADER_INCLUDED_
3
 
4
#include <linux/list.h>
5
#include "drivers/compbttv.h"
6
#include <sys/types.h>
7
 
8
/* base "class" for dispatch requests */
9
struct gpio_request {
10
    struct list_head list;          /* linked list of requests */
11
};
12
 
13
/* request queues */
14
typedef struct _request_queue_s {
15
    struct list_head list;          /* list of pending requests */
16
} request_queue_t;
17
 
18
#define init_request_queue(rq)                                  \
19
do {                                                            \
20
    INIT_LIST_HEAD(&((rq)->list));                              \
21
} while(0)
22
 
23
struct gpio_adapter {
24
    /* overlapped data members: see "struct bttv" */
25
    struct pci_dev *dev;
26
    unsigned char *bt848_mem; /* pointer to mapped IO memory */
27
 
28
    /* gpio async management variables */
29
    unsigned long state;    //GPIO_HW_LOCKED   == someone has exclusive hw access
30
                            //GPIO_ASYNC_MOD   == change is pending
31
                            //GPIO_TASK_ACTIVE == request service task running
32
 
33
    __u32 sync_bits;      // current sync state (when hardware not locked)
34
    __u32 async_mask;     // mask of bits allocated to async control
35
    __u32 async_bits;     // current (or pending) state.  see: async_change
36
 
37
    /* gpio sync management variables */
38
    request_queue_t request_queue;
39
    request_queue_t free_queue;
40
 
41
    void *private_data;
42
};
43
 
44
extern void init_gpio_adapter ( struct gpio_adapter * );
45
 
46
/* gpio state bits */
47
#define GPIO_HW_LOCKED      0
48
#define GPIO_ASYNC_MOD      1
49
#define GPIO_TASK_ACTIVE    2
50
#define GPIO_USER_STATE     3       /* the base for user defined status */
51
 
52
/* gpio async methods */
53
extern void gpio_set   ( struct gpio_adapter *, __u32 data );
54
extern void gpio_and   ( struct gpio_adapter *, __u32 and_data );
55
extern void gpio_or    ( struct gpio_adapter *, __u32 or_data );
56
extern void gpio_andor ( struct gpio_adapter *, __u32 and_data, __u32 or_data );
57
 
58
/* request queueing methods */
59
extern void gpio_commit_request( struct gpio_adapter *, struct gpio_request * );
60
extern void gpio_commit_transaction( struct gpio_adapter *, struct list_head * );
61
 
62
#endif /* _GPIO_HEADER_INCLUDED_ */