2 * UDI Ne2000 NIC Driver
3 * By John Hodge (thePowersGang)
8 #ifndef _NE2000_COMMON_H_
9 #define _NE2000_COMMON_H_
12 #include <udi_physio.h>
15 #include "ne2000_hw.h"
17 #define ARRAY_SIZEOF(arr) (sizeof(arr)/sizeof(arr[0]))
21 udi_init_context_t init_context;
23 udi_pio_handle_t pio_handle;
24 udi_ubit8_t macaddr[6];
28 /* Copied from http://projectudi.cvs.sourceforge.net/viewvc/projectudi/udiref/driver/udi_dpt/udi_dpt.h */
29 #define DPT_SET_ATTR_BOOLEAN(attr, name, val) \
30 udi_strcpy((attr)->attr_name, (name)); \
31 (attr)->attr_type = UDI_ATTR_BOOLEAN; \
32 (attr)->attr_length = sizeof(udi_boolean_t); \
33 UDI_ATTR32_SET((attr)->attr_value, (val))
35 #define DPT_SET_ATTR32(attr, name, val) \
36 udi_strcpy((attr)->attr_name, (name)); \
37 (attr)->attr_type = UDI_ATTR_UBIT32; \
38 (attr)->attr_length = sizeof(udi_ubit32_t); \
39 UDI_ATTR32_SET((attr)->attr_value, (val))
41 #define DPT_SET_ATTR_ARRAY8(attr, name, val, len) \
42 udi_strcpy((attr)->attr_name, (name)); \
43 (attr)->attr_type = UDI_ATTR_ARRAY8; \
44 (attr)->attr_length = (len); \
45 udi_memcpy((attr)->attr_value, (val), (len))
47 #define DPT_SET_ATTR_STRING(attr, name, val, len) \
48 udi_strcpy((attr)->attr_name, (name)); \
49 (attr)->attr_type = UDI_ATTR_STRING; \
50 (attr)->attr_length = (len); \
51 udi_strncpy_rtrim((char *)(attr)->attr_value, (val), (len))
52 #define NE2K_SET_ATTR_STRFMT(attr, name, maxlen, fmt, ...) \
53 udi_strcpy((attr)->attr_name, (name)); \
54 (attr)->attr_type = UDI_ATTR_STRING; \
55 (attr)->attr_length = udi_snprintf((char *)(attr)->attr_value, (maxlen), (fmt) ,## __VA_LIST__ )
57 extern udi_channel_event_ind_op_t ne2k_bus_dev_channel_event_ind;
58 extern udi_bus_bind_ack_op_t ne2k_bus_dev_bus_bind_ack;
59 extern udi_bus_unbind_ack_op_t ne2k_bus_dev_bus_unbind_ack;
60 extern udi_intr_attach_ack_op_t ne2k_bus_dev_intr_attach_ack;
61 extern udi_intr_detach_ack_op_t ne2k_bus_dev_intr_detach_ack;
63 extern udi_channel_event_ind_op_t ne2k_nd_ctrl_channel_event_ind;
64 extern udi_nd_bind_req_op_t ne2k_nd_ctrl_bind_req;
65 extern udi_nd_unbind_req_op_t ne2k_nd_ctrl_unbind_req;
66 extern udi_nd_enable_req_op_t ne2k_nd_ctrl_enable_req;
67 extern udi_nd_disable_req_op_t ne2k_nd_ctrl_disable_req;
68 extern udi_nd_ctrl_req_op_t ne2k_nd_ctrl_ctrl_req;
69 extern udi_nd_info_req_op_t ne2k_nd_ctrl_info_req;
71 extern udi_channel_event_ind_op_t ne2k_nd_tx_channel_event_ind;
72 extern udi_nd_tx_req_op_t ne2k_nd_tx_tx_req;
73 extern udi_nd_exp_tx_req_op_t ne2k_nd_tx_exp_tx_req;
75 extern udi_channel_event_ind_op_t ne2k_nd_rx_channel_event_ind;
76 extern udi_nd_rx_rdy_op_t ne2k_nd_rx_rx_rdy;