Linux-2.6.12-rc2
Initial git repository build. I'm not bothering with the full history, even though we have it. We can create a separate "historical" git archive of that later if we want to, and in the meantime it's about 3.2GB when imported into git - space that would just make the early git days unnecessarily complicated, when we don't have a lot of good infrastructure for it. Let it rip!
Tento commit je obsažen v:
293
drivers/net/3c505.h
Normální soubor
293
drivers/net/3c505.h
Normální soubor
@@ -0,0 +1,293 @@
|
||||
/*****************************************************************
|
||||
*
|
||||
* defines for 3Com Etherlink Plus adapter
|
||||
*
|
||||
*****************************************************************/
|
||||
|
||||
#define ELP_DMA 6
|
||||
#define ELP_RX_PCBS 4
|
||||
#define ELP_MAX_CARDS 4
|
||||
|
||||
/*
|
||||
* I/O register offsets
|
||||
*/
|
||||
#define PORT_COMMAND 0x00 /* read/write, 8-bit */
|
||||
#define PORT_STATUS 0x02 /* read only, 8-bit */
|
||||
#define PORT_AUXDMA 0x02 /* write only, 8-bit */
|
||||
#define PORT_DATA 0x04 /* read/write, 16-bit */
|
||||
#define PORT_CONTROL 0x06 /* read/write, 8-bit */
|
||||
|
||||
#define ELP_IO_EXTENT 0x10 /* size of used IO registers */
|
||||
|
||||
/*
|
||||
* host control registers bits
|
||||
*/
|
||||
#define ATTN 0x80 /* attention */
|
||||
#define FLSH 0x40 /* flush data register */
|
||||
#define DMAE 0x20 /* DMA enable */
|
||||
#define DIR 0x10 /* direction */
|
||||
#define TCEN 0x08 /* terminal count interrupt enable */
|
||||
#define CMDE 0x04 /* command register interrupt enable */
|
||||
#define HSF2 0x02 /* host status flag 2 */
|
||||
#define HSF1 0x01 /* host status flag 1 */
|
||||
|
||||
/*
|
||||
* combinations of HSF flags used for PCB transmission
|
||||
*/
|
||||
#define HSF_PCB_ACK HSF1
|
||||
#define HSF_PCB_NAK HSF2
|
||||
#define HSF_PCB_END (HSF2|HSF1)
|
||||
#define HSF_PCB_MASK (HSF2|HSF1)
|
||||
|
||||
/*
|
||||
* host status register bits
|
||||
*/
|
||||
#define HRDY 0x80 /* data register ready */
|
||||
#define HCRE 0x40 /* command register empty */
|
||||
#define ACRF 0x20 /* adapter command register full */
|
||||
/* #define DIR 0x10 direction - same as in control register */
|
||||
#define DONE 0x08 /* DMA done */
|
||||
#define ASF3 0x04 /* adapter status flag 3 */
|
||||
#define ASF2 0x02 /* adapter status flag 2 */
|
||||
#define ASF1 0x01 /* adapter status flag 1 */
|
||||
|
||||
/*
|
||||
* combinations of ASF flags used for PCB reception
|
||||
*/
|
||||
#define ASF_PCB_ACK ASF1
|
||||
#define ASF_PCB_NAK ASF2
|
||||
#define ASF_PCB_END (ASF2|ASF1)
|
||||
#define ASF_PCB_MASK (ASF2|ASF1)
|
||||
|
||||
/*
|
||||
* host aux DMA register bits
|
||||
*/
|
||||
#define DMA_BRST 0x01 /* DMA burst */
|
||||
|
||||
/*
|
||||
* maximum amount of data allowed in a PCB
|
||||
*/
|
||||
#define MAX_PCB_DATA 62
|
||||
|
||||
/*****************************************************************
|
||||
*
|
||||
* timeout value
|
||||
* this is a rough value used for loops to stop them from
|
||||
* locking up the whole machine in the case of failure or
|
||||
* error conditions
|
||||
*
|
||||
*****************************************************************/
|
||||
|
||||
#define TIMEOUT 300
|
||||
|
||||
/*****************************************************************
|
||||
*
|
||||
* PCB commands
|
||||
*
|
||||
*****************************************************************/
|
||||
|
||||
enum {
|
||||
/*
|
||||
* host PCB commands
|
||||
*/
|
||||
CMD_CONFIGURE_ADAPTER_MEMORY = 0x01,
|
||||
CMD_CONFIGURE_82586 = 0x02,
|
||||
CMD_STATION_ADDRESS = 0x03,
|
||||
CMD_DMA_DOWNLOAD = 0x04,
|
||||
CMD_DMA_UPLOAD = 0x05,
|
||||
CMD_PIO_DOWNLOAD = 0x06,
|
||||
CMD_PIO_UPLOAD = 0x07,
|
||||
CMD_RECEIVE_PACKET = 0x08,
|
||||
CMD_TRANSMIT_PACKET = 0x09,
|
||||
CMD_NETWORK_STATISTICS = 0x0a,
|
||||
CMD_LOAD_MULTICAST_LIST = 0x0b,
|
||||
CMD_CLEAR_PROGRAM = 0x0c,
|
||||
CMD_DOWNLOAD_PROGRAM = 0x0d,
|
||||
CMD_EXECUTE_PROGRAM = 0x0e,
|
||||
CMD_SELF_TEST = 0x0f,
|
||||
CMD_SET_STATION_ADDRESS = 0x10,
|
||||
CMD_ADAPTER_INFO = 0x11,
|
||||
NUM_TRANSMIT_CMDS,
|
||||
|
||||
/*
|
||||
* adapter PCB commands
|
||||
*/
|
||||
CMD_CONFIGURE_ADAPTER_RESPONSE = 0x31,
|
||||
CMD_CONFIGURE_82586_RESPONSE = 0x32,
|
||||
CMD_ADDRESS_RESPONSE = 0x33,
|
||||
CMD_DOWNLOAD_DATA_REQUEST = 0x34,
|
||||
CMD_UPLOAD_DATA_REQUEST = 0x35,
|
||||
CMD_RECEIVE_PACKET_COMPLETE = 0x38,
|
||||
CMD_TRANSMIT_PACKET_COMPLETE = 0x39,
|
||||
CMD_NETWORK_STATISTICS_RESPONSE = 0x3a,
|
||||
CMD_LOAD_MULTICAST_RESPONSE = 0x3b,
|
||||
CMD_CLEAR_PROGRAM_RESPONSE = 0x3c,
|
||||
CMD_DOWNLOAD_PROGRAM_RESPONSE = 0x3d,
|
||||
CMD_EXECUTE_RESPONSE = 0x3e,
|
||||
CMD_SELF_TEST_RESPONSE = 0x3f,
|
||||
CMD_SET_ADDRESS_RESPONSE = 0x40,
|
||||
CMD_ADAPTER_INFO_RESPONSE = 0x41
|
||||
};
|
||||
|
||||
/* Definitions for the PCB data structure */
|
||||
|
||||
/* Data units */
|
||||
typedef unsigned char byte;
|
||||
typedef unsigned short int word;
|
||||
typedef unsigned long int dword;
|
||||
|
||||
/* Data structures */
|
||||
struct Memconf {
|
||||
word cmd_q,
|
||||
rcv_q,
|
||||
mcast,
|
||||
frame,
|
||||
rcv_b,
|
||||
progs;
|
||||
};
|
||||
|
||||
struct Rcv_pkt {
|
||||
word buf_ofs,
|
||||
buf_seg,
|
||||
buf_len,
|
||||
timeout;
|
||||
};
|
||||
|
||||
struct Xmit_pkt {
|
||||
word buf_ofs,
|
||||
buf_seg,
|
||||
pkt_len;
|
||||
};
|
||||
|
||||
struct Rcv_resp {
|
||||
word buf_ofs,
|
||||
buf_seg,
|
||||
buf_len,
|
||||
pkt_len,
|
||||
timeout,
|
||||
status;
|
||||
dword timetag;
|
||||
};
|
||||
|
||||
struct Xmit_resp {
|
||||
word buf_ofs,
|
||||
buf_seg,
|
||||
c_stat,
|
||||
status;
|
||||
};
|
||||
|
||||
|
||||
struct Netstat {
|
||||
dword tot_recv,
|
||||
tot_xmit;
|
||||
word err_CRC,
|
||||
err_align,
|
||||
err_res,
|
||||
err_ovrrun;
|
||||
};
|
||||
|
||||
|
||||
struct Selftest {
|
||||
word error;
|
||||
union {
|
||||
word ROM_cksum;
|
||||
struct {
|
||||
word ofs, seg;
|
||||
} RAM;
|
||||
word i82586;
|
||||
} failure;
|
||||
};
|
||||
|
||||
struct Info {
|
||||
byte minor_vers,
|
||||
major_vers;
|
||||
word ROM_cksum,
|
||||
RAM_sz,
|
||||
free_ofs,
|
||||
free_seg;
|
||||
};
|
||||
|
||||
struct Memdump {
|
||||
word size,
|
||||
off,
|
||||
seg;
|
||||
};
|
||||
|
||||
/*
|
||||
Primary Command Block. The most important data structure. All communication
|
||||
between the host and the adapter is done with these. (Except for the actual
|
||||
Ethernet data, which has different packaging.)
|
||||
*/
|
||||
typedef struct {
|
||||
byte command;
|
||||
byte length;
|
||||
union {
|
||||
struct Memconf memconf;
|
||||
word configure;
|
||||
struct Rcv_pkt rcv_pkt;
|
||||
struct Xmit_pkt xmit_pkt;
|
||||
byte multicast[10][6];
|
||||
byte eth_addr[6];
|
||||
byte failed;
|
||||
struct Rcv_resp rcv_resp;
|
||||
struct Xmit_resp xmit_resp;
|
||||
struct Netstat netstat;
|
||||
struct Selftest selftest;
|
||||
struct Info info;
|
||||
struct Memdump memdump;
|
||||
byte raw[62];
|
||||
} data;
|
||||
} pcb_struct;
|
||||
|
||||
/* These defines for 'configure' */
|
||||
#define RECV_STATION 0x00
|
||||
#define RECV_BROAD 0x01
|
||||
#define RECV_MULTI 0x02
|
||||
#define RECV_PROMISC 0x04
|
||||
#define NO_LOOPBACK 0x00
|
||||
#define INT_LOOPBACK 0x08
|
||||
#define EXT_LOOPBACK 0x10
|
||||
|
||||
/*****************************************************************
|
||||
*
|
||||
* structure to hold context information for adapter
|
||||
*
|
||||
*****************************************************************/
|
||||
|
||||
#define DMA_BUFFER_SIZE 1600
|
||||
#define BACKLOG_SIZE 4
|
||||
|
||||
typedef struct {
|
||||
volatile short got[NUM_TRANSMIT_CMDS]; /* flags for
|
||||
command completion */
|
||||
pcb_struct tx_pcb; /* PCB for foreground sending */
|
||||
pcb_struct rx_pcb; /* PCB for foreground receiving */
|
||||
pcb_struct itx_pcb; /* PCB for background sending */
|
||||
pcb_struct irx_pcb; /* PCB for background receiving */
|
||||
struct net_device_stats stats;
|
||||
|
||||
void *dma_buffer;
|
||||
|
||||
struct {
|
||||
unsigned int length[BACKLOG_SIZE];
|
||||
unsigned int in;
|
||||
unsigned int out;
|
||||
} rx_backlog;
|
||||
|
||||
struct {
|
||||
unsigned int direction;
|
||||
unsigned int length;
|
||||
struct sk_buff *skb;
|
||||
void *target;
|
||||
unsigned long start_time;
|
||||
} current_dma;
|
||||
|
||||
/* flags */
|
||||
unsigned long send_pcb_semaphore;
|
||||
unsigned long dmaing;
|
||||
unsigned long busy;
|
||||
|
||||
unsigned int rx_active; /* number of receive PCBs */
|
||||
volatile unsigned char hcr_val; /* what we think the HCR contains */
|
||||
spinlock_t lock; /* Interrupt v tx lock */
|
||||
} elp_device;
|
Odkázat v novém úkolu
Zablokovat Uživatele