hc
2023-03-15 f8c23d1415aad662de5acfa33671b5d14d2c1300
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
/* SPDX-License-Identifier: GPL-2.0 */
#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);
};