17 #include <linux/types.h>
18 #include <linux/stddef.h>
22 #include <linux/module.h>
26 #include <linux/slab.h>
27 #define HISAX_STATUS_BUFSIZE 4096
86 "No Card",
"Teles 16.0",
"Teles 8.0",
"Teles 16.3",
87 "Creatix/Teles PnP",
"AVM A1",
"Elsa ML",
"Elsa Quickstep",
88 "Teles PCMCIA",
"ITK ix1-micro Rev.2",
"Elsa PCMCIA",
89 "Eicon.Diehl Diva",
"ISDNLink",
"TeleInt",
"Teles 16.3c",
90 "Sedlbauer Speed Card",
"USR Sportster",
"ith mic Linux",
91 "Elsa PCI",
"Compaq ISA",
"NETjet-S",
"Teles PCI",
92 "Sedlbauer Speed Star (PCMCIA)",
"AMD 7930",
"NICCY",
"S0Box",
93 "AVM A1 (PCMCIA)",
"AVM Fritz PnP/PCI",
"Sedlbauer Speed Fax +",
94 "Siemens I-Surf",
"Acer P10",
"HST Saphir",
"Telekom A4T",
95 "Scitel Quadro",
"Gazel",
"HFC 2BDS0 PCI",
"Winbond 6692",
96 "HFC 2BDS0 SX",
"NETspider-U",
"HFC-2BDS0-SP PCMCIA",
97 "Hotplug",
"Formula-n enter:now PCI a/b",
100 #ifdef CONFIG_HISAX_ELSA
101 #define DEFAULT_CARD ISDN_CTYPE_ELSA
102 #define DEFAULT_CFG {0, 0, 0, 0}
105 #ifdef CONFIG_HISAX_AVM_A1
108 #define DEFAULT_CARD ISDN_CTYPE_A1
109 #define DEFAULT_CFG {10, 0x340, 0, 0}
112 #ifdef CONFIG_HISAX_AVM_A1_PCMCIA
115 #define DEFAULT_CARD ISDN_CTYPE_A1_PCMCIA
116 #define DEFAULT_CFG {11, 0x170, 0, 0}
119 #ifdef CONFIG_HISAX_FRITZPCI
122 #define DEFAULT_CARD ISDN_CTYPE_FRITZPCI
123 #define DEFAULT_CFG {0, 0, 0, 0}
126 #ifdef CONFIG_HISAX_16_3
129 #define DEFAULT_CARD ISDN_CTYPE_16_3
130 #define DEFAULT_CFG {15, 0x180, 0, 0}
133 #ifdef CONFIG_HISAX_S0BOX
136 #define DEFAULT_CARD ISDN_CTYPE_S0BOX
137 #define DEFAULT_CFG {7, 0x378, 0, 0}
140 #ifdef CONFIG_HISAX_16_0
143 #define DEFAULT_CARD ISDN_CTYPE_16_0
144 #define DEFAULT_CFG {15, 0xd0000, 0xd80, 0}
147 #ifdef CONFIG_HISAX_TELESPCI
150 #define DEFAULT_CARD ISDN_CTYPE_TELESPCI
151 #define DEFAULT_CFG {0, 0, 0, 0}
154 #ifdef CONFIG_HISAX_IX1MICROR2
157 #define DEFAULT_CARD ISDN_CTYPE_IX1MICROR2
158 #define DEFAULT_CFG {5, 0x390, 0, 0}
161 #ifdef CONFIG_HISAX_DIEHLDIVA
164 #define DEFAULT_CARD ISDN_CTYPE_DIEHLDIVA
165 #define DEFAULT_CFG {0, 0x0, 0, 0}
168 #ifdef CONFIG_HISAX_ASUSCOM
171 #define DEFAULT_CARD ISDN_CTYPE_ASUSCOM
172 #define DEFAULT_CFG {5, 0x200, 0, 0}
175 #ifdef CONFIG_HISAX_TELEINT
178 #define DEFAULT_CARD ISDN_CTYPE_TELEINT
179 #define DEFAULT_CFG {5, 0x300, 0, 0}
182 #ifdef CONFIG_HISAX_SEDLBAUER
185 #define DEFAULT_CARD ISDN_CTYPE_SEDLBAUER
186 #define DEFAULT_CFG {11, 0x270, 0, 0}
189 #ifdef CONFIG_HISAX_SPORTSTER
192 #define DEFAULT_CARD ISDN_CTYPE_SPORTSTER
193 #define DEFAULT_CFG {7, 0x268, 0, 0}
196 #ifdef CONFIG_HISAX_MIC
199 #define DEFAULT_CARD ISDN_CTYPE_MIC
200 #define DEFAULT_CFG {12, 0x3e0, 0, 0}
203 #ifdef CONFIG_HISAX_NETJET
206 #define DEFAULT_CARD ISDN_CTYPE_NETJET_S
207 #define DEFAULT_CFG {0, 0, 0, 0}
210 #ifdef CONFIG_HISAX_HFCS
213 #define DEFAULT_CARD ISDN_CTYPE_TELES3C
214 #define DEFAULT_CFG {5, 0x500, 0, 0}
217 #ifdef CONFIG_HISAX_HFC_PCI
220 #define DEFAULT_CARD ISDN_CTYPE_HFC_PCI
221 #define DEFAULT_CFG {0, 0, 0, 0}
224 #ifdef CONFIG_HISAX_HFC_SX
227 #define DEFAULT_CARD ISDN_CTYPE_HFC_SX
228 #define DEFAULT_CFG {5, 0x2E0, 0, 0}
231 #ifdef CONFIG_HISAX_NICCY
234 #define DEFAULT_CARD ISDN_CTYPE_NICCY
235 #define DEFAULT_CFG {0, 0x0, 0, 0}
238 #ifdef CONFIG_HISAX_ISURF
241 #define DEFAULT_CARD ISDN_CTYPE_ISURF
242 #define DEFAULT_CFG {5, 0x100, 0xc8000, 0}
245 #ifdef CONFIG_HISAX_HSTSAPHIR
248 #define DEFAULT_CARD ISDN_CTYPE_HSTSAPHIR
249 #define DEFAULT_CFG {5, 0x250, 0, 0}
252 #ifdef CONFIG_HISAX_BKM_A4T
255 #define DEFAULT_CARD ISDN_CTYPE_BKM_A4T
256 #define DEFAULT_CFG {0, 0x0, 0, 0}
259 #ifdef CONFIG_HISAX_SCT_QUADRO
262 #define DEFAULT_CARD ISDN_CTYPE_SCT_QUADRO
263 #define DEFAULT_CFG {1, 0x0, 0, 0}
266 #ifdef CONFIG_HISAX_GAZEL
269 #define DEFAULT_CARD ISDN_CTYPE_GAZEL
270 #define DEFAULT_CFG {15, 0x180, 0, 0}
273 #ifdef CONFIG_HISAX_W6692
276 #define DEFAULT_CARD ISDN_CTYPE_W6692
277 #define DEFAULT_CFG {0, 0, 0, 0}
280 #ifdef CONFIG_HISAX_NETJET_U
283 #define DEFAULT_CARD ISDN_CTYPE_NETJET_U
284 #define DEFAULT_CFG {0, 0, 0, 0}
287 #ifdef CONFIG_HISAX_1TR6
288 #define DEFAULT_PROTO ISDN_PTYPE_1TR6
289 #define DEFAULT_PROTO_NAME "1TR6"
291 #ifdef CONFIG_HISAX_NI1
293 #define DEFAULT_PROTO ISDN_PTYPE_NI1
294 #undef DEFAULT_PROTO_NAME
295 #define DEFAULT_PROTO_NAME "NI1"
297 #ifdef CONFIG_HISAX_EURO
299 #define DEFAULT_PROTO ISDN_PTYPE_EURO
300 #undef DEFAULT_PROTO_NAME
301 #define DEFAULT_PROTO_NAME "EURO"
303 #ifndef DEFAULT_PROTO
304 #define DEFAULT_PROTO ISDN_PTYPE_UNKNOWN
305 #define DEFAULT_PROTO_NAME "UNKNOWN"
308 #define DEFAULT_CARD 0
309 #define DEFAULT_CFG {0, 0, 0, 0}
312 #define FIRST_CARD { \
323 #define HISAX_IDSIZE (HISAX_MAX_CARDS * 8)
326 static char *HiSax_id = HiSaxID;
329 static int type[HISAX_MAX_CARDS] = { 0, };
330 static int protocol[HISAX_MAX_CARDS] = { 0, };
331 static int io[HISAX_MAX_CARDS] = { 0, };
333 #ifdef CONFIG_HISAX_16_3
336 #ifdef CONFIG_HISAX_NICCY
346 static char *
id = HiSaxID;
370 if ((p =
strchr(revision,
':'))) {
379 static void __init HiSaxVersion(
void)
403 #define MAX_ARG (HISAX_MAX_CARDS * 5)
415 while (argc && (i < HISAX_MAX_CARDS)) {
418 cards[
i].
typ = ints[
j];
428 cards[
i].
para[0] = ints[
j];
433 cards[
i].
para[1] = ints[
j];
438 cards[
i].
para[2] = ints[
j];
456 __setup(
"hisax=", HiSax_setup);
479 #if CARD_AVM_A1_PCMCIA
567 #if CARD_FN_ENTERNOW_PCI
574 static inline struct IsdnCardState *hisax_findcard(
int driverid)
580 if (cards[i].cs->myid == driverid)
589 struct IsdnCardState *hisax_get_card(
int cardnr)
591 if ((cardnr <= nrcards) && (cardnr > 0))
592 if (cards[cardnr - 1].cs)
593 return cards[cardnr - 1].
cs;
598 static int HiSax_readstatus(
u_char __user *
buf,
int len,
int id,
int channel)
602 struct IsdnCardState *cs = hisax_findcard(
id);
607 "HiSax: status overflow readstat %d/%d\n",
610 count = cs->status_end - cs->status_read + 1;
615 cs->status_read +=
count;
616 if (cs->status_read > cs->status_end)
617 cs->status_read = cs->status_buf;
634 "HiSax: if_readstatus called with invalid driverId!\n");
644 *s-- = mark % 10 +
'0';
646 *s-- = mark % 10 +
'0';
649 *s-- = mark % 10 +
'0';
651 *s-- = mark % 6 +
'0';
654 *s-- = mark % 10 +
'0';
656 *s-- = mark % 10 +
'0';
692 spin_unlock_irqrestore(&cs->statlock, flags);
698 i = cs->status_end - cs->status_write + 1;
702 memcpy(cs->status_write, p, i);
703 cs->status_write +=
i;
704 if (cs->status_write > cs->status_end)
705 cs->status_write = cs->status_buf;
708 memcpy(cs->status_write, p, len);
709 cs->status_write += len;
711 #ifdef KERNELSTACK_DEBUG
714 current->kernel_stack_page, i);
716 for (p = tmpbuf, i = len; i > 0; i--, p++) {
717 *cs->status_write++ = *
p;
718 if (cs->status_write > cs->status_end)
719 cs->status_write = cs->status_buf;
723 spin_unlock_irqrestore(&cs->statlock, flags);
728 cs->iif.statcallb(&ic);
741 int ll_run(
struct IsdnCardState *cs,
int addfeatures)
747 cs->iif.features |= addfeatures;
748 cs->iif.statcallb(&ic);
752 static void ll_stop(
struct IsdnCardState *cs)
758 cs->iif.statcallb(&ic);
762 static void ll_unload(
struct IsdnCardState *cs)
768 cs->iif.statcallb(&ic);
769 kfree(cs->status_buf);
770 cs->status_read =
NULL;
771 cs->status_write =
NULL;
772 cs->status_end =
NULL;
777 static void closecard(
int cardnr)
779 struct IsdnCardState *csta = cards[cardnr].
cs;
781 if (csta->bcs->BC_Close !=
NULL) {
782 csta->bcs->BC_Close(csta->bcs + 1);
783 csta->bcs->BC_Close(csta->bcs);
791 dev_kfree_skb(csta->tx_skb);
794 if (csta->DC_Close !=
NULL) {
795 csta->DC_Close(csta);
799 if (csta->dbusytimer.function !=
NULL)
806 struct IsdnCardState *cs =
dev_id;
814 static int init_card(
struct IsdnCardState *cs)
816 int irq_cnt, cnt = 3,
ret;
822 irq_cnt = cs->irq_cnt = 0;
825 if (
request_irq(cs->irq, card_irq, cs->irq_flags,
"HiSax", cs)) {
835 CardType[cs->typ], cs->irq, cs->irq_cnt);
836 if (cs->irq_cnt == irq_cnt) {
838 "%s: IRQ(%d) getting no interrupts during init %d\n",
839 CardType[cs->typ], cs->irq, 4 - cnt);
889 #if CARD_AVM_A1_PCMCIA
1005 #if CARD_FN_ENTERNOW_PCI
1015 "HiSax: Support for %s Card not selected\n",
1024 static int hisax_cs_new(
int cardnr,
char *
id,
struct IsdnCard *card,
1025 struct IsdnCardState **cs_out,
int *busy_flag,
1026 struct module *lockowner)
1028 struct IsdnCardState *
cs;
1032 cs = kzalloc(
sizeof(
struct IsdnCardState),
GFP_ATOMIC);
1035 "HiSax: No memory for IsdnCardState(card %d)\n",
1044 cs->cardnr = cardnr;
1045 cs->debug = L1_DEB_WARN;
1047 cs->busy_flag = busy_flag;
1048 cs->irq_flags = I4L_IRQ_FLAG;
1059 "HiSax: Card Type %d out of range\n", card->
typ);
1064 "HiSax: No memory for dlog(card %d)\n", cardnr + 1);
1069 "HiSax: No memory for status_buf(card %d)\n",
1074 cs->status_read = cs->status_buf;
1075 cs->status_write = cs->status_buf;
1077 cs->typ = card->
typ;
1079 cs->iif.owner = lockowner;
1082 cs->iif.channels = 2;
1084 cs->iif.hl_hdrlen = MAX_HEADER_LEN;
1091 #ifdef CONFIG_HISAX_1TR6
1094 #ifdef CONFIG_HISAX_EURO
1097 #ifdef CONFIG_HISAX_NI1
1103 cs->iif.writecmd =
NULL;
1105 cs->iif.readstat = HiSax_readstatus;
1107 cs->myid = cs->iif.channels;
1121 static int hisax_cs_setup(
int cardnr,
struct IsdnCard *card,
1122 struct IsdnCardState *cs)
1136 skb_queue_head_init(&cs->rq);
1137 skb_queue_head_init(&cs->sq);
1144 switch (card->
typ) {
1149 ret = init_card(cs);
1163 if (!
test_bit(HW_ISAR, &cs->HW_Flags))
1177 static int __ref checkcard(
int cardnr,
char *
id,
int *busy_flag,
1178 struct module *lockowner,
1182 struct IsdnCard *card = cards + cardnr;
1183 struct IsdnCardState *
cs;
1185 ret = hisax_cs_new(cardnr,
id, card, &cs, busy_flag, lockowner);
1190 "HiSax: Card %d Protocol %s Id=%s (%d)\n", cardnr + 1,
1195 "NONE", cs->iif.id, cs->myid);
1197 ret = card_setup(card);
1203 ret = hisax_cs_setup(cardnr, card, cs);
1213 static void HiSax_shiftcards(
int idx)
1217 for (i = idx; i < (HISAX_MAX_CARDS - 1); i++)
1218 memcpy(&cards[i], &cards[i + 1],
sizeof(cards[i]));
1221 static int __init HiSax_inithardware(
int *busy_flag)
1228 char *next_id = HiSax_id;
1231 if (
strchr(HiSax_id,
','))
1233 else if (
strchr(HiSax_id,
'%'))
1236 while (i < nrcards) {
1237 if (cards[i].typ < 1)
1240 if ((next_id =
strchr(
id, t))) {
1252 hisax_cs_setup_card)) {
1259 "HiSax: Card %s not installed !\n",
1262 HiSax_shiftcards(i);
1271 int i,
last = nrcards - 1;
1273 if (cardnr > last || cardnr < 0)
1275 if (cards[cardnr].cs) {
1276 ll_stop(cards[cardnr].cs);
1281 if (cards[cardnr].cs->irq)
1282 free_irq(cards[cardnr].cs->irq, cards[cardnr].
cs);
1283 kfree((
void *) cards[cardnr].cs);
1288 cards[
i] = cards[i + 1];
1296 struct IsdnCardState *cs = cards[cardnr].
cs;
1305 cs->HW_Flags, cs->bcs[0].Flag, cs->bcs[1].Flag);
1307 cs->bcs[0].mode, cs->bcs[0].channel);
1309 cs->bcs[1].mode, cs->bcs[1].channel);
1310 #ifdef ERROR_STATISTIC
1312 cs->err_rx, cs->err_crc, cs->err_tx);
1314 "HiSax: bc0 errors(inv,rdo,crc,tx) %d,%d,%d,%d\n",
1315 cs->bcs[0].err_inv, cs->bcs[0].err_rdo, cs->bcs[0].err_crc,
1318 "HiSax: bc1 errors(inv,rdo,crc,tx) %d,%d,%d,%d\n",
1319 cs->bcs[1].err_inv, cs->bcs[1].err_rdo, cs->bcs[1].err_crc,
1325 cs->bcs[0].err_inv = 0;
1326 cs->bcs[0].err_rdo = 0;
1327 cs->bcs[0].err_crc = 0;
1328 cs->bcs[0].err_tx = 0;
1329 cs->bcs[1].err_inv = 0;
1330 cs->bcs[1].err_rdo = 0;
1331 cs->bcs[1].err_crc = 0;
1332 cs->bcs[1].err_tx = 0;
1337 static int __init HiSax_init(
void)
1365 for (i = 0; i < HISAX_MAX_CARDS; i++)
1369 #ifdef CONFIG_HISAX_ELSA
1375 #ifdef CONFIG_HISAX_SEDLBAUER
1381 #ifdef CONFIG_HISAX_AVM_A1_PCMCIA
1387 #ifdef CONFIG_HISAX_HFC_SX
1398 for (i = j = 0; j < HISAX_MAX_CARDS; i++) {
1422 cards[
j].
para[1] = io0[
i];
1423 cards[
j].
para[2] = io1[
i];
1427 cards[
j].
para[1] = io0[
i];
1428 cards[
j].
para[2] = io1[
i];
1480 cards[j++].
para[0] = 1;
1482 if (j < HISAX_MAX_CARDS) {
1485 cards[j++].
para[0] = 2;
1487 if (j < HISAX_MAX_CARDS) {
1490 cards[j++].
para[0] = 3;
1492 if (j < HISAX_MAX_CARDS) {
1495 cards[
j].
para[0] = 4;
1504 "HiSax: Warning - no protocol specified\n");
1512 strcpy(HiSaxID,
"HiSax");
1513 for (i = 0; i < HISAX_MAX_CARDS; i++)
1514 if (cards[i].typ > 0)
1517 nrcards, (nrcards > 1) ?
"s" :
"");
1520 if (!HiSax_inithardware(
NULL))
1536 static void __exit HiSax_exit(
void)
1538 int cardnr = nrcards - 1;
1550 #ifdef CONFIG_HOTPLUG
1559 sprintf(ids,
"HiSax%d", nrcards);
1562 if (!checkcard(nrcards, ids, busy_flag,
THIS_MODULE,
1563 hisax_cs_setup_card))
1582 static void hisax_d_l1l2(
struct hisax_if *ifc,
int pr,
void *
arg);
1583 static void hisax_b_l1l2(
struct hisax_if *ifc,
int pr,
void *
arg);
1584 static void hisax_d_l2l1(
struct PStack *
st,
int pr,
void *
arg);
1585 static void hisax_b_l2l1(
struct PStack *
st,
int pr,
void *
arg);
1586 static int hisax_cardmsg(
struct IsdnCardState *cs,
int mt,
void *
arg);
1587 static int hisax_bc_setstack(
struct PStack *
st,
struct BCState *bcs);
1588 static void hisax_bc_close(
struct BCState *bcs);
1590 static void EChannel_proc_rcv(
struct hisax_d_if *d_if);
1592 static int hisax_setup_card_dynamic(
struct IsdnCard *card)
1602 struct IsdnCardState *
cs;
1604 for (i = 0; i < HISAX_MAX_CARDS; i++) {
1609 if (i >= HISAX_MAX_CARDS)
1616 retval = checkcard(i,
id,
NULL, hisax_d_if->
owner,
1617 hisax_setup_card_dynamic);
1624 hisax_d_if->
cs =
cs;
1625 cs->hw.hisax_d_if = hisax_d_if;
1626 cs->cardmsg = hisax_cardmsg;
1628 cs->channel[0].d_st->l2.l2l1 = hisax_d_l2l1;
1629 for (i = 0; i < 2; i++) {
1630 cs->bcs[
i].BC_SetStack = hisax_bc_setstack;
1631 cs->bcs[
i].BC_Close = hisax_bc_close;
1633 b_if[
i]->
ifc.l1l2 = hisax_b_l1l2;
1635 hisax_d_if->
b_if[
i] = b_if[
i];
1637 hisax_d_if->
ifc.l1l2 = hisax_d_l1l2;
1638 skb_queue_head_init(&hisax_d_if->
erq);
1646 cards[hisax_d_if->
cs->cardnr].
typ = 0;
1653 static void hisax_sched_event(
struct IsdnCardState *cs,
int event)
1661 struct IsdnCardState *cs =
1669 EChannel_proc_rcv(cs->hw.hisax_d_if);
1671 if (
test_bit(0, &cs->hw.hisax_d_if->ph_state))
1675 for (st = cs->stlist; st; st = st->next)
1676 st->l1.l1l2(st, pr,
NULL);
1681 static void hisax_b_sched_event(
struct BCState *bcs,
int event)
1687 static inline void D_L2L1(
struct hisax_d_if *d_if,
int pr,
void *
arg)
1690 ifc->
l2l1(ifc, pr, arg);
1693 static inline void B_L2L1(
struct hisax_b_if *b_if,
int pr,
void *arg)
1696 ifc->
l2l1(ifc, pr, arg);
1699 static void hisax_d_l1l2(
struct hisax_if *ifc,
int pr,
void *arg)
1702 struct IsdnCardState *cs = d_if->
cs;
1726 for (st = cs->stlist; st; st = st->next) {
1743 static void hisax_b_l1l2(
struct hisax_if *ifc,
int pr,
void *arg)
1746 struct BCState *bcs = b_if->
bcs;
1747 struct PStack *st = bcs->st;
1753 st->l1.l1l2(st, pr,
NULL);
1756 st->l1.l1l2(st, pr,
NULL);
1759 bcs->hw.b_if =
NULL;
1766 bcs->tx_cnt -= (
long)arg;
1767 if (
test_bit(FLG_LLI_L1WAKEUP, &bcs->st->lli.flag)) {
1770 bcs->ackcnt += (
long)arg;
1771 spin_unlock_irqrestore(&bcs->aclock, flags);
1785 printk(
"hisax_b_l1l2 pr %#x\n", pr);
1790 static void hisax_d_l2l1(
struct PStack *st,
int pr,
void *arg)
1792 struct IsdnCardState *cs = st->l1.hardware;
1799 if (cs->debug & DEB_DLOG_HEX)
1801 if (cs->debug & DEB_DLOG_VERBOSE)
1811 if (!
test_bit(FLG_L1_DBUSY, &cs->HW_Flags))
1817 D_L2L1(hisax_d_if, pr, arg);
1822 static int hisax_cardmsg(
struct IsdnCardState *cs,
int mt,
void *arg)
1827 static void hisax_b_l2l1(
struct PStack *st,
int pr,
void *arg)
1829 struct BCState *bcs = st->l1.bcs;
1834 B_L2L1(b_if, pr, (
void *)(
unsigned long)st->l1.mode);
1846 if (!
test_bit(BC_FLG_BUSY, &bcs->Flag))
1855 B_L2L1(b_if, pr, arg);
1860 static int hisax_bc_setstack(
struct PStack *st,
struct BCState *bcs)
1862 struct IsdnCardState *cs = st->l1.hardware;
1863 struct hisax_d_if *hisax_d_if = cs->hw.hisax_d_if;
1865 bcs->channel = st->l1.bc;
1867 bcs->hw.
b_if = hisax_d_if->
b_if[st->l1.bc];
1868 hisax_d_if->
b_if[st->l1.bc]->bcs = bcs;
1871 st->l2.l2l1 = hisax_b_l2l1;
1875 skb_queue_head_init(&bcs->rqueue);
1876 skb_queue_head_init(&bcs->squeue);
1880 static void hisax_bc_close(
struct BCState *bcs)
1888 static void EChannel_proc_rcv(
struct hisax_d_if *d_if)
1890 struct IsdnCardState *cs = d_if->
cs;
1895 if (cs->debug & DEB_DLOG_HEX) {
1897 if ((skb->
len) < MAX_DLOG_SPACE / 3 - 10) {
1910 "warning Frame too big (%d)",
1918 #include <linux/pci.h>
1921 #ifdef CONFIG_HISAX_FRITZPCI
1924 #ifdef CONFIG_HISAX_DIEHLDIVA
1932 #ifdef CONFIG_HISAX_ELSA
1936 #ifdef CONFIG_HISAX_GAZEL
1942 #ifdef CONFIG_HISAX_SCT_QUADRO
1945 #ifdef CONFIG_HISAX_NICCY
1948 #ifdef CONFIG_HISAX_SEDLBAUER
1951 #if defined(CONFIG_HISAX_NETJET) || defined(CONFIG_HISAX_NETJET_U)
1954 #if defined(CONFIG_HISAX_TELESPCI) || defined(CONFIG_HISAX_SCT_QUADRO)
1957 #ifdef CONFIG_HISAX_W6692
1961 #ifdef CONFIG_HISAX_HFC_PCI