patch-2.3.15 linux/drivers/isdn/hisax/elsa.c
Next file: linux/drivers/isdn/hisax/gazel.c
Previous file: linux/drivers/isdn/hisax/config.c
Back to the patch index
Back to the overall index
- Lines: 149
- Date:
Wed Aug 25 15:18:08 1999
- Orig file:
v2.3.14/linux/drivers/isdn/hisax/elsa.c
- Orig date:
Thu Aug 12 09:42:33 1999
diff -u --recursive --new-file v2.3.14/linux/drivers/isdn/hisax/elsa.c linux/drivers/isdn/hisax/elsa.c
@@ -1,4 +1,4 @@
-/* $Id: elsa.c,v 2.17 1999/08/11 20:57:40 keil Exp $
+/* $Id: elsa.c,v 2.18 1999/08/25 16:50:54 keil Exp $
* elsa.c low level stuff for Elsa isdn cards
*
@@ -14,6 +14,9 @@
* for ELSA PCMCIA support
*
* $Log: elsa.c,v $
+ * Revision 2.18 1999/08/25 16:50:54 keil
+ * Fix bugs which cause 2.3.14 hangs (waitqueue init)
+ *
* Revision 2.17 1999/08/11 20:57:40 keil
* bugfix IPAC version 1.1
* new PCI codefix
@@ -96,7 +99,7 @@
extern const char *CardType[];
-const char *Elsa_revision = "$Revision: 2.17 $";
+const char *Elsa_revision = "$Revision: 2.18 $";
const char *Elsa_Types[] =
{"None", "PC", "PCC-8", "PCC-16", "PCF", "PCF-Pro",
"PCMCIA", "QS 1000", "QS 3000", "QS 1000 PCI", "QS 3000 PCI",
@@ -180,6 +183,7 @@
#define ELSA_IPAC_LINE_LED 0x40 /* Bit 6 Gelbe LED */
#define ELSA_IPAC_STAT_LED 0x80 /* Bit 7 Gruene LED */
+#if ARCOFI_USE
static struct arcofi_msg ARCOFI_XOP_F =
{NULL,0,2,{0xa1,0x3f,0,0,0,0,0,0,0,0}}; /* Normal OP */
static struct arcofi_msg ARCOFI_XOP_1 =
@@ -203,9 +207,8 @@
static void set_arcofi(struct IsdnCardState *cs, int bc);
-#if ARCOFI_USE
#include "elsa_ser.c"
-#endif
+#endif /* ARCOFI_USE */
static inline u_char
readreg(unsigned int ale, unsigned int adr, u_char off)
@@ -432,6 +435,7 @@
cs->hw.elsa.counter++;
}
}
+#if ARCOFI_USE
if (cs->hw.elsa.MFlag) {
val = serial_inp(cs, UART_MCR);
val ^= 0x8;
@@ -440,6 +444,7 @@
val ^= 0x8;
serial_outp(cs, UART_MCR, val);
}
+#endif
if (cs->hw.elsa.trig)
byteout(cs->hw.elsa.trig, 0x00);
writereg(cs->hw.elsa.ale, cs->hw.elsa.hscx, HSCX_MASK, 0x0);
@@ -514,7 +519,9 @@
int bytecnt = 8;
del_timer(&cs->hw.elsa.tl);
+#if ARCOFI_USE
clear_arcofi(cs);
+#endif
if (cs->hw.elsa.ctrl)
byteout(cs->hw.elsa.ctrl, 0); /* LEDs Out */
if (cs->subtyp == ELSA_QS1000PCI) {
@@ -536,7 +543,9 @@
(cs->subtyp == ELSA_PCF) ||
(cs->subtyp == ELSA_QS3000PCI)) {
bytecnt = 16;
+#if ARCOFI_USE
release_modem(cs);
+#endif
}
if (cs->hw.elsa.base)
release_region(cs->hw.elsa.base, bytecnt);
@@ -592,6 +601,8 @@
}
}
+#if ARCOFI_USE
+
static void
set_arcofi(struct IsdnCardState *cs, int bc) {
cs->dc.isac.arcofi_bc = bc;
@@ -602,7 +613,6 @@
static int
check_arcofi(struct IsdnCardState *cs)
{
-#if ARCOFI_USE
int arcofi_present = 0;
char tmp[40];
char *t;
@@ -690,9 +700,9 @@
interruptible_sleep_on(&cs->dc.isac.arcofi_wait);
return(1);
}
-#endif
return(0);
}
+#endif /* ARCOFI_USE */
static void
elsa_led_handler(struct IsdnCardState *cs)
@@ -738,8 +748,7 @@
static int
Elsa_card_msg(struct IsdnCardState *cs, int mt, void *arg)
{
- int len, ret = 0;
- u_char *msg;
+ int ret = 0;
long flags;
switch (mt) {
@@ -828,8 +837,12 @@
cs->hw.elsa.status &= ~0x0100;
}
break;
+#if ARCOFI_USE
case CARD_AUX_IND:
if (cs->hw.elsa.MFlag) {
+ int len;
+ u_char *msg;
+
if (!arg)
return(0);
msg = arg;
@@ -838,6 +851,7 @@
modem_write_cmd(cs, msg, len);
}
break;
+#endif
}
if (cs->typ == ISDN_CTYPE_ELSA) {
int pwr = bytein(cs->hw.elsa.ale);
@@ -1199,7 +1213,9 @@
request_region(cs->hw.elsa.cfg, 0x80, "elsa isdn pci");
}
}
+#if ARCOFI_USE
init_arcofi(cs);
+#endif
cs->hw.elsa.tl.function = (void *) elsa_led_handler;
cs->hw.elsa.tl.data = (long) cs;
init_timer(&cs->hw.elsa.tl);
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)