UDI/16c550 - Untested TX, planning RX
[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 #define RX_BUFFER_SIZE  32
24
25 typedef struct {
26         udi_cb_t        *active_cb;
27         struct {
28                 udi_index_t     pio_index;
29         } init;
30         
31         udi_pio_handle_t        pio_handles[N_PIO];
32         udi_channel_t   interrupt_channel;
33         
34         udi_ubit8_t     rx_bytes;
35         udi_buf_t       *rx_buffer;
36 } rdata_t;
37
38 // === MACROS ===
39 /* Copied from http://projectudi.cvs.sourceforge.net/viewvc/projectudi/udiref/driver/udi_dpt/udi_dpt.h */
40 #define DPT_SET_ATTR_BOOLEAN(attr, name, val)   \
41                 udi_strcpy((attr)->attr_name, (name)); \
42                 (attr)->attr_type = UDI_ATTR_BOOLEAN; \
43                 (attr)->attr_length = sizeof(udi_boolean_t); \
44                 UDI_ATTR32_SET((attr)->attr_value, (val))
45
46 #define DPT_SET_ATTR32(attr, name, val) \
47                 udi_strcpy((attr)->attr_name, (name)); \
48                 (attr)->attr_type = UDI_ATTR_UBIT32; \
49                 (attr)->attr_length = sizeof(udi_ubit32_t); \
50                 UDI_ATTR32_SET((attr)->attr_value, (val))
51
52 #define DPT_SET_ATTR_ARRAY8(attr, name, val, len) \
53                 udi_strcpy((attr)->attr_name, (name)); \
54                 (attr)->attr_type = UDI_ATTR_ARRAY8; \
55                 (attr)->attr_length = (len); \
56                 udi_memcpy((attr)->attr_value, (val), (len))
57
58 #define DPT_SET_ATTR_STRING(attr, name, val, len) \
59                 udi_strcpy((attr)->attr_name, (name)); \
60                 (attr)->attr_type = UDI_ATTR_STRING; \
61                 (attr)->attr_length = (len); \
62                 udi_strncpy_rtrim((char *)(attr)->attr_value, (val), (len))
63 #define NE2K_SET_ATTR_STRFMT(attr, name, maxlen, fmt, v...) \
64                 udi_strcpy((attr)->attr_name, (name)); \
65                 (attr)->attr_type = UDI_ATTR_STRING; \
66                 (attr)->attr_length = udi_snprintf((char *)(attr)->attr_value, (maxlen), (fmt) ,## v )
67
68
69 #endif

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