1c702779dadd7a55109f5f4fa5381d69a257bea4
[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         udi_buf_t       *rx_buffer;
32 } rdata_t;
33
34 // === MACROS ===
35 /* Copied from http://projectudi.cvs.sourceforge.net/viewvc/projectudi/udiref/driver/udi_dpt/udi_dpt.h */
36 #define DPT_SET_ATTR_BOOLEAN(attr, name, val)   \
37                 udi_strcpy((attr)->attr_name, (name)); \
38                 (attr)->attr_type = UDI_ATTR_BOOLEAN; \
39                 (attr)->attr_length = sizeof(udi_boolean_t); \
40                 UDI_ATTR32_SET((attr)->attr_value, (val))
41
42 #define DPT_SET_ATTR32(attr, name, val) \
43                 udi_strcpy((attr)->attr_name, (name)); \
44                 (attr)->attr_type = UDI_ATTR_UBIT32; \
45                 (attr)->attr_length = sizeof(udi_ubit32_t); \
46                 UDI_ATTR32_SET((attr)->attr_value, (val))
47
48 #define DPT_SET_ATTR_ARRAY8(attr, name, val, len) \
49                 udi_strcpy((attr)->attr_name, (name)); \
50                 (attr)->attr_type = UDI_ATTR_ARRAY8; \
51                 (attr)->attr_length = (len); \
52                 udi_memcpy((attr)->attr_value, (val), (len))
53
54 #define DPT_SET_ATTR_STRING(attr, name, val, len) \
55                 udi_strcpy((attr)->attr_name, (name)); \
56                 (attr)->attr_type = UDI_ATTR_STRING; \
57                 (attr)->attr_length = (len); \
58                 udi_strncpy_rtrim((char *)(attr)->attr_value, (val), (len))
59 #define NE2K_SET_ATTR_STRFMT(attr, name, maxlen, fmt, v...) \
60                 udi_strcpy((attr)->attr_name, (name)); \
61                 (attr)->attr_type = UDI_ATTR_STRING; \
62                 (attr)->attr_length = udi_snprintf((char *)(attr)->attr_value, (maxlen), (fmt) ,## v )
63
64
65 #endif

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