UDI/Drivers - Adding 16550 UART driver
[tpg/acess2.git] / UDI / drivers / uart_16c550 / uart16c550_common.h
1 #ifndef _UART16C550_COMMON_H_
2 #define _UART16C550_COMMON_H_
3
4 enum {
5         UART_OPS_DEV = 1,
6         UART_OPS_IRQ,
7         UART_OPS_GIO,
8 };
9
10 enum {
11         UART_CB_BUS_BIND = 1,
12         UART_CB_INTR,
13         UART_CB_INTR_EVENT,
14 };
15
16 enum {
17         PIO_RESET,
18         PIO_TX,
19         PIO_RX,
20         N_PIO
21 };
22
23 typedef struct {
24         udi_cb_t        *active_cb;
25         struct {
26                 udi_index_t     pio_index;
27         } init;
28         
29         udi_pio_handle_t        pio_handles[N_PIO];
30         udi_channel_t   interrupt_channel;
31 } rdata_t;
32
33 // === MACROS ===
34 /* Copied from http://projectudi.cvs.sourceforge.net/viewvc/projectudi/udiref/driver/udi_dpt/udi_dpt.h */
35 #define DPT_SET_ATTR_BOOLEAN(attr, name, val)   \
36                 udi_strcpy((attr)->attr_name, (name)); \
37                 (attr)->attr_type = UDI_ATTR_BOOLEAN; \
38                 (attr)->attr_length = sizeof(udi_boolean_t); \
39                 UDI_ATTR32_SET((attr)->attr_value, (val))
40
41 #define DPT_SET_ATTR32(attr, name, val) \
42                 udi_strcpy((attr)->attr_name, (name)); \
43                 (attr)->attr_type = UDI_ATTR_UBIT32; \
44                 (attr)->attr_length = sizeof(udi_ubit32_t); \
45                 UDI_ATTR32_SET((attr)->attr_value, (val))
46
47 #define DPT_SET_ATTR_ARRAY8(attr, name, val, len) \
48                 udi_strcpy((attr)->attr_name, (name)); \
49                 (attr)->attr_type = UDI_ATTR_ARRAY8; \
50                 (attr)->attr_length = (len); \
51                 udi_memcpy((attr)->attr_value, (val), (len))
52
53 #define DPT_SET_ATTR_STRING(attr, name, val, len) \
54                 udi_strcpy((attr)->attr_name, (name)); \
55                 (attr)->attr_type = UDI_ATTR_STRING; \
56                 (attr)->attr_length = (len); \
57                 udi_strncpy_rtrim((char *)(attr)->attr_value, (val), (len))
58 #define NE2K_SET_ATTR_STRFMT(attr, name, maxlen, fmt, v...) \
59                 udi_strcpy((attr)->attr_name, (name)); \
60                 (attr)->attr_type = UDI_ATTR_STRING; \
61                 (attr)->attr_length = udi_snprintf((char *)(attr)->attr_value, (maxlen), (fmt) ,## v )
62
63
64 #endif

UCC git Repository :: git.ucc.asn.au