1#include "hisax_if.h" 2#include "hisax_isac.h" 3#include <linux/pci.h> 4 5#define HSCX_BUFMAX 4096 6 7enum { 8 AVM_FRITZ_PCI, 9 AVM_FRITZ_PNP, 10 AVM_FRITZ_PCIV2, 11}; 12 13struct hdlc_stat_reg { 14#ifdef __BIG_ENDIAN 15 u_char fill; 16 u_char mode; 17 u_char xml; 18 u_char cmd; 19#else 20 u_char cmd; 21 u_char xml; 22 u_char mode; 23 u_char fill; 24#endif 25} __attribute__((packed)); 26 27struct fritz_bcs { 28 struct hisax_b_if b_if; 29 struct fritz_adapter *adapter; 30 int mode; 31 int channel; 32 33 union { 34 u_int ctrl; 35 struct hdlc_stat_reg sr; 36 } ctrl; 37 u_int stat; 38 int rcvidx; 39 int fifo_size; 40 u_char rcvbuf[HSCX_BUFMAX]; /* B-Channel receive Buffer */ 41 42 int tx_cnt; /* B-Channel transmit counter */ 43 struct sk_buff *tx_skb; /* B-Channel transmit Buffer */ 44}; 45 46struct fritz_adapter { 47 int type; 48 spinlock_t hw_lock; 49 unsigned int io; 50 unsigned int irq; 51 struct isac isac; 52 53 struct fritz_bcs bcs[2]; 54 55 u32 (*read_hdlc_status) (struct fritz_adapter *adapter, int nr); 56 void (*write_ctrl) (struct fritz_bcs *bcs, int which); 57}; 58