Kernel/debug - Clean up Debug() method, bind to #define config
[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         UART_CB_GIO_EVENT,
15 };
16
17 enum {
18         PIO_RESET,
19         PIO_TX,
20         PIO_INTR,
21         N_PIO
22 };
23
24 #define NUM_INTR_CBS    2
25 #define INTR_CB_BUF_SIZE        16      // 16550 has a 16-byte fifo
26 #define MAX_RX_BUFFER_SIZE      32
27
28 typedef struct {
29         udi_init_context_t      init_context;
30
31         udi_cb_t        *active_cb;
32         struct {
33                 udi_index_t     pio_index;
34         } init;
35         
36         udi_pio_handle_t        pio_handles[N_PIO];
37         udi_channel_t   interrupt_channel;
38         
39         udi_buf_t       *rx_buffer;
40         
41         udi_boolean_t   event_cb_used;
42         udi_boolean_t   event_pending;
43         udi_gio_event_cb_t      *event_cb;
44 } rdata_t;
45
46 // === MACROS ===
47 /* Copied from http://projectudi.cvs.sourceforge.net/viewvc/projectudi/udiref/driver/udi_dpt/udi_dpt.h */
48 #define DPT_SET_ATTR_BOOLEAN(attr, name, val)   \
49                 udi_strcpy((attr)->attr_name, (name)); \
50                 (attr)->attr_type = UDI_ATTR_BOOLEAN; \
51                 (attr)->attr_length = sizeof(udi_boolean_t); \
52                 UDI_ATTR32_SET((attr)->attr_value, (val))
53
54 #define DPT_SET_ATTR32(attr, name, val) \
55                 udi_strcpy((attr)->attr_name, (name)); \
56                 (attr)->attr_type = UDI_ATTR_UBIT32; \
57                 (attr)->attr_length = sizeof(udi_ubit32_t); \
58                 UDI_ATTR32_SET((attr)->attr_value, (val))
59
60 #define DPT_SET_ATTR_ARRAY8(attr, name, val, len) \
61                 udi_strcpy((attr)->attr_name, (name)); \
62                 (attr)->attr_type = UDI_ATTR_ARRAY8; \
63                 (attr)->attr_length = (len); \
64                 udi_memcpy((attr)->attr_value, (val), (len))
65
66 #define DPT_SET_ATTR_STRING(attr, name, val, len) \
67                 udi_strcpy((attr)->attr_name, (name)); \
68                 (attr)->attr_type = UDI_ATTR_STRING; \
69                 (attr)->attr_length = (len); \
70                 udi_strncpy_rtrim((char *)(attr)->attr_value, (val), (len))
71 #define NE2K_SET_ATTR_STRFMT(attr, name, maxlen, fmt, v...) \
72                 udi_strcpy((attr)->attr_name, (name)); \
73                 (attr)->attr_type = UDI_ATTR_STRING; \
74                 (attr)->attr_length = udi_snprintf((char *)(attr)->attr_value, (maxlen), (fmt) ,## v )
75
76
77 #endif

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