#include "hisax_if.h" | |
#include "hisax_isac.h" | |
#include <linux/pci.h> | |
#define HSCX_BUFMAX 4096 | |
enum { | |
AVM_FRITZ_PCI, | |
AVM_FRITZ_PNP, | |
AVM_FRITZ_PCIV2, | |
}; | |
struct hdlc_stat_reg { | |
#ifdef __BIG_ENDIAN | |
u_char fill; | |
u_char mode; | |
u_char xml; | |
u_char cmd; | |
#else | |
u_char cmd; | |
u_char xml; | |
u_char mode; | |
u_char fill; | |
#endif | |
} __attribute__((packed)); | |
struct fritz_bcs { | |
struct hisax_b_if b_if; | |
struct fritz_adapter *adapter; | |
int mode; | |
int channel; | |
union { | |
u_int ctrl; | |
struct hdlc_stat_reg sr; | |
} ctrl; | |
u_int stat; | |
int rcvidx; | |
int fifo_size; | |
u_char rcvbuf[HSCX_BUFMAX]; /* B-Channel receive Buffer */ | |
int tx_cnt; /* B-Channel transmit counter */ | |
struct sk_buff *tx_skb; /* B-Channel transmit Buffer */ | |
}; | |
struct fritz_adapter { | |
int type; | |
spinlock_t hw_lock; | |
unsigned int io; | |
unsigned int irq; | |
struct isac isac; | |
struct fritz_bcs bcs[2]; | |
u32 (*read_hdlc_status) (struct fritz_adapter *adapter, int nr); | |
void (*write_ctrl) (struct fritz_bcs *bcs, int which); | |
}; | |