From dcec8a13bf565e47942a1751a9cec21bec5648fe Mon Sep 17 00:00:00 2001 From: Ralf Baechle Date: Thu, 7 May 1998 02:55:41 +0000 Subject: 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. --- drivers/isdn/sc/.cvsignore | 2 ++ drivers/isdn/sc/debug.c | 11 +++-------- drivers/isdn/sc/event.c | 16 +++++++++++----- drivers/isdn/sc/hardware.h | 5 +++++ drivers/isdn/sc/init.c | 4 +--- drivers/isdn/sc/interrupt.c | 2 +- drivers/isdn/sc/message.c | 5 ++--- drivers/isdn/sc/packet.c | 10 ++++++---- 8 files changed, 31 insertions(+), 24 deletions(-) create mode 100644 drivers/isdn/sc/.cvsignore (limited to 'drivers/isdn/sc') 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 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) -- cgit v1.2.3