summaryrefslogtreecommitdiffstats
path: root/drivers/isdn/sc
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>1998-05-07 02:55:41 +0000
committerRalf Baechle <ralf@linux-mips.org>1998-05-07 02:55:41 +0000
commitdcec8a13bf565e47942a1751a9cec21bec5648fe (patch)
tree548b69625b18cc2e88c3e68d0923be546c9ebb03 /drivers/isdn/sc
parent2e0f55e79c49509b7ff70ff1a10e1e9e90a3dfd4 (diff)
o Merge with Linux 2.1.99.
o Fix ancient bug in the ELF loader making ldd crash. o Fix ancient bug in the keyboard code for SGI, SNI and Jazz.
Diffstat (limited to 'drivers/isdn/sc')
-rw-r--r--drivers/isdn/sc/.cvsignore2
-rw-r--r--drivers/isdn/sc/debug.c11
-rw-r--r--drivers/isdn/sc/event.c16
-rw-r--r--drivers/isdn/sc/hardware.h5
-rw-r--r--drivers/isdn/sc/init.c4
-rw-r--r--drivers/isdn/sc/interrupt.c2
-rw-r--r--drivers/isdn/sc/message.c5
-rw-r--r--drivers/isdn/sc/packet.c10
8 files changed, 31 insertions, 24 deletions
diff --git a/drivers/isdn/sc/.cvsignore b/drivers/isdn/sc/.cvsignore
new file mode 100644
index 000000000..857dd22e9
--- /dev/null
+++ b/drivers/isdn/sc/.cvsignore
@@ -0,0 +1,2 @@
+.depend
+.*.flags
diff --git a/drivers/isdn/sc/debug.c b/drivers/isdn/sc/debug.c
index 3a814de93..c5312cd83 100644
--- a/drivers/isdn/sc/debug.c
+++ b/drivers/isdn/sc/debug.c
@@ -1,5 +1,5 @@
/*
- * $Id: debug.c,v 1.2 1996/11/20 17:49:50 fritz Exp $
+ * $Id: debug.c,v 1.3 1997/10/01 09:22:20 fritz Exp $
* Copyright (C) 1996 SpellCaster Telecommunications Inc.
*
* This program is free software; you can redistribute it and/or modify
@@ -29,13 +29,8 @@
#define NULL 0x0
-#if LINUX_VERSION_CODE < 66363 /* Linux 1.3.59 there was a change to interrupts */
- #define REQUEST_IRQ(a,b,c,d,e) request_irq(a,b,c,d)
- #define FREE_IRQ(a,b) free_irq(a)
-#else
- #define REQUEST_IRQ(a,b,c,d,e) request_irq(a,b,c,d,e)
- #define FREE_IRQ(a,b) free_irq(a,b)
-#endif
+#define REQUEST_IRQ(a,b,c,d,e) request_irq(a,b,c,d,e)
+#define FREE_IRQ(a,b) free_irq(a,b)
inline char *strcpy(char *, const char *);
diff --git a/drivers/isdn/sc/event.c b/drivers/isdn/sc/event.c
index 3452cbf36..23cd53f07 100644
--- a/drivers/isdn/sc/event.c
+++ b/drivers/isdn/sc/event.c
@@ -1,5 +1,5 @@
/*
- * $Id: event.c,v 1.3 1997/02/11 22:53:41 fritz Exp $
+ * $Id: event.c,v 1.4 1997/10/09 22:30:58 fritz Exp $
* Copyright (C) 1996 SpellCaster Telecommunications Inc.
*
* This program is free software; you can redistribute it and/or modify
@@ -62,10 +62,16 @@ int indicate_status(int card, int event,ulong Channel,char *Data)
if (Data != NULL){
pr_debug("%s: Event data: %s\n", adapter[card]->devicename,
Data);
- if (event == ISDN_STAT_ICALL)
- memcpy(&cmd.parm.setup, Data, sizeof(cmd.parm.setup));
- else
- strcpy(cmd.parm.num, Data);
+ switch (event) {
+ case ISDN_STAT_BSENT:
+ memcpy(&cmd.parm.length, Data, sizeof(cmd.parm.length));
+ break;
+ case ISDN_STAT_ICALL:
+ memcpy(&cmd.parm.setup, Data, sizeof(cmd.parm.setup));
+ break;
+ default:
+ strcpy(cmd.parm.num, Data);
+ }
}
cmd.command = event;
diff --git a/drivers/isdn/sc/hardware.h b/drivers/isdn/sc/hardware.h
index 4a7698225..b0f07ac3c 100644
--- a/drivers/isdn/sc/hardware.h
+++ b/drivers/isdn/sc/hardware.h
@@ -16,6 +16,11 @@
this, you must also change the number
of elements in io, irq, and ram to
match. Initialized in init.c */
+/*
+extern unsigned int io[];
+extern unsigned char irq[];
+extern unsigned long ram[];
+*/
#define SIGNATURE 0x87654321 /* Board reset signature */
#define SIG_OFFSET 0x1004 /* Where to find signature in shared RAM */
diff --git a/drivers/isdn/sc/init.c b/drivers/isdn/sc/init.c
index c9eb24035..d34dd03b9 100644
--- a/drivers/isdn/sc/init.c
+++ b/drivers/isdn/sc/init.c
@@ -20,7 +20,7 @@ static int sup_irq[] = { 11, 10, 9, 5, 12, 14, 7, 3, 4, 6 };
#define MAX_IRQS 10
extern void interrupt_handler(int, void *, struct pt_regs *);
-extern int sndpkt(int, int, struct sk_buff *);
+extern int sndpkt(int, int, int, struct sk_buff *);
extern int command(isdn_ctrl *);
extern int indicate_status(int, int, ulong, char*);
extern int reset(int);
@@ -38,12 +38,10 @@ int irq_supported(int irq_x)
}
#ifdef MODULE
-#if (LINUX_VERSION_CODE > 0x020111)
MODULE_PARM(io, "1-4i");
MODULE_PARM(irq, "1-4i");
MODULE_PARM(ram, "1-4i");
MODULE_PARM(do_reset, "i");
-#endif
#define init_sc init_module
#else
/*
diff --git a/drivers/isdn/sc/interrupt.c b/drivers/isdn/sc/interrupt.c
index 6b5b369e3..25964752b 100644
--- a/drivers/isdn/sc/interrupt.c
+++ b/drivers/isdn/sc/interrupt.c
@@ -1,5 +1,5 @@
/*
- * $Id: interrupt.c,v 1.3 1997/02/11 22:53:43 fritz Exp $
+ * $Id: interrupt.c,v 1.4 1998/01/31 22:10:52 keil Exp $
* Copyright (C) 1996 SpellCaster Telecommunications Inc.
*
* This program is free software; you can redistribute it and/or modify
diff --git a/drivers/isdn/sc/message.c b/drivers/isdn/sc/message.c
index e104fada6..2cbdcdae8 100644
--- a/drivers/isdn/sc/message.c
+++ b/drivers/isdn/sc/message.c
@@ -1,5 +1,5 @@
/*
- * $Id: message.c,v 1.2 1996/11/20 17:49:54 fritz Exp $
+ * $Id: message.c,v 1.3 1998/01/31 22:10:55 keil Exp $
* Copyright (C) 1996 SpellCaster Telecommunications Inc.
*
* message.c - functions for sending and receiving control messages
@@ -33,7 +33,6 @@
#include "hardware.h"
#include "message.h"
#include "card.h"
-#include <asm/io.h>
extern board *adapter[];
extern unsigned int cinst;
@@ -203,7 +202,7 @@ int sendmessage(int card,
* wait for an empty slot in the queue
*/
while (!(inb(adapter[card]->ioport[FIFO_STATUS]) & WF_NOT_FULL))
- __SLOW_DOWN_IO;
+ udelay(1);
/*
* Disable interrupts and map in shared memory
diff --git a/drivers/isdn/sc/packet.c b/drivers/isdn/sc/packet.c
index 563d1821d..d75cb04d7 100644
--- a/drivers/isdn/sc/packet.c
+++ b/drivers/isdn/sc/packet.c
@@ -1,5 +1,5 @@
/*
- * $Id: packet.c,v 1.2 1996/11/20 17:49:55 fritz Exp $
+ * $Id: packet.c,v 1.4 1998/02/12 23:08:50 keil Exp $
* Copyright (C) 1996 SpellCaster Telecommunications Inc.
*
* This program is free software; you can redistribute it and/or modify
@@ -36,7 +36,7 @@ extern board *adapter[];
extern unsigned int cinst;
extern int get_card_from_id(int);
-extern int indicate_status(int, int,ulong,char*);
+extern int indicate_status(int, int,ulong, char*);
extern void *memcpy_toshmem(int, void *, const void *, size_t);
extern void *memcpy_fromshmem(int, void *, const void *, size_t);
extern int sendmessage(int, unsigned int, unsigned int, unsigned int,
@@ -47,6 +47,7 @@ int sndpkt(int devId, int channel, struct sk_buff *data)
LLData ReqLnkWrite;
int status;
int card;
+ unsigned long len;
card = get_card_from_id(devId);
@@ -89,6 +90,7 @@ int sndpkt(int devId, int channel, struct sk_buff *data)
status = sendmessage(card, CEPID, ceReqTypeLnk, ceReqClass1, ceReqLnkWrite,
channel+1, sizeof(LLData), (unsigned int*)&ReqLnkWrite);
+ len = data->len;
if(status) {
pr_debug("%s: Failed to send packet, status = %d\n", adapter[card]->devicename, status);
return -1;
@@ -101,9 +103,9 @@ int sndpkt(int devId, int channel, struct sk_buff *data)
adapter[card]->channel[channel].next_sendbuf;
pr_debug("%s: Packet sent successfully\n", adapter[card]->devicename);
dev_kfree_skb(data);
- indicate_status(card,ISDN_STAT_BSENT,channel,NULL);
+ indicate_status(card,ISDN_STAT_BSENT,channel, (char *)&len);
}
- return data->len;
+ return len;
}
void rcvpkt(int card, RspMessage *rcvmsg)