X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=UDI%2Fdrivers%2Fnet_ne2000%2Fne2000_common.h;h=d4e58aa34fb5326d7d04cf0c3d72f67c6a54a73f;hb=845b6f9d90bb87b5e760e4d49aa93b0e003ab750;hp=bfbdeeb3b431051949c159a700792434d4afcbe5;hpb=9da18f07fef93afbb070146c55ed435b0355f276;p=tpg%2Facess2.git diff --git a/UDI/drivers/net_ne2000/ne2000_common.h b/UDI/drivers/net_ne2000/ne2000_common.h index bfbdeeb3..d4e58aa3 100644 --- a/UDI/drivers/net_ne2000/ne2000_common.h +++ b/UDI/drivers/net_ne2000/ne2000_common.h @@ -8,9 +8,56 @@ #ifndef _NE2000_COMMON_H_ #define _NE2000_COMMON_H_ +#define UDI_VERSION 0x101 +#define UDI_PHYSIO_VERSION 0x101 +#define UDI_PCI_VERSION 0x101 +#define UDI_NIC_VERSION 0x101 + #include +#include +#include #include +#include "ne2000_hw.h" + +#define ARRAY_SIZEOF(arr) (sizeof(arr)/sizeof(arr[0])) + +enum { + NE2K_PIO_RESET, + NE2K_PIO_ENABLE, + NE2K_PIO_RX, + NE2K_PIO_IRQACK, + NE2K_PIO_TX, + N_NE2K_PIO +}; + +typedef struct +{ + udi_init_context_t init_context; + + udi_cb_t *active_cb; + + udi_intr_attach_cb_t *intr_attach_cb; + + struct { + udi_index_t pio_index; + udi_index_t n_intr_event_cb; + + udi_index_t rx_chan_index; + } init; + + udi_pio_handle_t pio_handles[N_NE2K_PIO]; + udi_channel_t interrupt_channel; + udi_channel_t rx_channel; + udi_channel_t tx_channel; + + udi_nic_rx_cb_t *rx_next_cb; + udi_nic_rx_cb_t *rx_last_cb; + udi_ubit8_t rx_next_page; + + udi_ubit8_t macaddr[6]; +} ne2k_rdata_t; + // === MACROS === /* Copied from http://projectudi.cvs.sourceforge.net/viewvc/projectudi/udiref/driver/udi_dpt/udi_dpt.h */ #define DPT_SET_ATTR_BOOLEAN(attr, name, val) \ @@ -36,17 +83,34 @@ (attr)->attr_type = UDI_ATTR_STRING; \ (attr)->attr_length = (len); \ udi_strncpy_rtrim((char *)(attr)->attr_value, (val), (len)) +#define NE2K_SET_ATTR_STRFMT(attr, name, maxlen, fmt, ...) \ + udi_strcpy((attr)->attr_name, (name)); \ + (attr)->attr_type = UDI_ATTR_STRING; \ + (attr)->attr_length = udi_snprintf((char *)(attr)->attr_value, (maxlen), (fmt) ,## __VA_ARGS__ ) + +extern udi_usage_ind_op_t ne2k_usage_ind; +extern udi_enumerate_req_op_t ne2k_enumerate_req; +extern udi_devmgmt_req_op_t ne2k_devmgmt_req; +extern udi_final_cleanup_req_op_t ne2k_final_cleanup_req; extern udi_channel_event_ind_op_t ne2k_bus_dev_channel_event_ind; extern udi_bus_bind_ack_op_t ne2k_bus_dev_bus_bind_ack; +extern udi_pio_map_call_t ne2k_bus_dev_bind__pio_map; +extern udi_channel_spawn_call_t ne2k_bus_dev_bind__intr_chanel; +extern udi_cb_alloc_call_t ne2k_bus_dev_bind__intr_attach; extern udi_bus_unbind_ack_op_t ne2k_bus_dev_bus_unbind_ack; extern udi_intr_attach_ack_op_t ne2k_bus_dev_intr_attach_ack; +extern udi_cb_alloc_call_t ne2k_bus_dev_bind__intr_event_cb; +extern udi_pio_trans_call_t ne2k_bus_dev_bind__card_reset; extern udi_intr_detach_ack_op_t ne2k_bus_dev_intr_detach_ack; extern udi_channel_event_ind_op_t ne2k_nd_ctrl_channel_event_ind; extern udi_nd_bind_req_op_t ne2k_nd_ctrl_bind_req; +extern udi_channel_spawn_call_t ne2k_nd_ctrl_bind__tx_chan_ok; +extern udi_channel_spawn_call_t ne2k_nd_ctrl_bind__rx_chan_ok; extern udi_nd_unbind_req_op_t ne2k_nd_ctrl_unbind_req; extern udi_nd_enable_req_op_t ne2k_nd_ctrl_enable_req; +extern udi_pio_trans_call_t ne2k_nd_ctrl_enable_req__trans_done; extern udi_nd_disable_req_op_t ne2k_nd_ctrl_disable_req; extern udi_nd_ctrl_req_op_t ne2k_nd_ctrl_ctrl_req; extern udi_nd_info_req_op_t ne2k_nd_ctrl_info_req; @@ -58,5 +122,10 @@ extern udi_nd_exp_tx_req_op_t ne2k_nd_tx_exp_tx_req; extern udi_channel_event_ind_op_t ne2k_nd_rx_channel_event_ind; extern udi_nd_rx_rdy_op_t ne2k_nd_rx_rx_rdy; +extern udi_channel_event_ind_op_t ne2k_bus_irq_channel_event_ind; +extern udi_intr_event_ind_op_t ne2k_bus_irq_intr_event_ind; + +extern void ne2k_intr__rx_ok(udi_cb_t *gcb); + #endif