aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/isdn/hardware/avm
diff options
context:
space:
mode:
authorJonathan Herman <hermanjl@cs.unc.edu>2013-01-17 16:15:55 -0500
committerJonathan Herman <hermanjl@cs.unc.edu>2013-01-17 16:15:55 -0500
commit8dea78da5cee153b8af9c07a2745f6c55057fe12 (patch)
treea8f4d49d63b1ecc92f2fddceba0655b2472c5bd9 /drivers/isdn/hardware/avm
parent406089d01562f1e2bf9f089fd7637009ebaad589 (diff)
Patched in Tegra support.
Diffstat (limited to 'drivers/isdn/hardware/avm')
-rw-r--r--drivers/isdn/hardware/avm/avm_cs.c135
-rw-r--r--drivers/isdn/hardware/avm/avmcard.h286
-rw-r--r--drivers/isdn/hardware/avm/b1.c192
-rw-r--r--drivers/isdn/hardware/avm/b1dma.c180
-rw-r--r--drivers/isdn/hardware/avm/b1isa.c18
-rw-r--r--drivers/isdn/hardware/avm/b1pci.c52
-rw-r--r--drivers/isdn/hardware/avm/b1pcmcia.c28
-rw-r--r--drivers/isdn/hardware/avm/c4.c353
-rw-r--r--drivers/isdn/hardware/avm/t1isa.c100
-rw-r--r--drivers/isdn/hardware/avm/t1pci.c35
10 files changed, 691 insertions, 688 deletions
diff --git a/drivers/isdn/hardware/avm/avm_cs.c b/drivers/isdn/hardware/avm/avm_cs.c
index c21353d8e91..61f516f376d 100644
--- a/drivers/isdn/hardware/avm/avm_cs.c
+++ b/drivers/isdn/hardware/avm/avm_cs.c
@@ -18,6 +18,7 @@
18#include <linux/serial.h> 18#include <linux/serial.h>
19#include <linux/major.h> 19#include <linux/major.h>
20#include <asm/io.h> 20#include <asm/io.h>
21#include <asm/system.h>
21 22
22#include <pcmcia/cistpl.h> 23#include <pcmcia/cistpl.h>
23#include <pcmcia/ciscode.h> 24#include <pcmcia/ciscode.h>
@@ -43,12 +44,12 @@ static void avmcs_detach(struct pcmcia_device *p_dev);
43 44
44static int avmcs_probe(struct pcmcia_device *p_dev) 45static int avmcs_probe(struct pcmcia_device *p_dev)
45{ 46{
46 /* General socket configuration */ 47 /* General socket configuration */
47 p_dev->config_flags |= CONF_ENABLE_IRQ | CONF_AUTO_SET_IO; 48 p_dev->config_flags |= CONF_ENABLE_IRQ | CONF_AUTO_SET_IO;
48 p_dev->config_index = 1; 49 p_dev->config_index = 1;
49 p_dev->config_regs = PRESENT_OPTION; 50 p_dev->config_regs = PRESENT_OPTION;
50 51
51 return avmcs_config(p_dev); 52 return avmcs_config(p_dev);
52} /* avmcs_attach */ 53} /* avmcs_attach */
53 54
54 55
@@ -68,75 +69,75 @@ static int avmcs_configcheck(struct pcmcia_device *p_dev, void *priv_data)
68 69
69static int avmcs_config(struct pcmcia_device *link) 70static int avmcs_config(struct pcmcia_device *link)
70{ 71{
71 int i = -1; 72 int i = -1;
72 char devname[128]; 73 char devname[128];
73 int cardtype; 74 int cardtype;
74 int (*addcard)(unsigned int port, unsigned irq); 75 int (*addcard)(unsigned int port, unsigned irq);
75 76
76 devname[0] = 0; 77 devname[0] = 0;
77 if (link->prod_id[1]) 78 if (link->prod_id[1])
78 strlcpy(devname, link->prod_id[1], sizeof(devname)); 79 strlcpy(devname, link->prod_id[1], sizeof(devname));
80
81 /*
82 * find IO port
83 */
84 if (pcmcia_loop_config(link, avmcs_configcheck, NULL))
85 return -ENODEV;
86
87 do {
88 if (!link->irq) {
89 /* undo */
90 pcmcia_disable_device(link);
91 break;
92 }
79 93
80 /* 94 /*
81 * find IO port 95 * configure the PCMCIA socket
82 */ 96 */
83 if (pcmcia_loop_config(link, avmcs_configcheck, NULL)) 97 i = pcmcia_enable_device(link);
84 return -ENODEV;
85
86 do {
87 if (!link->irq) {
88 /* undo */
89 pcmcia_disable_device(link);
90 break;
91 }
92
93 /*
94 * configure the PCMCIA socket
95 */
96 i = pcmcia_enable_device(link);
97 if (i != 0) {
98 pcmcia_disable_device(link);
99 break;
100 }
101
102 } while (0);
103
104 if (devname[0]) {
105 char *s = strrchr(devname, ' ');
106 if (!s)
107 s = devname;
108 else s++;
109 if (strcmp("M1", s) == 0) {
110 cardtype = AVM_CARDTYPE_M1;
111 } else if (strcmp("M2", s) == 0) {
112 cardtype = AVM_CARDTYPE_M2;
113 } else {
114 cardtype = AVM_CARDTYPE_B1;
115 }
116 } else
117 cardtype = AVM_CARDTYPE_B1;
118
119 /* If any step failed, release any partially configured state */
120 if (i != 0) { 98 if (i != 0) {
121 avmcs_release(link); 99 pcmcia_disable_device(link);
122 return -ENODEV; 100 break;
101 }
102
103 } while (0);
104
105 if (devname[0]) {
106 char *s = strrchr(devname, ' ');
107 if (!s)
108 s = devname;
109 else s++;
110 if (strcmp("M1", s) == 0) {
111 cardtype = AVM_CARDTYPE_M1;
112 } else if (strcmp("M2", s) == 0) {
113 cardtype = AVM_CARDTYPE_M2;
114 } else {
115 cardtype = AVM_CARDTYPE_B1;
123 } 116 }
117 } else
118 cardtype = AVM_CARDTYPE_B1;
119
120 /* If any step failed, release any partially configured state */
121 if (i != 0) {
122 avmcs_release(link);
123 return -ENODEV;
124 }
124 125
125 126
126 switch (cardtype) { 127 switch (cardtype) {
127 case AVM_CARDTYPE_M1: addcard = b1pcmcia_addcard_m1; break; 128 case AVM_CARDTYPE_M1: addcard = b1pcmcia_addcard_m1; break;
128 case AVM_CARDTYPE_M2: addcard = b1pcmcia_addcard_m2; break; 129 case AVM_CARDTYPE_M2: addcard = b1pcmcia_addcard_m2; break;
129 default: 130 default:
130 case AVM_CARDTYPE_B1: addcard = b1pcmcia_addcard_b1; break; 131 case AVM_CARDTYPE_B1: addcard = b1pcmcia_addcard_b1; break;
131 } 132 }
132 if ((i = (*addcard)(link->resource[0]->start, link->irq)) < 0) { 133 if ((i = (*addcard)(link->resource[0]->start, link->irq)) < 0) {
133 dev_err(&link->dev, 134 dev_err(&link->dev,
134 "avm_cs: failed to add AVM-Controller at i/o %#x, irq %d\n", 135 "avm_cs: failed to add AVM-Controller at i/o %#x, irq %d\n",
135 (unsigned int) link->resource[0]->start, link->irq); 136 (unsigned int) link->resource[0]->start, link->irq);
136 avmcs_release(link); 137 avmcs_release(link);
137 return -ENODEV; 138 return -ENODEV;
138 } 139 }
139 return 0; 140 return 0;
140 141
141} /* avmcs_config */ 142} /* avmcs_config */
142 143
diff --git a/drivers/isdn/hardware/avm/avmcard.h b/drivers/isdn/hardware/avm/avmcard.h
index c95712dbfa9..a70e8854461 100644
--- a/drivers/isdn/hardware/avm/avmcard.h
+++ b/drivers/isdn/hardware/avm/avmcard.h
@@ -44,16 +44,16 @@ enum avmcardtype {
44}; 44};
45 45
46typedef struct avmcard_dmabuf { 46typedef struct avmcard_dmabuf {
47 long size; 47 long size;
48 u8 *dmabuf; 48 u8 *dmabuf;
49 dma_addr_t dmaaddr; 49 dma_addr_t dmaaddr;
50} avmcard_dmabuf; 50} avmcard_dmabuf;
51 51
52typedef struct avmcard_dmainfo { 52typedef struct avmcard_dmainfo {
53 u32 recvlen; 53 u32 recvlen;
54 avmcard_dmabuf recvbuf; 54 avmcard_dmabuf recvbuf;
55 55
56 avmcard_dmabuf sendbuf; 56 avmcard_dmabuf sendbuf;
57 struct sk_buff_head send_queue; 57 struct sk_buff_head send_queue;
58 58
59 struct pci_dev *pcidev; 59 struct pci_dev *pcidev;
@@ -61,22 +61,22 @@ typedef struct avmcard_dmainfo {
61 61
62typedef struct avmctrl_info { 62typedef struct avmctrl_info {
63 char cardname[32]; 63 char cardname[32];
64 64
65 int versionlen; 65 int versionlen;
66 char versionbuf[1024]; 66 char versionbuf[1024];
67 char *version[AVM_MAXVERSION]; 67 char *version[AVM_MAXVERSION];
68 68
69 char infobuf[128]; /* for function procinfo */ 69 char infobuf[128]; /* for function procinfo */
70 70
71 struct avmcard *card; 71 struct avmcard *card;
72 struct capi_ctr capi_ctrl; 72 struct capi_ctr capi_ctrl;
73 73
74 struct list_head ncci_head; 74 struct list_head ncci_head;
75} avmctrl_info; 75} avmctrl_info;
76 76
77typedef struct avmcard { 77typedef struct avmcard {
78 char name[32]; 78 char name[32];
79 79
80 spinlock_t lock; 80 spinlock_t lock;
81 unsigned int port; 81 unsigned int port;
82 unsigned irq; 82 unsigned irq;
@@ -103,95 +103,95 @@ typedef struct avmcard {
103extern int b1_irq_table[16]; 103extern int b1_irq_table[16];
104 104
105/* 105/*
106 * LLI Messages to the ISDN-ControllerISDN Controller 106 * LLI Messages to the ISDN-ControllerISDN Controller
107 */ 107 */
108 108
109#define SEND_POLL 0x72 /* 109#define SEND_POLL 0x72 /*
110 * after load <- RECEIVE_POLL 110 * after load <- RECEIVE_POLL
111 */ 111 */
112#define SEND_INIT 0x11 /* 112#define SEND_INIT 0x11 /*
113 * first message <- RECEIVE_INIT 113 * first message <- RECEIVE_INIT
114 * int32 NumApplications int32 114 * int32 NumApplications int32
115 * NumNCCIs int32 BoardNumber 115 * NumNCCIs int32 BoardNumber
116 */ 116 */
117#define SEND_REGISTER 0x12 /* 117#define SEND_REGISTER 0x12 /*
118 * register an application int32 118 * register an application int32
119 * ApplIDId int32 NumMessages 119 * ApplIDId int32 NumMessages
120 * int32 NumB3Connections int32 120 * int32 NumB3Connections int32
121 * NumB3Blocks int32 B3Size 121 * NumB3Blocks int32 B3Size
122 * 122 *
123 * AnzB3Connection != 0 && 123 * AnzB3Connection != 0 &&
124 * AnzB3Blocks >= 1 && B3Size >= 1 124 * AnzB3Blocks >= 1 && B3Size >= 1
125 */ 125 */
126#define SEND_RELEASE 0x14 /* 126#define SEND_RELEASE 0x14 /*
127 * deregister an application int32 127 * deregister an application int32
128 * ApplID 128 * ApplID
129 */ 129 */
130#define SEND_MESSAGE 0x15 /* 130#define SEND_MESSAGE 0x15 /*
131 * send capi-message int32 length 131 * send capi-message int32 length
132 * capi-data ... 132 * capi-data ...
133 */ 133 */
134#define SEND_DATA_B3_REQ 0x13 /* 134#define SEND_DATA_B3_REQ 0x13 /*
135 * send capi-data-message int32 135 * send capi-data-message int32
136 * MsgLength capi-data ... int32 136 * MsgLength capi-data ... int32
137 * B3Length data .... 137 * B3Length data ....
138 */ 138 */
139 139
140#define SEND_CONFIG 0x21 /* 140#define SEND_CONFIG 0x21 /*
141 */ 141 */
142 142
143#define SEND_POLLACK 0x73 /* T1 Watchdog */ 143#define SEND_POLLACK 0x73 /* T1 Watchdog */
144 144
145/* 145/*
146 * LLI Messages from the ISDN-ControllerISDN Controller 146 * LLI Messages from the ISDN-ControllerISDN Controller
147 */ 147 */
148 148
149#define RECEIVE_POLL 0x32 /* 149#define RECEIVE_POLL 0x32 /*
150 * <- after SEND_POLL 150 * <- after SEND_POLL
151 */ 151 */
152#define RECEIVE_INIT 0x27 /* 152#define RECEIVE_INIT 0x27 /*
153 * <- after SEND_INIT int32 length 153 * <- after SEND_INIT int32 length
154 * byte total length b1struct board 154 * byte total length b1struct board
155 * driver revision b1struct card 155 * driver revision b1struct card
156 * type b1struct reserved b1struct 156 * type b1struct reserved b1struct
157 * serial number b1struct driver 157 * serial number b1struct driver
158 * capability b1struct d-channel 158 * capability b1struct d-channel
159 * protocol b1struct CAPI-2.0 159 * protocol b1struct CAPI-2.0
160 * profile b1struct capi version 160 * profile b1struct capi version
161 */ 161 */
162#define RECEIVE_MESSAGE 0x21 /* 162#define RECEIVE_MESSAGE 0x21 /*
163 * <- after SEND_MESSAGE int32 163 * <- after SEND_MESSAGE int32
164 * AppllID int32 Length capi-data 164 * AppllID int32 Length capi-data
165 * .... 165 * ....
166 */ 166 */
167#define RECEIVE_DATA_B3_IND 0x22 /* 167#define RECEIVE_DATA_B3_IND 0x22 /*
168 * received data int32 AppllID 168 * received data int32 AppllID
169 * int32 Length capi-data ... 169 * int32 Length capi-data ...
170 * int32 B3Length data ... 170 * int32 B3Length data ...
171 */ 171 */
172#define RECEIVE_START 0x23 /* 172#define RECEIVE_START 0x23 /*
173 * Handshake 173 * Handshake
174 */ 174 */
175#define RECEIVE_STOP 0x24 /* 175#define RECEIVE_STOP 0x24 /*
176 * Handshake 176 * Handshake
177 */ 177 */
178#define RECEIVE_NEW_NCCI 0x25 /* 178#define RECEIVE_NEW_NCCI 0x25 /*
179 * int32 AppllID int32 NCCI int32 179 * int32 AppllID int32 NCCI int32
180 * WindowSize 180 * WindowSize
181 */ 181 */
182#define RECEIVE_FREE_NCCI 0x26 /* 182#define RECEIVE_FREE_NCCI 0x26 /*
183 * int32 AppllID int32 NCCI 183 * int32 AppllID int32 NCCI
184 */ 184 */
185#define RECEIVE_RELEASE 0x26 /* 185#define RECEIVE_RELEASE 0x26 /*
186 * int32 AppllID int32 0xffffffff 186 * int32 AppllID int32 0xffffffff
187 */ 187 */
188#define RECEIVE_TASK_READY 0x31 /* 188#define RECEIVE_TASK_READY 0x31 /*
189 * int32 tasknr 189 * int32 tasknr
190 * int32 Length Taskname ... 190 * int32 Length Taskname ...
191 */ 191 */
192#define RECEIVE_DEBUGMSG 0x71 /* 192#define RECEIVE_DEBUGMSG 0x71 /*
193 * int32 Length message 193 * int32 Length message
194 * 194 *
195 */ 195 */
196#define RECEIVE_POLLDWORD 0x75 /* t1pci in dword mode */ 196#define RECEIVE_POLLDWORD 0x75 /* t1pci in dword mode */
197 197
@@ -264,7 +264,7 @@ static inline void b1_put_byte(unsigned int base, unsigned char val)
264static inline int b1_save_put_byte(unsigned int base, unsigned char val) 264static inline int b1_save_put_byte(unsigned int base, unsigned char val)
265{ 265{
266 unsigned long stop = jiffies + 2 * HZ; 266 unsigned long stop = jiffies + 2 * HZ;
267 while (!b1_tx_empty(base) && time_before(jiffies, stop)); 267 while (!b1_tx_empty(base) && time_before(jiffies,stop));
268 if (!b1_tx_empty(base)) return -1; 268 if (!b1_tx_empty(base)) return -1;
269 b1outp(base, B1_WRITE, val); 269 b1outp(base, B1_WRITE, val);
270 return 0; 270 return 0;
@@ -298,21 +298,21 @@ static inline void b1_put_slice(unsigned int base,
298} 298}
299 299
300static void b1_wr_reg(unsigned int base, 300static void b1_wr_reg(unsigned int base,
301 unsigned int reg, 301 unsigned int reg,
302 unsigned int value) 302 unsigned int value)
303{ 303{
304 b1_put_byte(base, WRITE_REGISTER); 304 b1_put_byte(base, WRITE_REGISTER);
305 b1_put_word(base, reg); 305 b1_put_word(base, reg);
306 b1_put_word(base, value); 306 b1_put_word(base, value);
307} 307}
308 308
309static inline unsigned int b1_rd_reg(unsigned int base, 309static inline unsigned int b1_rd_reg(unsigned int base,
310 unsigned int reg) 310 unsigned int reg)
311{ 311{
312 b1_put_byte(base, READ_REGISTER); 312 b1_put_byte(base, READ_REGISTER);
313 b1_put_word(base, reg); 313 b1_put_word(base, reg);
314 return b1_get_word(base); 314 return b1_get_word(base);
315 315
316} 316}
317 317
318static inline void b1_reset(unsigned int base) 318static inline void b1_reset(unsigned int base)
@@ -338,13 +338,13 @@ static inline void b1_set_test_bit(unsigned int base,
338 enum avmcardtype cardtype, 338 enum avmcardtype cardtype,
339 int onoff) 339 int onoff)
340{ 340{
341 b1_wr_reg(base, B1_STAT0(cardtype), onoff ? 0x21 : 0x20); 341 b1_wr_reg(base, B1_STAT0(cardtype), onoff ? 0x21 : 0x20);
342} 342}
343 343
344static inline int b1_get_test_bit(unsigned int base, 344static inline int b1_get_test_bit(unsigned int base,
345 enum avmcardtype cardtype) 345 enum avmcardtype cardtype)
346{ 346{
347 return (b1_rd_reg(base, B1_STAT0(cardtype)) & 0x01) != 0; 347 return (b1_rd_reg(base, B1_STAT0(cardtype)) & 0x01) != 0;
348} 348}
349 349
350/* ---------------------------------------------------------------- */ 350/* ---------------------------------------------------------------- */
@@ -391,7 +391,7 @@ static inline void t1outp(unsigned int base,
391} 391}
392 392
393static inline unsigned char t1inp(unsigned int base, 393static inline unsigned char t1inp(unsigned int base,
394 unsigned short offset) 394 unsigned short offset)
395{ 395{
396 return inb(base + offset); 396 return inb(base + offset);
397} 397}
@@ -415,42 +415,42 @@ static inline unsigned int t1_get_slice(unsigned int base,
415#endif 415#endif
416 416
417 len = i = b1_get_word(base); 417 len = i = b1_get_word(base);
418 if (t1_isfastlink(base)) { 418 if (t1_isfastlink(base)) {
419 int status; 419 int status;
420 while (i > 0) { 420 while (i > 0) {
421 status = t1_fifostatus(base) & (T1F_IREADY | T1F_IHALF); 421 status = t1_fifostatus(base) & (T1F_IREADY|T1F_IHALF);
422 if (i >= FIFO_INPBSIZE) status |= T1F_IFULL; 422 if (i >= FIFO_INPBSIZE) status |= T1F_IFULL;
423 423
424 switch (status) { 424 switch (status) {
425 case T1F_IREADY | T1F_IHALF | T1F_IFULL: 425 case T1F_IREADY|T1F_IHALF|T1F_IFULL:
426 insb(base + B1_READ, dp, FIFO_INPBSIZE); 426 insb(base+B1_READ, dp, FIFO_INPBSIZE);
427 dp += FIFO_INPBSIZE; 427 dp += FIFO_INPBSIZE;
428 i -= FIFO_INPBSIZE; 428 i -= FIFO_INPBSIZE;
429#ifdef FASTLINK_DEBUG 429#ifdef FASTLINK_DEBUG
430 wcnt += FIFO_INPBSIZE; 430 wcnt += FIFO_INPBSIZE;
431#endif 431#endif
432 break; 432 break;
433 case T1F_IREADY | T1F_IHALF: 433 case T1F_IREADY|T1F_IHALF:
434 insb(base + B1_READ, dp, i); 434 insb(base+B1_READ,dp, i);
435#ifdef FASTLINK_DEBUG 435#ifdef FASTLINK_DEBUG
436 wcnt += i; 436 wcnt += i;
437#endif 437#endif
438 dp += i; 438 dp += i;
439 i = 0; 439 i = 0;
440 break; 440 break;
441 default: 441 default:
442 *dp++ = b1_get_byte(base); 442 *dp++ = b1_get_byte(base);
443 i--; 443 i--;
444#ifdef FASTLINK_DEBUG 444#ifdef FASTLINK_DEBUG
445 bcnt++; 445 bcnt++;
446#endif 446#endif
447 break; 447 break;
448 } 448 }
449 } 449 }
450#ifdef FASTLINK_DEBUG 450#ifdef FASTLINK_DEBUG
451 if (wcnt) 451 if (wcnt)
452 printk(KERN_DEBUG "b1lli(0x%x): get_slice l=%d w=%d b=%d\n", 452 printk(KERN_DEBUG "b1lli(0x%x): get_slice l=%d w=%d b=%d\n",
453 base, len, wcnt, bcnt); 453 base, len, wcnt, bcnt);
454#endif 454#endif
455 } else { 455 } else {
456 while (i-- > 0) 456 while (i-- > 0)
@@ -464,26 +464,26 @@ static inline void t1_put_slice(unsigned int base,
464{ 464{
465 unsigned i = len; 465 unsigned i = len;
466 b1_put_word(base, i); 466 b1_put_word(base, i);
467 if (t1_isfastlink(base)) { 467 if (t1_isfastlink(base)) {
468 int status; 468 int status;
469 while (i > 0) { 469 while (i > 0) {
470 status = t1_fifostatus(base) & (T1F_OREADY | T1F_OHALF); 470 status = t1_fifostatus(base) & (T1F_OREADY|T1F_OHALF);
471 if (i >= FIFO_OUTBSIZE) status |= T1F_OEMPTY; 471 if (i >= FIFO_OUTBSIZE) status |= T1F_OEMPTY;
472 switch (status) { 472 switch (status) {
473 case T1F_OREADY | T1F_OHALF | T1F_OEMPTY: 473 case T1F_OREADY|T1F_OHALF|T1F_OEMPTY:
474 outsb(base + B1_WRITE, dp, FIFO_OUTBSIZE); 474 outsb(base+B1_WRITE, dp, FIFO_OUTBSIZE);
475 dp += FIFO_OUTBSIZE; 475 dp += FIFO_OUTBSIZE;
476 i -= FIFO_OUTBSIZE; 476 i -= FIFO_OUTBSIZE;
477 break; 477 break;
478 case T1F_OREADY | T1F_OHALF: 478 case T1F_OREADY|T1F_OHALF:
479 outsb(base + B1_WRITE, dp, i); 479 outsb(base+B1_WRITE, dp, i);
480 dp += i; 480 dp += i;
481 i = 0; 481 i = 0;
482 break; 482 break;
483 default: 483 default:
484 b1_put_byte(base, *dp++); 484 b1_put_byte(base, *dp++);
485 i--; 485 i--;
486 break; 486 break;
487 } 487 }
488 } 488 }
489 } else { 489 } else {
@@ -494,18 +494,18 @@ static inline void t1_put_slice(unsigned int base,
494 494
495static inline void t1_disable_irq(unsigned int base) 495static inline void t1_disable_irq(unsigned int base)
496{ 496{
497 t1outp(base, T1_IRQMASTER, 0x00); 497 t1outp(base, T1_IRQMASTER, 0x00);
498} 498}
499 499
500static inline void t1_reset(unsigned int base) 500static inline void t1_reset(unsigned int base)
501{ 501{
502 /* reset T1 Controller */ 502 /* reset T1 Controller */
503 b1_reset(base); 503 b1_reset(base);
504 /* disable irq on HEMA */ 504 /* disable irq on HEMA */
505 t1outp(base, B1_INSTAT, 0x00); 505 t1outp(base, B1_INSTAT, 0x00);
506 t1outp(base, B1_OUTSTAT, 0x00); 506 t1outp(base, B1_OUTSTAT, 0x00);
507 t1outp(base, T1_IRQMASTER, 0x00); 507 t1outp(base, T1_IRQMASTER, 0x00);
508 /* reset HEMA board configuration */ 508 /* reset HEMA board configuration */
509 t1outp(base, T1_RESETBOARD, 0xf); 509 t1outp(base, T1_RESETBOARD, 0xf);
510} 510}
511 511
@@ -513,29 +513,29 @@ static inline void b1_setinterrupt(unsigned int base, unsigned irq,
513 enum avmcardtype cardtype) 513 enum avmcardtype cardtype)
514{ 514{
515 switch (cardtype) { 515 switch (cardtype) {
516 case avm_t1isa: 516 case avm_t1isa:
517 t1outp(base, B1_INSTAT, 0x00); 517 t1outp(base, B1_INSTAT, 0x00);
518 t1outp(base, B1_INSTAT, 0x02); 518 t1outp(base, B1_INSTAT, 0x02);
519 t1outp(base, T1_IRQMASTER, 0x08); 519 t1outp(base, T1_IRQMASTER, 0x08);
520 break; 520 break;
521 case avm_b1isa: 521 case avm_b1isa:
522 b1outp(base, B1_INSTAT, 0x00); 522 b1outp(base, B1_INSTAT, 0x00);
523 b1outp(base, B1_RESET, b1_irq_table[irq]); 523 b1outp(base, B1_RESET, b1_irq_table[irq]);
524 b1outp(base, B1_INSTAT, 0x02); 524 b1outp(base, B1_INSTAT, 0x02);
525 break; 525 break;
526 default: 526 default:
527 case avm_m1: 527 case avm_m1:
528 case avm_m2: 528 case avm_m2:
529 case avm_b1pci: 529 case avm_b1pci:
530 b1outp(base, B1_INSTAT, 0x00); 530 b1outp(base, B1_INSTAT, 0x00);
531 b1outp(base, B1_RESET, 0xf0); 531 b1outp(base, B1_RESET, 0xf0);
532 b1outp(base, B1_INSTAT, 0x02); 532 b1outp(base, B1_INSTAT, 0x02);
533 break; 533 break;
534 case avm_c4: 534 case avm_c4:
535 case avm_t1pci: 535 case avm_t1pci:
536 b1outp(base, B1_RESET, 0xf0); 536 b1outp(base, B1_RESET, 0xf0);
537 break; 537 break;
538 } 538 }
539} 539}
540 540
541/* b1.c */ 541/* b1.c */
@@ -543,14 +543,14 @@ avmcard *b1_alloc_card(int nr_controllers);
543void b1_free_card(avmcard *card); 543void b1_free_card(avmcard *card);
544int b1_detect(unsigned int base, enum avmcardtype cardtype); 544int b1_detect(unsigned int base, enum avmcardtype cardtype);
545void b1_getrevision(avmcard *card); 545void b1_getrevision(avmcard *card);
546int b1_load_t4file(avmcard *card, capiloaddatapart *t4file); 546int b1_load_t4file(avmcard *card, capiloaddatapart * t4file);
547int b1_load_config(avmcard *card, capiloaddatapart *config); 547int b1_load_config(avmcard *card, capiloaddatapart * config);
548int b1_loaded(avmcard *card); 548int b1_loaded(avmcard *card);
549 549
550int b1_load_firmware(struct capi_ctr *ctrl, capiloaddata *data); 550int b1_load_firmware(struct capi_ctr *ctrl, capiloaddata *data);
551void b1_reset_ctr(struct capi_ctr *ctrl); 551void b1_reset_ctr(struct capi_ctr *ctrl);
552void b1_register_appl(struct capi_ctr *ctrl, u16 appl, 552void b1_register_appl(struct capi_ctr *ctrl, u16 appl,
553 capi_register_params *rp); 553 capi_register_params *rp);
554void b1_release_appl(struct capi_ctr *ctrl, u16 appl); 554void b1_release_appl(struct capi_ctr *ctrl, u16 appl);
555u16 b1_send_message(struct capi_ctr *ctrl, struct sk_buff *skb); 555u16 b1_send_message(struct capi_ctr *ctrl, struct sk_buff *skb);
556void b1_parse_version(avmctrl_info *card); 556void b1_parse_version(avmctrl_info *card);
@@ -572,8 +572,8 @@ int b1dma_load_firmware(struct capi_ctr *ctrl, capiloaddata *data);
572void b1dma_reset_ctr(struct capi_ctr *ctrl); 572void b1dma_reset_ctr(struct capi_ctr *ctrl);
573void b1dma_remove_ctr(struct capi_ctr *ctrl); 573void b1dma_remove_ctr(struct capi_ctr *ctrl);
574void b1dma_register_appl(struct capi_ctr *ctrl, 574void b1dma_register_appl(struct capi_ctr *ctrl,
575 u16 appl, 575 u16 appl,
576 capi_register_params *rp); 576 capi_register_params *rp);
577void b1dma_release_appl(struct capi_ctr *ctrl, u16 appl); 577void b1dma_release_appl(struct capi_ctr *ctrl, u16 appl);
578u16 b1dma_send_message(struct capi_ctr *ctrl, struct sk_buff *skb); 578u16 b1dma_send_message(struct capi_ctr *ctrl, struct sk_buff *skb);
579extern const struct file_operations b1dmactl_proc_fops; 579extern const struct file_operations b1dmactl_proc_fops;
diff --git a/drivers/isdn/hardware/avm/b1.c b/drivers/isdn/hardware/avm/b1.c
index 821f7ac33b3..2a57da590d7 100644
--- a/drivers/isdn/hardware/avm/b1.c
+++ b/drivers/isdn/hardware/avm/b1.c
@@ -1,7 +1,7 @@
1/* $Id: b1.c,v 1.1.2.2 2004/01/16 21:09:27 keil Exp $ 1/* $Id: b1.c,v 1.1.2.2 2004/01/16 21:09:27 keil Exp $
2 * 2 *
3 * Common module for AVM B1 cards. 3 * Common module for AVM B1 cards.
4 * 4 *
5 * Copyright 1999 by Carsten Paeth <calle@calle.de> 5 * Copyright 1999 by Carsten Paeth <calle@calle.de>
6 * 6 *
7 * This software may be used and distributed according to the terms 7 * This software may be used and distributed according to the terms
@@ -60,7 +60,7 @@ int b1_irq_table[16] =
60 112, /* irq 15 */ 60 112, /* irq 15 */
61}; 61};
62 62
63/* ------------------------------------------------------------- */ 63/* ------------------------------------------------------------- */
64 64
65avmcard *b1_alloc_card(int nr_controllers) 65avmcard *b1_alloc_card(int nr_controllers)
66{ 66{
@@ -104,13 +104,13 @@ int b1_detect(unsigned int base, enum avmcardtype cardtype)
104 int onoff, i; 104 int onoff, i;
105 105
106 /* 106 /*
107 * Statusregister 0000 00xx 107 * Statusregister 0000 00xx
108 */ 108 */
109 if ((inb(base + B1_INSTAT) & 0xfc) 109 if ((inb(base + B1_INSTAT) & 0xfc)
110 || (inb(base + B1_OUTSTAT) & 0xfc)) 110 || (inb(base + B1_OUTSTAT) & 0xfc))
111 return 1; 111 return 1;
112 /* 112 /*
113 * Statusregister 0000 001x 113 * Statusregister 0000 001x
114 */ 114 */
115 b1outp(base, B1_INSTAT, 0x2); /* enable irq */ 115 b1outp(base, B1_INSTAT, 0x2); /* enable irq */
116 /* b1outp(base, B1_OUTSTAT, 0x2); */ 116 /* b1outp(base, B1_OUTSTAT, 0x2); */
@@ -118,38 +118,38 @@ int b1_detect(unsigned int base, enum avmcardtype cardtype)
118 /* || (inb(base + B1_OUTSTAT) & 0xfe) != 0x2 */) 118 /* || (inb(base + B1_OUTSTAT) & 0xfe) != 0x2 */)
119 return 2; 119 return 2;
120 /* 120 /*
121 * Statusregister 0000 000x 121 * Statusregister 0000 000x
122 */ 122 */
123 b1outp(base, B1_INSTAT, 0x0); /* disable irq */ 123 b1outp(base, B1_INSTAT, 0x0); /* disable irq */
124 b1outp(base, B1_OUTSTAT, 0x0); 124 b1outp(base, B1_OUTSTAT, 0x0);
125 if ((inb(base + B1_INSTAT) & 0xfe) 125 if ((inb(base + B1_INSTAT) & 0xfe)
126 || (inb(base + B1_OUTSTAT) & 0xfe)) 126 || (inb(base + B1_OUTSTAT) & 0xfe))
127 return 3; 127 return 3;
128 128
129 for (onoff = !0, i = 0; i < 10; i++) { 129 for (onoff = !0, i= 0; i < 10 ; i++) {
130 b1_set_test_bit(base, cardtype, onoff); 130 b1_set_test_bit(base, cardtype, onoff);
131 if (b1_get_test_bit(base, cardtype) != onoff) 131 if (b1_get_test_bit(base, cardtype) != onoff)
132 return 4; 132 return 4;
133 onoff = !onoff; 133 onoff = !onoff;
134 } 134 }
135 135
136 if (cardtype == avm_m1) 136 if (cardtype == avm_m1)
137 return 0; 137 return 0;
138 138
139 if ((b1_rd_reg(base, B1_STAT1(cardtype)) & 0x0f) != 0x01) 139 if ((b1_rd_reg(base, B1_STAT1(cardtype)) & 0x0f) != 0x01)
140 return 5; 140 return 5;
141 141
142 return 0; 142 return 0;
143} 143}
144 144
145void b1_getrevision(avmcard *card) 145void b1_getrevision(avmcard *card)
146{ 146{
147 card->class = inb(card->port + B1_ANALYSE); 147 card->class = inb(card->port + B1_ANALYSE);
148 card->revision = inb(card->port + B1_REVISION); 148 card->revision = inb(card->port + B1_REVISION);
149} 149}
150 150
151#define FWBUF_SIZE 256 151#define FWBUF_SIZE 256
152int b1_load_t4file(avmcard *card, capiloaddatapart *t4file) 152int b1_load_t4file(avmcard *card, capiloaddatapart * t4file)
153{ 153{
154 unsigned char buf[FWBUF_SIZE]; 154 unsigned char buf[FWBUF_SIZE];
155 unsigned char *dp; 155 unsigned char *dp;
@@ -168,7 +168,7 @@ int b1_load_t4file(avmcard *card, capiloaddatapart *t4file)
168 for (i = 0; i < FWBUF_SIZE; i++) 168 for (i = 0; i < FWBUF_SIZE; i++)
169 if (b1_save_put_byte(base, buf[i]) < 0) { 169 if (b1_save_put_byte(base, buf[i]) < 0) {
170 printk(KERN_ERR "%s: corrupted firmware file ?\n", 170 printk(KERN_ERR "%s: corrupted firmware file ?\n",
171 card->name); 171 card->name);
172 return -EIO; 172 return -EIO;
173 } 173 }
174 left -= FWBUF_SIZE; 174 left -= FWBUF_SIZE;
@@ -184,14 +184,14 @@ int b1_load_t4file(avmcard *card, capiloaddatapart *t4file)
184 for (i = 0; i < left; i++) 184 for (i = 0; i < left; i++)
185 if (b1_save_put_byte(base, buf[i]) < 0) { 185 if (b1_save_put_byte(base, buf[i]) < 0) {
186 printk(KERN_ERR "%s: corrupted firmware file ?\n", 186 printk(KERN_ERR "%s: corrupted firmware file ?\n",
187 card->name); 187 card->name);
188 return -EIO; 188 return -EIO;
189 } 189 }
190 } 190 }
191 return 0; 191 return 0;
192} 192}
193 193
194int b1_load_config(avmcard *card, capiloaddatapart *config) 194int b1_load_config(avmcard *card, capiloaddatapart * config)
195{ 195{
196 unsigned char buf[FWBUF_SIZE]; 196 unsigned char buf[FWBUF_SIZE];
197 unsigned char *dp; 197 unsigned char *dp;
@@ -202,9 +202,9 @@ int b1_load_config(avmcard *card, capiloaddatapart *config)
202 left = config->len; 202 left = config->len;
203 if (left) { 203 if (left) {
204 b1_put_byte(base, SEND_CONFIG); 204 b1_put_byte(base, SEND_CONFIG);
205 b1_put_word(base, 1); 205 b1_put_word(base, 1);
206 b1_put_byte(base, SEND_CONFIG); 206 b1_put_byte(base, SEND_CONFIG);
207 b1_put_word(base, left); 207 b1_put_word(base, left);
208 } 208 }
209 while (left > FWBUF_SIZE) { 209 while (left > FWBUF_SIZE) {
210 if (config->user) { 210 if (config->user) {
@@ -215,7 +215,7 @@ int b1_load_config(avmcard *card, capiloaddatapart *config)
215 } 215 }
216 for (i = 0; i < FWBUF_SIZE; ) { 216 for (i = 0; i < FWBUF_SIZE; ) {
217 b1_put_byte(base, SEND_CONFIG); 217 b1_put_byte(base, SEND_CONFIG);
218 for (j = 0; j < 4; j++) { 218 for (j=0; j < 4; j++) {
219 b1_put_byte(base, buf[i++]); 219 b1_put_byte(base, buf[i++]);
220 } 220 }
221 } 221 }
@@ -231,7 +231,7 @@ int b1_load_config(avmcard *card, capiloaddatapart *config)
231 } 231 }
232 for (i = 0; i < left; ) { 232 for (i = 0; i < left; ) {
233 b1_put_byte(base, SEND_CONFIG); 233 b1_put_byte(base, SEND_CONFIG);
234 for (j = 0; j < 4; j++) { 234 for (j=0; j < 4; j++) {
235 if (i < left) 235 if (i < left)
236 b1_put_byte(base, buf[i++]); 236 b1_put_byte(base, buf[i++]);
237 else 237 else
@@ -255,7 +255,7 @@ int b1_loaded(avmcard *card)
255 } 255 }
256 if (!b1_tx_empty(base)) { 256 if (!b1_tx_empty(base)) {
257 printk(KERN_ERR "%s: b1_loaded: tx err, corrupted t4 file ?\n", 257 printk(KERN_ERR "%s: b1_loaded: tx err, corrupted t4 file ?\n",
258 card->name); 258 card->name);
259 return 0; 259 return 0;
260 } 260 }
261 b1_put_byte(base, SEND_POLL); 261 b1_put_byte(base, SEND_POLL);
@@ -265,7 +265,7 @@ int b1_loaded(avmcard *card)
265 return 1; 265 return 1;
266 } 266 }
267 printk(KERN_ERR "%s: b1_loaded: got 0x%x, firmware not running\n", 267 printk(KERN_ERR "%s: b1_loaded: got 0x%x, firmware not running\n",
268 card->name, ans); 268 card->name, ans);
269 return 0; 269 return 0;
270 } 270 }
271 } 271 }
@@ -288,7 +288,7 @@ int b1_load_firmware(struct capi_ctr *ctrl, capiloaddata *data)
288 if ((retval = b1_load_t4file(card, &data->firmware))) { 288 if ((retval = b1_load_t4file(card, &data->firmware))) {
289 b1_reset(port); 289 b1_reset(port);
290 printk(KERN_ERR "%s: failed to load t4file!!\n", 290 printk(KERN_ERR "%s: failed to load t4file!!\n",
291 card->name); 291 card->name);
292 return retval; 292 return retval;
293 } 293 }
294 294
@@ -298,7 +298,7 @@ int b1_load_firmware(struct capi_ctr *ctrl, capiloaddata *data)
298 if ((retval = b1_load_config(card, &data->configuration))) { 298 if ((retval = b1_load_config(card, &data->configuration))) {
299 b1_reset(port); 299 b1_reset(port);
300 printk(KERN_ERR "%s: failed to load config!!\n", 300 printk(KERN_ERR "%s: failed to load config!!\n",
301 card->name); 301 card->name);
302 return retval; 302 return retval;
303 } 303 }
304 } 304 }
@@ -312,7 +312,7 @@ int b1_load_firmware(struct capi_ctr *ctrl, capiloaddata *data)
312 b1_setinterrupt(port, card->irq, card->cardtype); 312 b1_setinterrupt(port, card->irq, card->cardtype);
313 b1_put_byte(port, SEND_INIT); 313 b1_put_byte(port, SEND_INIT);
314 b1_put_word(port, CAPI_MAXAPPL); 314 b1_put_word(port, CAPI_MAXAPPL);
315 b1_put_word(port, AVM_NCCI_PER_CHANNEL * 2); 315 b1_put_word(port, AVM_NCCI_PER_CHANNEL*2);
316 b1_put_word(port, ctrl->cnr - 1); 316 b1_put_word(port, ctrl->cnr - 1);
317 spin_unlock_irqrestore(&card->lock, flags); 317 spin_unlock_irqrestore(&card->lock, flags);
318 318
@@ -337,8 +337,8 @@ void b1_reset_ctr(struct capi_ctr *ctrl)
337} 337}
338 338
339void b1_register_appl(struct capi_ctr *ctrl, 339void b1_register_appl(struct capi_ctr *ctrl,
340 u16 appl, 340 u16 appl,
341 capi_register_params *rp) 341 capi_register_params *rp)
342{ 342{
343 avmctrl_info *cinfo = (avmctrl_info *)(ctrl->driverdata); 343 avmctrl_info *cinfo = (avmctrl_info *)(ctrl->driverdata);
344 avmcard *card = cinfo->card; 344 avmcard *card = cinfo->card;
@@ -353,7 +353,7 @@ void b1_register_appl(struct capi_ctr *ctrl,
353 spin_lock_irqsave(&card->lock, flags); 353 spin_lock_irqsave(&card->lock, flags);
354 b1_put_byte(port, SEND_REGISTER); 354 b1_put_byte(port, SEND_REGISTER);
355 b1_put_word(port, appl); 355 b1_put_word(port, appl);
356 b1_put_word(port, 1024 * (nconn + 1)); 356 b1_put_word(port, 1024 * (nconn+1));
357 b1_put_word(port, nconn); 357 b1_put_word(port, nconn);
358 b1_put_word(port, rp->datablkcnt); 358 b1_put_word(port, rp->datablkcnt);
359 b1_put_word(port, rp->datablklen); 359 b1_put_word(port, rp->datablklen);
@@ -430,7 +430,7 @@ void b1_parse_version(avmctrl_info *cinfo)
430 cinfo->version[j] = &cinfo->versionbuf[i + 1]; 430 cinfo->version[j] = &cinfo->versionbuf[i + 1];
431 431
432 strlcpy(ctrl->serial, cinfo->version[VER_SERIAL], sizeof(ctrl->serial)); 432 strlcpy(ctrl->serial, cinfo->version[VER_SERIAL], sizeof(ctrl->serial));
433 memcpy(&ctrl->profile, cinfo->version[VER_PROFILE], sizeof(capi_profile)); 433 memcpy(&ctrl->profile, cinfo->version[VER_PROFILE],sizeof(capi_profile));
434 strlcpy(ctrl->manu, "AVM GmbH", sizeof(ctrl->manu)); 434 strlcpy(ctrl->manu, "AVM GmbH", sizeof(ctrl->manu));
435 dversion = cinfo->version[VER_DRIVER]; 435 dversion = cinfo->version[VER_DRIVER];
436 ctrl->version.majorversion = 2; 436 ctrl->version.majorversion = 2;
@@ -439,49 +439,49 @@ void b1_parse_version(avmctrl_info *cinfo)
439 ctrl->version.majormanuversion |= ((dversion[2] - '0') & 0xf); 439 ctrl->version.majormanuversion |= ((dversion[2] - '0') & 0xf);
440 ctrl->version.minormanuversion = (dversion[3] - '0') << 4; 440 ctrl->version.minormanuversion = (dversion[3] - '0') << 4;
441 ctrl->version.minormanuversion |= 441 ctrl->version.minormanuversion |=
442 (dversion[5] - '0') * 10 + ((dversion[6] - '0') & 0xf); 442 (dversion[5] - '0') * 10 + ((dversion[6] - '0') & 0xf);
443 443
444 profp = &ctrl->profile; 444 profp = &ctrl->profile;
445 445
446 flag = ((u8 *)(profp->manu))[1]; 446 flag = ((u8 *)(profp->manu))[1];
447 switch (flag) { 447 switch (flag) {
448 case 0: if (cinfo->version[VER_CARDTYPE]) 448 case 0: if (cinfo->version[VER_CARDTYPE])
449 strcpy(cinfo->cardname, cinfo->version[VER_CARDTYPE]); 449 strcpy(cinfo->cardname, cinfo->version[VER_CARDTYPE]);
450 else strcpy(cinfo->cardname, "B1"); 450 else strcpy(cinfo->cardname, "B1");
451 break; 451 break;
452 case 3: strcpy(cinfo->cardname, "PCMCIA B"); break; 452 case 3: strcpy(cinfo->cardname,"PCMCIA B"); break;
453 case 4: strcpy(cinfo->cardname, "PCMCIA M1"); break; 453 case 4: strcpy(cinfo->cardname,"PCMCIA M1"); break;
454 case 5: strcpy(cinfo->cardname, "PCMCIA M2"); break; 454 case 5: strcpy(cinfo->cardname,"PCMCIA M2"); break;
455 case 6: strcpy(cinfo->cardname, "B1 V3.0"); break; 455 case 6: strcpy(cinfo->cardname,"B1 V3.0"); break;
456 case 7: strcpy(cinfo->cardname, "B1 PCI"); break; 456 case 7: strcpy(cinfo->cardname,"B1 PCI"); break;
457 default: sprintf(cinfo->cardname, "AVM?%u", (unsigned int)flag); break; 457 default: sprintf(cinfo->cardname, "AVM?%u", (unsigned int)flag); break;
458 } 458 }
459 printk(KERN_NOTICE "%s: card %d \"%s\" ready.\n", 459 printk(KERN_NOTICE "%s: card %d \"%s\" ready.\n",
460 card->name, ctrl->cnr, cinfo->cardname); 460 card->name, ctrl->cnr, cinfo->cardname);
461 461
462 flag = ((u8 *)(profp->manu))[3]; 462 flag = ((u8 *)(profp->manu))[3];
463 if (flag) 463 if (flag)
464 printk(KERN_NOTICE "%s: card %d Protocol:%s%s%s%s%s%s%s\n", 464 printk(KERN_NOTICE "%s: card %d Protocol:%s%s%s%s%s%s%s\n",
465 card->name, 465 card->name,
466 ctrl->cnr, 466 ctrl->cnr,
467 (flag & 0x01) ? " DSS1" : "", 467 (flag & 0x01) ? " DSS1" : "",
468 (flag & 0x02) ? " CT1" : "", 468 (flag & 0x02) ? " CT1" : "",
469 (flag & 0x04) ? " VN3" : "", 469 (flag & 0x04) ? " VN3" : "",
470 (flag & 0x08) ? " NI1" : "", 470 (flag & 0x08) ? " NI1" : "",
471 (flag & 0x10) ? " AUSTEL" : "", 471 (flag & 0x10) ? " AUSTEL" : "",
472 (flag & 0x20) ? " ESS" : "", 472 (flag & 0x20) ? " ESS" : "",
473 (flag & 0x40) ? " 1TR6" : "" 473 (flag & 0x40) ? " 1TR6" : ""
474 ); 474 );
475 475
476 flag = ((u8 *)(profp->manu))[5]; 476 flag = ((u8 *)(profp->manu))[5];
477 if (flag) 477 if (flag)
478 printk(KERN_NOTICE "%s: card %d Linetype:%s%s%s%s\n", 478 printk(KERN_NOTICE "%s: card %d Linetype:%s%s%s%s\n",
479 card->name, 479 card->name,
480 ctrl->cnr, 480 ctrl->cnr,
481 (flag & 0x01) ? " point to point" : "", 481 (flag & 0x01) ? " point to point" : "",
482 (flag & 0x02) ? " point to multipoint" : "", 482 (flag & 0x02) ? " point to multipoint" : "",
483 (flag & 0x08) ? " leased line without D-channel" : "", 483 (flag & 0x08) ? " leased line without D-channel" : "",
484 (flag & 0x04) ? " leased line with D-channel" : "" 484 (flag & 0x04) ? " leased line with D-channel" : ""
485 ); 485 );
486} 486}
487 487
@@ -521,13 +521,13 @@ irqreturn_t b1_interrupt(int interrupt, void *devptr)
521 spin_unlock_irqrestore(&card->lock, flags); 521 spin_unlock_irqrestore(&card->lock, flags);
522 522
523 if (MsgLen < 30) { /* not CAPI 64Bit */ 523 if (MsgLen < 30) { /* not CAPI 64Bit */
524 memset(card->msgbuf + MsgLen, 0, 30-MsgLen); 524 memset(card->msgbuf+MsgLen, 0, 30-MsgLen);
525 MsgLen = 30; 525 MsgLen = 30;
526 CAPIMSG_SETLEN(card->msgbuf, 30); 526 CAPIMSG_SETLEN(card->msgbuf, 30);
527 } 527 }
528 if (!(skb = alloc_skb(DataB3Len + MsgLen, GFP_ATOMIC))) { 528 if (!(skb = alloc_skb(DataB3Len + MsgLen, GFP_ATOMIC))) {
529 printk(KERN_ERR "%s: incoming packet dropped\n", 529 printk(KERN_ERR "%s: incoming packet dropped\n",
530 card->name); 530 card->name);
531 } else { 531 } else {
532 memcpy(skb_put(skb, MsgLen), card->msgbuf, MsgLen); 532 memcpy(skb_put(skb, MsgLen), card->msgbuf, MsgLen);
533 memcpy(skb_put(skb, DataB3Len), card->databuf, DataB3Len); 533 memcpy(skb_put(skb, DataB3Len), card->databuf, DataB3Len);
@@ -541,7 +541,7 @@ irqreturn_t b1_interrupt(int interrupt, void *devptr)
541 MsgLen = b1_get_slice(card->port, card->msgbuf); 541 MsgLen = b1_get_slice(card->port, card->msgbuf);
542 if (!(skb = alloc_skb(MsgLen, GFP_ATOMIC))) { 542 if (!(skb = alloc_skb(MsgLen, GFP_ATOMIC))) {
543 printk(KERN_ERR "%s: incoming packet dropped\n", 543 printk(KERN_ERR "%s: incoming packet dropped\n",
544 card->name); 544 card->name);
545 spin_unlock_irqrestore(&card->lock, flags); 545 spin_unlock_irqrestore(&card->lock, flags);
546 } else { 546 } else {
547 memcpy(skb_put(skb, MsgLen), card->msgbuf, MsgLen); 547 memcpy(skb_put(skb, MsgLen), card->msgbuf, MsgLen);
@@ -573,7 +573,7 @@ irqreturn_t b1_interrupt(int interrupt, void *devptr)
573 break; 573 break;
574 574
575 case RECEIVE_START: 575 case RECEIVE_START:
576 /* b1_put_byte(card->port, SEND_POLLACK); */ 576 /* b1_put_byte(card->port, SEND_POLLACK); */
577 spin_unlock_irqrestore(&card->lock, flags); 577 spin_unlock_irqrestore(&card->lock, flags);
578 capi_ctr_resume_output(ctrl); 578 capi_ctr_resume_output(ctrl);
579 break; 579 break;
@@ -600,24 +600,24 @@ irqreturn_t b1_interrupt(int interrupt, void *devptr)
600 MsgLen = b1_get_slice(card->port, card->msgbuf); 600 MsgLen = b1_get_slice(card->port, card->msgbuf);
601 spin_unlock_irqrestore(&card->lock, flags); 601 spin_unlock_irqrestore(&card->lock, flags);
602 card->msgbuf[MsgLen] = 0; 602 card->msgbuf[MsgLen] = 0;
603 while (MsgLen > 0 603 while ( MsgLen > 0
604 && (card->msgbuf[MsgLen - 1] == '\n' 604 && ( card->msgbuf[MsgLen-1] == '\n'
605 || card->msgbuf[MsgLen - 1] == '\r')) { 605 || card->msgbuf[MsgLen-1] == '\r')) {
606 card->msgbuf[MsgLen - 1] = 0; 606 card->msgbuf[MsgLen-1] = 0;
607 MsgLen--; 607 MsgLen--;
608 } 608 }
609 printk(KERN_INFO "%s: task %d \"%s\" ready.\n", 609 printk(KERN_INFO "%s: task %d \"%s\" ready.\n",
610 card->name, ApplId, card->msgbuf); 610 card->name, ApplId, card->msgbuf);
611 break; 611 break;
612 612
613 case RECEIVE_DEBUGMSG: 613 case RECEIVE_DEBUGMSG:
614 MsgLen = b1_get_slice(card->port, card->msgbuf); 614 MsgLen = b1_get_slice(card->port, card->msgbuf);
615 spin_unlock_irqrestore(&card->lock, flags); 615 spin_unlock_irqrestore(&card->lock, flags);
616 card->msgbuf[MsgLen] = 0; 616 card->msgbuf[MsgLen] = 0;
617 while (MsgLen > 0 617 while ( MsgLen > 0
618 && (card->msgbuf[MsgLen - 1] == '\n' 618 && ( card->msgbuf[MsgLen-1] == '\n'
619 || card->msgbuf[MsgLen - 1] == '\r')) { 619 || card->msgbuf[MsgLen-1] == '\r')) {
620 card->msgbuf[MsgLen - 1] = 0; 620 card->msgbuf[MsgLen-1] = 0;
621 MsgLen--; 621 MsgLen--;
622 } 622 }
623 printk(KERN_INFO "%s: DEBUG: %s\n", card->name, card->msgbuf); 623 printk(KERN_INFO "%s: DEBUG: %s\n", card->name, card->msgbuf);
@@ -630,7 +630,7 @@ irqreturn_t b1_interrupt(int interrupt, void *devptr)
630 default: 630 default:
631 spin_unlock_irqrestore(&card->lock, flags); 631 spin_unlock_irqrestore(&card->lock, flags);
632 printk(KERN_ERR "%s: b1_interrupt: 0x%x ???\n", 632 printk(KERN_ERR "%s: b1_interrupt: 0x%x ???\n",
633 card->name, b1cmd); 633 card->name, b1cmd);
634 return IRQ_HANDLED; 634 return IRQ_HANDLED;
635 } 635 }
636 return IRQ_HANDLED; 636 return IRQ_HANDLED;
@@ -671,29 +671,29 @@ static int b1ctl_proc_show(struct seq_file *m, void *v)
671 seq_printf(m, "%-16s %s\n", "ver_serial", s); 671 seq_printf(m, "%-16s %s\n", "ver_serial", s);
672 672
673 if (card->cardtype != avm_m1) { 673 if (card->cardtype != avm_m1) {
674 flag = ((u8 *)(ctrl->profile.manu))[3]; 674 flag = ((u8 *)(ctrl->profile.manu))[3];
675 if (flag) 675 if (flag)
676 seq_printf(m, "%-16s%s%s%s%s%s%s%s\n", 676 seq_printf(m, "%-16s%s%s%s%s%s%s%s\n",
677 "protocol", 677 "protocol",
678 (flag & 0x01) ? " DSS1" : "", 678 (flag & 0x01) ? " DSS1" : "",
679 (flag & 0x02) ? " CT1" : "", 679 (flag & 0x02) ? " CT1" : "",
680 (flag & 0x04) ? " VN3" : "", 680 (flag & 0x04) ? " VN3" : "",
681 (flag & 0x08) ? " NI1" : "", 681 (flag & 0x08) ? " NI1" : "",
682 (flag & 0x10) ? " AUSTEL" : "", 682 (flag & 0x10) ? " AUSTEL" : "",
683 (flag & 0x20) ? " ESS" : "", 683 (flag & 0x20) ? " ESS" : "",
684 (flag & 0x40) ? " 1TR6" : "" 684 (flag & 0x40) ? " 1TR6" : ""
685 ); 685 );
686 } 686 }
687 if (card->cardtype != avm_m1) { 687 if (card->cardtype != avm_m1) {
688 flag = ((u8 *)(ctrl->profile.manu))[5]; 688 flag = ((u8 *)(ctrl->profile.manu))[5];
689 if (flag) 689 if (flag)
690 seq_printf(m, "%-16s%s%s%s%s\n", 690 seq_printf(m, "%-16s%s%s%s%s\n",
691 "linetype", 691 "linetype",
692 (flag & 0x01) ? " point to point" : "", 692 (flag & 0x01) ? " point to point" : "",
693 (flag & 0x02) ? " point to multipoint" : "", 693 (flag & 0x02) ? " point to multipoint" : "",
694 (flag & 0x08) ? " leased line without D-channel" : "", 694 (flag & 0x08) ? " leased line without D-channel" : "",
695 (flag & 0x04) ? " leased line with D-channel" : "" 695 (flag & 0x04) ? " leased line with D-channel" : ""
696 ); 696 );
697 } 697 }
698 seq_printf(m, "%-16s %s\n", "cardname", cinfo->cardname); 698 seq_printf(m, "%-16s %s\n", "cardname", cinfo->cardname);
699 699
@@ -750,12 +750,12 @@ avmcard_dma_alloc(char *name, struct pci_dev *pdev, long rsize, long ssize)
750 750
751 return p; 751 return p;
752 752
753err_free_consistent: 753 err_free_consistent:
754 pci_free_consistent(p->pcidev, p->recvbuf.size, 754 pci_free_consistent(p->pcidev, p->recvbuf.size,
755 p->recvbuf.dmabuf, p->recvbuf.dmaaddr); 755 p->recvbuf.dmabuf, p->recvbuf.dmaaddr);
756err_kfree: 756 err_kfree:
757 kfree(p); 757 kfree(p);
758err: 758 err:
759 return NULL; 759 return NULL;
760} 760}
761 761
@@ -800,7 +800,7 @@ static int __init b1_init(void)
800 if ((p = strchr(revision, ':')) != NULL && p[1]) { 800 if ((p = strchr(revision, ':')) != NULL && p[1]) {
801 strlcpy(rev, p + 2, 32); 801 strlcpy(rev, p + 2, 32);
802 if ((p = strchr(rev, '$')) != NULL && p > rev) 802 if ((p = strchr(rev, '$')) != NULL && p > rev)
803 *(p - 1) = 0; 803 *(p-1) = 0;
804 } else 804 } else
805 strcpy(rev, "1.0"); 805 strcpy(rev, "1.0");
806 806
diff --git a/drivers/isdn/hardware/avm/b1dma.c b/drivers/isdn/hardware/avm/b1dma.c
index 0896aa86fc0..9c8d7aa053c 100644
--- a/drivers/isdn/hardware/avm/b1dma.c
+++ b/drivers/isdn/hardware/avm/b1dma.c
@@ -1,9 +1,9 @@
1/* $Id: b1dma.c,v 1.1.2.3 2004/02/10 01:07:12 keil Exp $ 1/* $Id: b1dma.c,v 1.1.2.3 2004/02/10 01:07:12 keil Exp $
2 * 2 *
3 * Common module for AVM B1 cards that support dma with AMCC 3 * Common module for AVM B1 cards that support dma with AMCC
4 * 4 *
5 * Copyright 2000 by Carsten Paeth <calle@calle.de> 5 * Copyright 2000 by Carsten Paeth <calle@calle.de>
6 * 6 *
7 * This software may be used and distributed according to the terms 7 * This software may be used and distributed according to the terms
8 * of the GNU General Public License, incorporated herein by reference. 8 * of the GNU General Public License, incorporated herein by reference.
9 * 9 *
@@ -40,7 +40,7 @@ MODULE_DESCRIPTION("CAPI4Linux: DMA support for active AVM cards");
40MODULE_AUTHOR("Carsten Paeth"); 40MODULE_AUTHOR("Carsten Paeth");
41MODULE_LICENSE("GPL"); 41MODULE_LICENSE("GPL");
42 42
43static bool suppress_pollack = 0; 43static int suppress_pollack = 0;
44module_param(suppress_pollack, bool, 0); 44module_param(suppress_pollack, bool, 0);
45 45
46/* ------------------------------------------------------------- */ 46/* ------------------------------------------------------------- */
@@ -110,11 +110,11 @@ static int b1dma_tolink(avmcard *card, void *buf, unsigned int len)
110 unsigned long stop = jiffies + 1 * HZ; /* maximum wait time 1 sec */ 110 unsigned long stop = jiffies + 1 * HZ; /* maximum wait time 1 sec */
111 unsigned char *s = (unsigned char *)buf; 111 unsigned char *s = (unsigned char *)buf;
112 while (len--) { 112 while (len--) {
113 while (!b1dma_tx_empty(card->port) 113 while ( !b1dma_tx_empty(card->port)
114 && time_before(jiffies, stop)); 114 && time_before(jiffies, stop));
115 if (!b1dma_tx_empty(card->port)) 115 if (!b1dma_tx_empty(card->port))
116 return -1; 116 return -1;
117 t1outp(card->port, 0x01, *s++); 117 t1outp(card->port, 0x01, *s++);
118 } 118 }
119 return 0; 119 return 0;
120} 120}
@@ -124,11 +124,11 @@ static int b1dma_fromlink(avmcard *card, void *buf, unsigned int len)
124 unsigned long stop = jiffies + 1 * HZ; /* maximum wait time 1 sec */ 124 unsigned long stop = jiffies + 1 * HZ; /* maximum wait time 1 sec */
125 unsigned char *s = (unsigned char *)buf; 125 unsigned char *s = (unsigned char *)buf;
126 while (len--) { 126 while (len--) {
127 while (!b1dma_rx_full(card->port) 127 while ( !b1dma_rx_full(card->port)
128 && time_before(jiffies, stop)); 128 && time_before(jiffies, stop));
129 if (!b1dma_rx_full(card->port)) 129 if (!b1dma_rx_full(card->port))
130 return -1; 130 return -1;
131 *s++ = t1inp(card->port, 0x00); 131 *s++ = t1inp(card->port, 0x00);
132 } 132 }
133 return 0; 133 return 0;
134} 134}
@@ -136,7 +136,7 @@ static int b1dma_fromlink(avmcard *card, void *buf, unsigned int len)
136static int WriteReg(avmcard *card, u32 reg, u8 val) 136static int WriteReg(avmcard *card, u32 reg, u8 val)
137{ 137{
138 u8 cmd = 0x00; 138 u8 cmd = 0x00;
139 if (b1dma_tolink(card, &cmd, 1) == 0 139 if ( b1dma_tolink(card, &cmd, 1) == 0
140 && b1dma_tolink(card, &reg, 4) == 0) { 140 && b1dma_tolink(card, &reg, 4) == 0) {
141 u32 tmp = val; 141 u32 tmp = val;
142 return b1dma_tolink(card, &tmp, 4); 142 return b1dma_tolink(card, &tmp, 4);
@@ -147,7 +147,7 @@ static int WriteReg(avmcard *card, u32 reg, u8 val)
147static u8 ReadReg(avmcard *card, u32 reg) 147static u8 ReadReg(avmcard *card, u32 reg)
148{ 148{
149 u8 cmd = 0x01; 149 u8 cmd = 0x01;
150 if (b1dma_tolink(card, &cmd, 1) == 0 150 if ( b1dma_tolink(card, &cmd, 1) == 0
151 && b1dma_tolink(card, &reg, 4) == 0) { 151 && b1dma_tolink(card, &reg, 4) == 0) {
152 u32 tmp; 152 u32 tmp;
153 if (b1dma_fromlink(card, &tmp, 4) == 0) 153 if (b1dma_fromlink(card, &tmp, 4) == 0)
@@ -258,30 +258,30 @@ static int b1dma_detect(avmcard *card)
258 258
259 b1dma_writel(card, 0xffffffff, AMCC_RXPTR); 259 b1dma_writel(card, 0xffffffff, AMCC_RXPTR);
260 b1dma_writel(card, 0xffffffff, AMCC_TXPTR); 260 b1dma_writel(card, 0xffffffff, AMCC_TXPTR);
261 if (b1dma_readl(card, AMCC_RXPTR) != 0xfffffffc 261 if ( b1dma_readl(card, AMCC_RXPTR) != 0xfffffffc
262 || b1dma_readl(card, AMCC_TXPTR) != 0xfffffffc) 262 || b1dma_readl(card, AMCC_TXPTR) != 0xfffffffc)
263 return 2; 263 return 2;
264 264
265 b1dma_writel(card, 0x0, AMCC_RXPTR); 265 b1dma_writel(card, 0x0, AMCC_RXPTR);
266 b1dma_writel(card, 0x0, AMCC_TXPTR); 266 b1dma_writel(card, 0x0, AMCC_TXPTR);
267 if (b1dma_readl(card, AMCC_RXPTR) != 0x0 267 if ( b1dma_readl(card, AMCC_RXPTR) != 0x0
268 || b1dma_readl(card, AMCC_TXPTR) != 0x0) 268 || b1dma_readl(card, AMCC_TXPTR) != 0x0)
269 return 3; 269 return 3;
270 270
271 t1outp(card->port, 0x10, 0x00); 271 t1outp(card->port, 0x10, 0x00);
272 t1outp(card->port, 0x07, 0x00); 272 t1outp(card->port, 0x07, 0x00);
273 273
274 t1outp(card->port, 0x02, 0x02); 274 t1outp(card->port, 0x02, 0x02);
275 t1outp(card->port, 0x03, 0x02); 275 t1outp(card->port, 0x03, 0x02);
276 276
277 if ((t1inp(card->port, 0x02) & 0xFE) != 0x02 277 if ( (t1inp(card->port, 0x02) & 0xFE) != 0x02
278 || t1inp(card->port, 0x3) != 0x03) 278 || t1inp(card->port, 0x3) != 0x03)
279 return 4; 279 return 4;
280 280
281 t1outp(card->port, 0x02, 0x00); 281 t1outp(card->port, 0x02, 0x00);
282 t1outp(card->port, 0x03, 0x00); 282 t1outp(card->port, 0x03, 0x00);
283 283
284 if ((t1inp(card->port, 0x02) & 0xFE) != 0x00 284 if ( (t1inp(card->port, 0x02) & 0xFE) != 0x00
285 || t1inp(card->port, 0x3) != 0x01) 285 || t1inp(card->port, 0x3) != 0x01)
286 return 5; 286 return 5;
287 287
@@ -294,28 +294,28 @@ int t1pci_detect(avmcard *card)
294 294
295 if ((ret = b1dma_detect(card)) != 0) 295 if ((ret = b1dma_detect(card)) != 0)
296 return ret; 296 return ret;
297 297
298 /* Transputer test */ 298 /* Transputer test */
299 299
300 if (WriteReg(card, 0x80001000, 0x11) != 0 300 if ( WriteReg(card, 0x80001000, 0x11) != 0
301 || WriteReg(card, 0x80101000, 0x22) != 0 301 || WriteReg(card, 0x80101000, 0x22) != 0
302 || WriteReg(card, 0x80201000, 0x33) != 0 302 || WriteReg(card, 0x80201000, 0x33) != 0
303 || WriteReg(card, 0x80301000, 0x44) != 0) 303 || WriteReg(card, 0x80301000, 0x44) != 0)
304 return 6; 304 return 6;
305 305
306 if (ReadReg(card, 0x80001000) != 0x11 306 if ( ReadReg(card, 0x80001000) != 0x11
307 || ReadReg(card, 0x80101000) != 0x22 307 || ReadReg(card, 0x80101000) != 0x22
308 || ReadReg(card, 0x80201000) != 0x33 308 || ReadReg(card, 0x80201000) != 0x33
309 || ReadReg(card, 0x80301000) != 0x44) 309 || ReadReg(card, 0x80301000) != 0x44)
310 return 7; 310 return 7;
311 311
312 if (WriteReg(card, 0x80001000, 0x55) != 0 312 if ( WriteReg(card, 0x80001000, 0x55) != 0
313 || WriteReg(card, 0x80101000, 0x66) != 0 313 || WriteReg(card, 0x80101000, 0x66) != 0
314 || WriteReg(card, 0x80201000, 0x77) != 0 314 || WriteReg(card, 0x80201000, 0x77) != 0
315 || WriteReg(card, 0x80301000, 0x88) != 0) 315 || WriteReg(card, 0x80301000, 0x88) != 0)
316 return 8; 316 return 8;
317 317
318 if (ReadReg(card, 0x80001000) != 0x55 318 if ( ReadReg(card, 0x80001000) != 0x55
319 || ReadReg(card, 0x80101000) != 0x66 319 || ReadReg(card, 0x80101000) != 0x66
320 || ReadReg(card, 0x80201000) != 0x77 320 || ReadReg(card, 0x80201000) != 0x77
321 || ReadReg(card, 0x80301000) != 0x88) 321 || ReadReg(card, 0x80301000) != 0x88)
@@ -330,20 +330,20 @@ int b1pciv4_detect(avmcard *card)
330 330
331 if ((ret = b1dma_detect(card)) != 0) 331 if ((ret = b1dma_detect(card)) != 0)
332 return ret; 332 return ret;
333 333
334 for (i = 0; i < 5; i++) { 334 for (i=0; i < 5 ; i++) {
335 if (WriteReg(card, 0x80A00000, 0x21) != 0) 335 if (WriteReg(card, 0x80A00000, 0x21) != 0)
336 return 6; 336 return 6;
337 if ((ReadReg(card, 0x80A00000) & 0x01) != 0x01) 337 if ((ReadReg(card, 0x80A00000) & 0x01) != 0x01)
338 return 7; 338 return 7;
339 } 339 }
340 for (i = 0; i < 5; i++) { 340 for (i=0; i < 5 ; i++) {
341 if (WriteReg(card, 0x80A00000, 0x20) != 0) 341 if (WriteReg(card, 0x80A00000, 0x20) != 0)
342 return 8; 342 return 8;
343 if ((ReadReg(card, 0x80A00000) & 0x01) != 0x00) 343 if ((ReadReg(card, 0x80A00000) & 0x01) != 0x00)
344 return 9; 344 return 9;
345 } 345 }
346 346
347 return 0; 347 return 0;
348} 348}
349 349
@@ -373,7 +373,7 @@ static void b1dma_dispatch_tx(avmcard *card)
373 u16 len; 373 u16 len;
374 u32 txlen; 374 u32 txlen;
375 void *p; 375 void *p;
376 376
377 skb = skb_dequeue(&dma->send_queue); 377 skb = skb_dequeue(&dma->send_queue);
378 378
379 len = CAPIMSG_LEN(skb->data); 379 len = CAPIMSG_LEN(skb->data);
@@ -398,13 +398,13 @@ static void b1dma_dispatch_tx(avmcard *card)
398 printk(KERN_DEBUG "tx: put msg len=%d\n", txlen); 398 printk(KERN_DEBUG "tx: put msg len=%d\n", txlen);
399#endif 399#endif
400 } else { 400 } else {
401 txlen = skb->len - 2; 401 txlen = skb->len-2;
402#ifdef AVM_B1DMA_POLLDEBUG 402#ifdef AVM_B1DMA_POLLDEBUG
403 if (skb->data[2] == SEND_POLLACK) 403 if (skb->data[2] == SEND_POLLACK)
404 printk(KERN_INFO "%s: send ack\n", card->name); 404 printk(KERN_INFO "%s: send ack\n", card->name);
405#endif 405#endif
406#ifdef AVM_B1DMA_DEBUG 406#ifdef AVM_B1DMA_DEBUG
407 printk(KERN_DEBUG "tx: put 0x%x len=%d\n", 407 printk(KERN_DEBUG "tx: put 0x%x len=%d\n",
408 skb->data[2], txlen); 408 skb->data[2], txlen);
409#endif 409#endif
410 skb_copy_from_linear_data_offset(skb, 2, dma->sendbuf.dmabuf, 410 skb_copy_from_linear_data_offset(skb, 2, dma->sendbuf.dmabuf,
@@ -430,7 +430,7 @@ static void queue_pollack(avmcard *card)
430 skb = alloc_skb(3, GFP_ATOMIC); 430 skb = alloc_skb(3, GFP_ATOMIC);
431 if (!skb) { 431 if (!skb) {
432 printk(KERN_CRIT "%s: no memory, lost poll ack\n", 432 printk(KERN_CRIT "%s: no memory, lost poll ack\n",
433 card->name); 433 card->name);
434 return; 434 return;
435 } 435 }
436 p = skb->data; 436 p = skb->data;
@@ -450,14 +450,14 @@ static void b1dma_handle_rx(avmcard *card)
450 avmcard_dmainfo *dma = card->dma; 450 avmcard_dmainfo *dma = card->dma;
451 struct capi_ctr *ctrl = &cinfo->capi_ctrl; 451 struct capi_ctr *ctrl = &cinfo->capi_ctrl;
452 struct sk_buff *skb; 452 struct sk_buff *skb;
453 void *p = dma->recvbuf.dmabuf + 4; 453 void *p = dma->recvbuf.dmabuf+4;
454 u32 ApplId, MsgLen, DataB3Len, NCCI, WindowSize; 454 u32 ApplId, MsgLen, DataB3Len, NCCI, WindowSize;
455 u8 b1cmd = _get_byte(&p); 455 u8 b1cmd = _get_byte(&p);
456 456
457#ifdef AVM_B1DMA_DEBUG 457#ifdef AVM_B1DMA_DEBUG
458 printk(KERN_DEBUG "rx: 0x%x %lu\n", b1cmd, (unsigned long)dma->recvlen); 458 printk(KERN_DEBUG "rx: 0x%x %lu\n", b1cmd, (unsigned long)dma->recvlen);
459#endif 459#endif
460 460
461 switch (b1cmd) { 461 switch (b1cmd) {
462 case RECEIVE_DATA_B3_IND: 462 case RECEIVE_DATA_B3_IND:
463 463
@@ -466,13 +466,13 @@ static void b1dma_handle_rx(avmcard *card)
466 DataB3Len = _get_slice(&p, card->databuf); 466 DataB3Len = _get_slice(&p, card->databuf);
467 467
468 if (MsgLen < 30) { /* not CAPI 64Bit */ 468 if (MsgLen < 30) { /* not CAPI 64Bit */
469 memset(card->msgbuf + MsgLen, 0, 30 - MsgLen); 469 memset(card->msgbuf+MsgLen, 0, 30-MsgLen);
470 MsgLen = 30; 470 MsgLen = 30;
471 CAPIMSG_SETLEN(card->msgbuf, 30); 471 CAPIMSG_SETLEN(card->msgbuf, 30);
472 } 472 }
473 if (!(skb = alloc_skb(DataB3Len + MsgLen, GFP_ATOMIC))) { 473 if (!(skb = alloc_skb(DataB3Len+MsgLen, GFP_ATOMIC))) {
474 printk(KERN_ERR "%s: incoming packet dropped\n", 474 printk(KERN_ERR "%s: incoming packet dropped\n",
475 card->name); 475 card->name);
476 } else { 476 } else {
477 memcpy(skb_put(skb, MsgLen), card->msgbuf, MsgLen); 477 memcpy(skb_put(skb, MsgLen), card->msgbuf, MsgLen);
478 memcpy(skb_put(skb, DataB3Len), card->databuf, DataB3Len); 478 memcpy(skb_put(skb, DataB3Len), card->databuf, DataB3Len);
@@ -486,14 +486,14 @@ static void b1dma_handle_rx(avmcard *card)
486 MsgLen = _get_slice(&p, card->msgbuf); 486 MsgLen = _get_slice(&p, card->msgbuf);
487 if (!(skb = alloc_skb(MsgLen, GFP_ATOMIC))) { 487 if (!(skb = alloc_skb(MsgLen, GFP_ATOMIC))) {
488 printk(KERN_ERR "%s: incoming packet dropped\n", 488 printk(KERN_ERR "%s: incoming packet dropped\n",
489 card->name); 489 card->name);
490 } else { 490 } else {
491 memcpy(skb_put(skb, MsgLen), card->msgbuf, MsgLen); 491 memcpy(skb_put(skb, MsgLen), card->msgbuf, MsgLen);
492 if (CAPIMSG_CMD(skb->data) == CAPI_DATA_B3_CONF) { 492 if (CAPIMSG_CMD(skb->data) == CAPI_DATA_B3_CONF) {
493 spin_lock(&card->lock); 493 spin_lock(&card->lock);
494 capilib_data_b3_conf(&cinfo->ncci_head, ApplId, 494 capilib_data_b3_conf(&cinfo->ncci_head, ApplId,
495 CAPIMSG_NCCI(skb->data), 495 CAPIMSG_NCCI(skb->data),
496 CAPIMSG_MSGID(skb->data)); 496 CAPIMSG_MSGID(skb->data));
497 spin_unlock(&card->lock); 497 spin_unlock(&card->lock);
498 } 498 }
499 capi_ctr_handle_message(ctrl, ApplId, skb); 499 capi_ctr_handle_message(ctrl, ApplId, skb);
@@ -550,23 +550,23 @@ static void b1dma_handle_rx(avmcard *card)
550 ApplId = (unsigned) _get_word(&p); 550 ApplId = (unsigned) _get_word(&p);
551 MsgLen = _get_slice(&p, card->msgbuf); 551 MsgLen = _get_slice(&p, card->msgbuf);
552 card->msgbuf[MsgLen] = 0; 552 card->msgbuf[MsgLen] = 0;
553 while (MsgLen > 0 553 while ( MsgLen > 0
554 && (card->msgbuf[MsgLen - 1] == '\n' 554 && ( card->msgbuf[MsgLen-1] == '\n'
555 || card->msgbuf[MsgLen - 1] == '\r')) { 555 || card->msgbuf[MsgLen-1] == '\r')) {
556 card->msgbuf[MsgLen - 1] = 0; 556 card->msgbuf[MsgLen-1] = 0;
557 MsgLen--; 557 MsgLen--;
558 } 558 }
559 printk(KERN_INFO "%s: task %d \"%s\" ready.\n", 559 printk(KERN_INFO "%s: task %d \"%s\" ready.\n",
560 card->name, ApplId, card->msgbuf); 560 card->name, ApplId, card->msgbuf);
561 break; 561 break;
562 562
563 case RECEIVE_DEBUGMSG: 563 case RECEIVE_DEBUGMSG:
564 MsgLen = _get_slice(&p, card->msgbuf); 564 MsgLen = _get_slice(&p, card->msgbuf);
565 card->msgbuf[MsgLen] = 0; 565 card->msgbuf[MsgLen] = 0;
566 while (MsgLen > 0 566 while ( MsgLen > 0
567 && (card->msgbuf[MsgLen - 1] == '\n' 567 && ( card->msgbuf[MsgLen-1] == '\n'
568 || card->msgbuf[MsgLen - 1] == '\r')) { 568 || card->msgbuf[MsgLen-1] == '\r')) {
569 card->msgbuf[MsgLen - 1] = 0; 569 card->msgbuf[MsgLen-1] = 0;
570 MsgLen--; 570 MsgLen--;
571 } 571 }
572 printk(KERN_INFO "%s: DEBUG: %s\n", card->name, card->msgbuf); 572 printk(KERN_INFO "%s: DEBUG: %s\n", card->name, card->msgbuf);
@@ -574,7 +574,7 @@ static void b1dma_handle_rx(avmcard *card)
574 574
575 default: 575 default:
576 printk(KERN_ERR "%s: b1dma_interrupt: 0x%x ???\n", 576 printk(KERN_ERR "%s: b1dma_interrupt: 0x%x ???\n",
577 card->name, b1cmd); 577 card->name, b1cmd);
578 return; 578 return;
579 } 579 }
580} 580}
@@ -594,7 +594,7 @@ static void b1dma_handle_interrupt(avmcard *card)
594 return; 594 return;
595 } 595 }
596 596
597 newcsr = card->csr | (status & ALL_INT); 597 newcsr = card->csr | (status & ALL_INT);
598 if (status & TX_TC_INT) newcsr &= ~EN_TX_TC_INT; 598 if (status & TX_TC_INT) newcsr &= ~EN_TX_TC_INT;
599 if (status & RX_TC_INT) newcsr &= ~EN_RX_TC_INT; 599 if (status & RX_TC_INT) newcsr &= ~EN_RX_TC_INT;
600 b1dma_writel(card, newcsr, AMCC_INTCSR); 600 b1dma_writel(card, newcsr, AMCC_INTCSR);
@@ -602,23 +602,23 @@ static void b1dma_handle_interrupt(avmcard *card)
602 if ((status & RX_TC_INT) != 0) { 602 if ((status & RX_TC_INT) != 0) {
603 struct avmcard_dmainfo *dma = card->dma; 603 struct avmcard_dmainfo *dma = card->dma;
604 u32 rxlen; 604 u32 rxlen;
605 if (card->dma->recvlen == 0) { 605 if (card->dma->recvlen == 0) {
606 rxlen = b1dma_readl(card, AMCC_RXLEN); 606 rxlen = b1dma_readl(card, AMCC_RXLEN);
607 if (rxlen == 0) { 607 if (rxlen == 0) {
608 dma->recvlen = *((u32 *)dma->recvbuf.dmabuf); 608 dma->recvlen = *((u32 *)dma->recvbuf.dmabuf);
609 rxlen = (dma->recvlen + 3) & ~3; 609 rxlen = (dma->recvlen + 3) & ~3;
610 b1dma_writel(card, dma->recvbuf.dmaaddr + 4, AMCC_RXPTR); 610 b1dma_writel(card, dma->recvbuf.dmaaddr+4, AMCC_RXPTR);
611 b1dma_writel(card, rxlen, AMCC_RXLEN); 611 b1dma_writel(card, rxlen, AMCC_RXLEN);
612#ifdef AVM_B1DMA_DEBUG 612#ifdef AVM_B1DMA_DEBUG
613 } else { 613 } else {
614 printk(KERN_ERR "%s: rx not complete (%d).\n", 614 printk(KERN_ERR "%s: rx not complete (%d).\n",
615 card->name, rxlen); 615 card->name, rxlen);
616#endif 616#endif
617 } 617 }
618 } else { 618 } else {
619 spin_unlock(&card->lock); 619 spin_unlock(&card->lock);
620 b1dma_handle_rx(card); 620 b1dma_handle_rx(card);
621 dma->recvlen = 0; 621 dma->recvlen = 0;
622 spin_lock(&card->lock); 622 spin_lock(&card->lock);
623 b1dma_writel(card, dma->recvbuf.dmaaddr, AMCC_RXPTR); 623 b1dma_writel(card, dma->recvbuf.dmaaddr, AMCC_RXPTR);
624 b1dma_writel(card, 4, AMCC_RXLEN); 624 b1dma_writel(card, 4, AMCC_RXLEN);
@@ -659,7 +659,7 @@ static int b1dma_loaded(avmcard *card)
659 } 659 }
660 if (!b1_tx_empty(base)) { 660 if (!b1_tx_empty(base)) {
661 printk(KERN_ERR "%s: b1dma_loaded: tx err, corrupted t4 file ?\n", 661 printk(KERN_ERR "%s: b1dma_loaded: tx err, corrupted t4 file ?\n",
662 card->name); 662 card->name);
663 return 0; 663 return 0;
664 } 664 }
665 b1_put_byte(base, SEND_POLLACK); 665 b1_put_byte(base, SEND_POLLACK);
@@ -686,7 +686,7 @@ static void b1dma_send_init(avmcard *card)
686 skb = alloc_skb(15, GFP_ATOMIC); 686 skb = alloc_skb(15, GFP_ATOMIC);
687 if (!skb) { 687 if (!skb) {
688 printk(KERN_CRIT "%s: no memory, lost register appl.\n", 688 printk(KERN_CRIT "%s: no memory, lost register appl.\n",
689 card->name); 689 card->name);
690 return; 690 return;
691 } 691 }
692 p = skb->data; 692 p = skb->data;
@@ -694,7 +694,7 @@ static void b1dma_send_init(avmcard *card)
694 _put_byte(&p, 0); 694 _put_byte(&p, 0);
695 _put_byte(&p, SEND_INIT); 695 _put_byte(&p, SEND_INIT);
696 _put_word(&p, CAPI_MAXAPPL); 696 _put_word(&p, CAPI_MAXAPPL);
697 _put_word(&p, AVM_NCCI_PER_CHANNEL * 30); 697 _put_word(&p, AVM_NCCI_PER_CHANNEL*30);
698 _put_word(&p, card->cardnr - 1); 698 _put_word(&p, card->cardnr - 1);
699 skb_put(skb, (u8 *)p - (u8 *)skb->data); 699 skb_put(skb, (u8 *)p - (u8 *)skb->data);
700 700
@@ -712,7 +712,7 @@ int b1dma_load_firmware(struct capi_ctr *ctrl, capiloaddata *data)
712 if ((retval = b1_load_t4file(card, &data->firmware))) { 712 if ((retval = b1_load_t4file(card, &data->firmware))) {
713 b1dma_reset(card); 713 b1dma_reset(card);
714 printk(KERN_ERR "%s: failed to load t4file!!\n", 714 printk(KERN_ERR "%s: failed to load t4file!!\n",
715 card->name); 715 card->name);
716 return retval; 716 return retval;
717 } 717 }
718 718
@@ -720,7 +720,7 @@ int b1dma_load_firmware(struct capi_ctr *ctrl, capiloaddata *data)
720 if ((retval = b1_load_config(card, &data->configuration))) { 720 if ((retval = b1_load_config(card, &data->configuration))) {
721 b1dma_reset(card); 721 b1dma_reset(card);
722 printk(KERN_ERR "%s: failed to load config!!\n", 722 printk(KERN_ERR "%s: failed to load config!!\n",
723 card->name); 723 card->name);
724 return retval; 724 return retval;
725 } 725 }
726 } 726 }
@@ -733,8 +733,8 @@ int b1dma_load_firmware(struct capi_ctr *ctrl, capiloaddata *data)
733 733
734 card->csr = AVM_FLAG; 734 card->csr = AVM_FLAG;
735 b1dma_writel(card, card->csr, AMCC_INTCSR); 735 b1dma_writel(card, card->csr, AMCC_INTCSR);
736 b1dma_writel(card, EN_A2P_TRANSFERS | EN_P2A_TRANSFERS | A2P_HI_PRIORITY | 736 b1dma_writel(card, EN_A2P_TRANSFERS|EN_P2A_TRANSFERS|A2P_HI_PRIORITY|
737 P2A_HI_PRIORITY | RESET_A2P_FLAGS | RESET_P2A_FLAGS, 737 P2A_HI_PRIORITY|RESET_A2P_FLAGS|RESET_P2A_FLAGS,
738 AMCC_MCSR); 738 AMCC_MCSR);
739 t1outp(card->port, 0x07, 0x30); 739 t1outp(card->port, 0x07, 0x30);
740 t1outp(card->port, 0x10, 0xF0); 740 t1outp(card->port, 0x10, 0xF0);
@@ -745,7 +745,7 @@ int b1dma_load_firmware(struct capi_ctr *ctrl, capiloaddata *data)
745 card->csr |= EN_RX_TC_INT; 745 card->csr |= EN_RX_TC_INT;
746 b1dma_writel(card, card->csr, AMCC_INTCSR); 746 b1dma_writel(card, card->csr, AMCC_INTCSR);
747 747
748 b1dma_send_init(card); 748 b1dma_send_init(card);
749 749
750 return 0; 750 return 0;
751} 751}
@@ -757,7 +757,7 @@ void b1dma_reset_ctr(struct capi_ctr *ctrl)
757 unsigned long flags; 757 unsigned long flags;
758 758
759 spin_lock_irqsave(&card->lock, flags); 759 spin_lock_irqsave(&card->lock, flags);
760 b1dma_reset(card); 760 b1dma_reset(card);
761 761
762 memset(cinfo->version, 0, sizeof(cinfo->version)); 762 memset(cinfo->version, 0, sizeof(cinfo->version));
763 capilib_release(&cinfo->ncci_head); 763 capilib_release(&cinfo->ncci_head);
@@ -768,8 +768,8 @@ void b1dma_reset_ctr(struct capi_ctr *ctrl)
768/* ------------------------------------------------------------- */ 768/* ------------------------------------------------------------- */
769 769
770void b1dma_register_appl(struct capi_ctr *ctrl, 770void b1dma_register_appl(struct capi_ctr *ctrl,
771 u16 appl, 771 u16 appl,
772 capi_register_params *rp) 772 capi_register_params *rp)
773{ 773{
774 avmctrl_info *cinfo = (avmctrl_info *)(ctrl->driverdata); 774 avmctrl_info *cinfo = (avmctrl_info *)(ctrl->driverdata);
775 avmcard *card = cinfo->card; 775 avmcard *card = cinfo->card;
@@ -785,7 +785,7 @@ void b1dma_register_appl(struct capi_ctr *ctrl,
785 skb = alloc_skb(23, GFP_ATOMIC); 785 skb = alloc_skb(23, GFP_ATOMIC);
786 if (!skb) { 786 if (!skb) {
787 printk(KERN_CRIT "%s: no memory, lost register appl.\n", 787 printk(KERN_CRIT "%s: no memory, lost register appl.\n",
788 card->name); 788 card->name);
789 return; 789 return;
790 } 790 }
791 p = skb->data; 791 p = skb->data;
@@ -793,7 +793,7 @@ void b1dma_register_appl(struct capi_ctr *ctrl,
793 _put_byte(&p, 0); 793 _put_byte(&p, 0);
794 _put_byte(&p, SEND_REGISTER); 794 _put_byte(&p, SEND_REGISTER);
795 _put_word(&p, appl); 795 _put_word(&p, appl);
796 _put_word(&p, 1024 * (nconn + 1)); 796 _put_word(&p, 1024 * (nconn+1));
797 _put_word(&p, nconn); 797 _put_word(&p, nconn);
798 _put_word(&p, rp->datablkcnt); 798 _put_word(&p, rp->datablkcnt);
799 _put_word(&p, rp->datablklen); 799 _put_word(&p, rp->datablklen);
@@ -819,7 +819,7 @@ void b1dma_release_appl(struct capi_ctr *ctrl, u16 appl)
819 skb = alloc_skb(7, GFP_ATOMIC); 819 skb = alloc_skb(7, GFP_ATOMIC);
820 if (!skb) { 820 if (!skb) {
821 printk(KERN_CRIT "%s: no memory, lost release appl.\n", 821 printk(KERN_CRIT "%s: no memory, lost release appl.\n",
822 card->name); 822 card->name);
823 return; 823 return;
824 } 824 }
825 p = skb->data; 825 p = skb->data;
@@ -841,7 +841,7 @@ u16 b1dma_send_message(struct capi_ctr *ctrl, struct sk_buff *skb)
841 avmcard *card = cinfo->card; 841 avmcard *card = cinfo->card;
842 u16 retval = CAPI_NOERROR; 842 u16 retval = CAPI_NOERROR;
843 843
844 if (CAPIMSG_CMD(skb->data) == CAPI_DATA_B3_REQ) { 844 if (CAPIMSG_CMD(skb->data) == CAPI_DATA_B3_REQ) {
845 unsigned long flags; 845 unsigned long flags;
846 spin_lock_irqsave(&card->lock, flags); 846 spin_lock_irqsave(&card->lock, flags);
847 retval = capilib_data_b3_req(&cinfo->ncci_head, 847 retval = capilib_data_b3_req(&cinfo->ncci_head,
@@ -850,7 +850,7 @@ u16 b1dma_send_message(struct capi_ctr *ctrl, struct sk_buff *skb)
850 CAPIMSG_MSGID(skb->data)); 850 CAPIMSG_MSGID(skb->data));
851 spin_unlock_irqrestore(&card->lock, flags); 851 spin_unlock_irqrestore(&card->lock, flags);
852 } 852 }
853 if (retval == CAPI_NOERROR) 853 if (retval == CAPI_NOERROR)
854 b1dma_queue_tx(card, skb); 854 b1dma_queue_tx(card, skb);
855 855
856 return retval; 856 return retval;
@@ -893,29 +893,29 @@ static int b1dmactl_proc_show(struct seq_file *m, void *v)
893 seq_printf(m, "%-16s %s\n", "ver_serial", s); 893 seq_printf(m, "%-16s %s\n", "ver_serial", s);
894 894
895 if (card->cardtype != avm_m1) { 895 if (card->cardtype != avm_m1) {
896 flag = ((u8 *)(ctrl->profile.manu))[3]; 896 flag = ((u8 *)(ctrl->profile.manu))[3];
897 if (flag) 897 if (flag)
898 seq_printf(m, "%-16s%s%s%s%s%s%s%s\n", 898 seq_printf(m, "%-16s%s%s%s%s%s%s%s\n",
899 "protocol", 899 "protocol",
900 (flag & 0x01) ? " DSS1" : "", 900 (flag & 0x01) ? " DSS1" : "",
901 (flag & 0x02) ? " CT1" : "", 901 (flag & 0x02) ? " CT1" : "",
902 (flag & 0x04) ? " VN3" : "", 902 (flag & 0x04) ? " VN3" : "",
903 (flag & 0x08) ? " NI1" : "", 903 (flag & 0x08) ? " NI1" : "",
904 (flag & 0x10) ? " AUSTEL" : "", 904 (flag & 0x10) ? " AUSTEL" : "",
905 (flag & 0x20) ? " ESS" : "", 905 (flag & 0x20) ? " ESS" : "",
906 (flag & 0x40) ? " 1TR6" : "" 906 (flag & 0x40) ? " 1TR6" : ""
907 ); 907 );
908 } 908 }
909 if (card->cardtype != avm_m1) { 909 if (card->cardtype != avm_m1) {
910 flag = ((u8 *)(ctrl->profile.manu))[5]; 910 flag = ((u8 *)(ctrl->profile.manu))[5];
911 if (flag) 911 if (flag)
912 seq_printf(m, "%-16s%s%s%s%s\n", 912 seq_printf(m, "%-16s%s%s%s%s\n",
913 "linetype", 913 "linetype",
914 (flag & 0x01) ? " point to point" : "", 914 (flag & 0x01) ? " point to point" : "",
915 (flag & 0x02) ? " point to multipoint" : "", 915 (flag & 0x02) ? " point to multipoint" : "",
916 (flag & 0x08) ? " leased line without D-channel" : "", 916 (flag & 0x08) ? " leased line without D-channel" : "",
917 (flag & 0x04) ? " leased line with D-channel" : "" 917 (flag & 0x04) ? " leased line with D-channel" : ""
918 ); 918 );
919 } 919 }
920 seq_printf(m, "%-16s %s\n", "cardname", cinfo->cardname); 920 seq_printf(m, "%-16s %s\n", "cardname", cinfo->cardname);
921 921
@@ -977,7 +977,7 @@ static int __init b1dma_init(void)
977 if ((p = strchr(revision, ':')) != NULL && p[1]) { 977 if ((p = strchr(revision, ':')) != NULL && p[1]) {
978 strlcpy(rev, p + 2, sizeof(rev)); 978 strlcpy(rev, p + 2, sizeof(rev));
979 if ((p = strchr(rev, '$')) != NULL && p > rev) 979 if ((p = strchr(rev, '$')) != NULL && p > rev)
980 *(p - 1) = 0; 980 *(p-1) = 0;
981 } else 981 } else
982 strcpy(rev, "1.0"); 982 strcpy(rev, "1.0");
983 983
diff --git a/drivers/isdn/hardware/avm/b1isa.c b/drivers/isdn/hardware/avm/b1isa.c
index 31ef8130a87..ff5390546f9 100644
--- a/drivers/isdn/hardware/avm/b1isa.c
+++ b/drivers/isdn/hardware/avm/b1isa.c
@@ -1,9 +1,9 @@
1/* $Id: b1isa.c,v 1.1.2.3 2004/02/10 01:07:12 keil Exp $ 1/* $Id: b1isa.c,v 1.1.2.3 2004/02/10 01:07:12 keil Exp $
2 * 2 *
3 * Module for AVM B1 ISA-card. 3 * Module for AVM B1 ISA-card.
4 * 4 *
5 * Copyright 1999 by Carsten Paeth <calle@calle.de> 5 * Copyright 1999 by Carsten Paeth <calle@calle.de>
6 * 6 *
7 * This software may be used and distributed according to the terms 7 * This software may be used and distributed according to the terms
8 * of the GNU General Public License, incorporated herein by reference. 8 * of the GNU General Public License, incorporated herein by reference.
9 * 9 *
@@ -80,7 +80,7 @@ static int b1isa_probe(struct pci_dev *pdev)
80 card->cardtype = avm_b1isa; 80 card->cardtype = avm_b1isa;
81 sprintf(card->name, "b1isa-%x", card->port); 81 sprintf(card->name, "b1isa-%x", card->port);
82 82
83 if (card->port != 0x150 && card->port != 0x250 83 if ( card->port != 0x150 && card->port != 0x250
84 && card->port != 0x300 && card->port != 0x340) { 84 && card->port != 0x300 && card->port != 0x340) {
85 printk(KERN_WARNING "b1isa: invalid port 0x%x.\n", card->port); 85 printk(KERN_WARNING "b1isa: invalid port 0x%x.\n", card->port);
86 retval = -EINVAL; 86 retval = -EINVAL;
@@ -136,13 +136,13 @@ static int b1isa_probe(struct pci_dev *pdev)
136 pci_set_drvdata(pdev, cinfo); 136 pci_set_drvdata(pdev, cinfo);
137 return 0; 137 return 0;
138 138
139err_free_irq: 139 err_free_irq:
140 free_irq(card->irq, card); 140 free_irq(card->irq, card);
141err_release_region: 141 err_release_region:
142 release_region(card->port, AVMB1_PORTLEN); 142 release_region(card->port, AVMB1_PORTLEN);
143err_free: 143 err_free:
144 b1_free_card(card); 144 b1_free_card(card);
145err: 145 err:
146 return retval; 146 return retval;
147} 147}
148 148
@@ -206,7 +206,7 @@ static int __init b1isa_init(void)
206 if ((p = strchr(revision, ':')) != NULL && p[1]) { 206 if ((p = strchr(revision, ':')) != NULL && p[1]) {
207 strlcpy(rev, p + 2, 32); 207 strlcpy(rev, p + 2, 32);
208 if ((p = strchr(rev, '$')) != NULL && p > rev) 208 if ((p = strchr(rev, '$')) != NULL && p > rev)
209 *(p - 1) = 0; 209 *(p-1) = 0;
210 } else 210 } else
211 strcpy(rev, "1.0"); 211 strcpy(rev, "1.0");
212 212
diff --git a/drivers/isdn/hardware/avm/b1pci.c b/drivers/isdn/hardware/avm/b1pci.c
index ac4863c2ecb..c97e4315079 100644
--- a/drivers/isdn/hardware/avm/b1pci.c
+++ b/drivers/isdn/hardware/avm/b1pci.c
@@ -1,9 +1,9 @@
1/* $Id: b1pci.c,v 1.1.2.2 2004/01/16 21:09:27 keil Exp $ 1/* $Id: b1pci.c,v 1.1.2.2 2004/01/16 21:09:27 keil Exp $
2 * 2 *
3 * Module for AVM B1 PCI-card. 3 * Module for AVM B1 PCI-card.
4 * 4 *
5 * Copyright 1999 by Carsten Paeth <calle@calle.de> 5 * Copyright 1999 by Carsten Paeth <calle@calle.de>
6 * 6 *
7 * This software may be used and distributed according to the terms 7 * This software may be used and distributed according to the terms
8 * of the GNU General Public License, incorporated herein by reference. 8 * of the GNU General Public License, incorporated herein by reference.
9 * 9 *
@@ -79,7 +79,7 @@ static int b1pci_probe(struct capicardparams *p, struct pci_dev *pdev)
79 card->port = p->port; 79 card->port = p->port;
80 card->irq = p->irq; 80 card->irq = p->irq;
81 card->cardtype = avm_b1pci; 81 card->cardtype = avm_b1pci;
82 82
83 if (!request_region(card->port, AVMB1_PORTLEN, card->name)) { 83 if (!request_region(card->port, AVMB1_PORTLEN, card->name)) {
84 printk(KERN_WARNING "b1pci: ports 0x%03x-0x%03x in use.\n", 84 printk(KERN_WARNING "b1pci: ports 0x%03x-0x%03x in use.\n",
85 card->port, card->port + AVMB1_PORTLEN); 85 card->port, card->port + AVMB1_PORTLEN);
@@ -96,14 +96,14 @@ static int b1pci_probe(struct capicardparams *p, struct pci_dev *pdev)
96 } 96 }
97 b1_reset(card->port); 97 b1_reset(card->port);
98 b1_getrevision(card); 98 b1_getrevision(card);
99 99
100 retval = request_irq(card->irq, b1_interrupt, IRQF_SHARED, card->name, card); 100 retval = request_irq(card->irq, b1_interrupt, IRQF_SHARED, card->name, card);
101 if (retval) { 101 if (retval) {
102 printk(KERN_ERR "b1pci: unable to get IRQ %d.\n", card->irq); 102 printk(KERN_ERR "b1pci: unable to get IRQ %d.\n", card->irq);
103 retval = -EBUSY; 103 retval = -EBUSY;
104 goto err_release_region; 104 goto err_release_region;
105 } 105 }
106 106
107 cinfo->capi_ctrl.driver_name = "b1pci"; 107 cinfo->capi_ctrl.driver_name = "b1pci";
108 cinfo->capi_ctrl.driverdata = cinfo; 108 cinfo->capi_ctrl.driverdata = cinfo;
109 cinfo->capi_ctrl.register_appl = b1_register_appl; 109 cinfo->capi_ctrl.register_appl = b1_register_appl;
@@ -133,13 +133,13 @@ static int b1pci_probe(struct capicardparams *p, struct pci_dev *pdev)
133 pci_set_drvdata(pdev, card); 133 pci_set_drvdata(pdev, card);
134 return 0; 134 return 0;
135 135
136err_free_irq: 136 err_free_irq:
137 free_irq(card->irq, card); 137 free_irq(card->irq, card);
138err_release_region: 138 err_release_region:
139 release_region(card->port, AVMB1_PORTLEN); 139 release_region(card->port, AVMB1_PORTLEN);
140err_free: 140 err_free:
141 b1_free_card(card); 141 b1_free_card(card);
142err: 142 err:
143 return retval; 143 return retval;
144} 144}
145 145
@@ -193,7 +193,7 @@ static int b1pciv4_probe(struct capicardparams *p, struct pci_dev *pdev)
193 goto err; 193 goto err;
194 } 194 }
195 195
196 card->dma = avmcard_dma_alloc("b1pci", pdev, 2048 + 128, 2048 + 128); 196 card->dma = avmcard_dma_alloc("b1pci", pdev, 2048+128, 2048+128);
197 if (!card->dma) { 197 if (!card->dma) {
198 printk(KERN_WARNING "b1pci: dma alloc.\n"); 198 printk(KERN_WARNING "b1pci: dma alloc.\n");
199 retval = -ENOMEM; 199 retval = -ENOMEM;
@@ -267,17 +267,17 @@ static int b1pciv4_probe(struct capicardparams *p, struct pci_dev *pdev)
267 pci_set_drvdata(pdev, card); 267 pci_set_drvdata(pdev, card);
268 return 0; 268 return 0;
269 269
270err_free_irq: 270 err_free_irq:
271 free_irq(card->irq, card); 271 free_irq(card->irq, card);
272err_unmap: 272 err_unmap:
273 iounmap(card->mbase); 273 iounmap(card->mbase);
274err_release_region: 274 err_release_region:
275 release_region(card->port, AVMB1_PORTLEN); 275 release_region(card->port, AVMB1_PORTLEN);
276err_free_dma: 276 err_free_dma:
277 avmcard_dma_free(card->dma); 277 avmcard_dma_free(card->dma);
278err_free: 278 err_free:
279 b1_free_card(card); 279 b1_free_card(card);
280err: 280 err:
281 return retval; 281 return retval;
282 282
283} 283}
@@ -287,20 +287,20 @@ static void b1pciv4_remove(struct pci_dev *pdev)
287 avmcard *card = pci_get_drvdata(pdev); 287 avmcard *card = pci_get_drvdata(pdev);
288 avmctrl_info *cinfo = card->ctrlinfo; 288 avmctrl_info *cinfo = card->ctrlinfo;
289 289
290 b1dma_reset(card); 290 b1dma_reset(card);
291 291
292 detach_capi_ctr(&cinfo->capi_ctrl); 292 detach_capi_ctr(&cinfo->capi_ctrl);
293 free_irq(card->irq, card); 293 free_irq(card->irq, card);
294 iounmap(card->mbase); 294 iounmap(card->mbase);
295 release_region(card->port, AVMB1_PORTLEN); 295 release_region(card->port, AVMB1_PORTLEN);
296 avmcard_dma_free(card->dma); 296 avmcard_dma_free(card->dma);
297 b1_free_card(card); 297 b1_free_card(card);
298} 298}
299 299
300#endif /* CONFIG_ISDN_DRV_AVMB1_B1PCIV4 */ 300#endif /* CONFIG_ISDN_DRV_AVMB1_B1PCIV4 */
301 301
302static int b1pci_pci_probe(struct pci_dev *pdev, 302static int __devinit b1pci_pci_probe(struct pci_dev *pdev,
303 const struct pci_device_id *ent) 303 const struct pci_device_id *ent)
304{ 304{
305 struct capicardparams param; 305 struct capicardparams param;
306 int retval; 306 int retval;
@@ -326,7 +326,7 @@ static int b1pci_pci_probe(struct pci_dev *pdev,
326 retval = b1pci_probe(&param, pdev); 326 retval = b1pci_probe(&param, pdev);
327#endif 327#endif
328 if (retval != 0) { 328 if (retval != 0) {
329 printk(KERN_ERR "b1pci: no AVM-B1 V4 at i/o %#x, irq %d, mem %#x detected\n", 329 printk(KERN_ERR "b1pci: no AVM-B1 V4 at i/o %#x, irq %d, mem %#x detected\n",
330 param.port, param.irq, param.membase); 330 param.port, param.irq, param.membase);
331 } 331 }
332 } else { 332 } else {
@@ -337,14 +337,14 @@ static int b1pci_pci_probe(struct pci_dev *pdev,
337 param.port, param.irq); 337 param.port, param.irq);
338 retval = b1pci_probe(&param, pdev); 338 retval = b1pci_probe(&param, pdev);
339 if (retval != 0) { 339 if (retval != 0) {
340 printk(KERN_ERR "b1pci: no AVM-B1 at i/o %#x, irq %d detected\n", 340 printk(KERN_ERR "b1pci: no AVM-B1 at i/o %#x, irq %d detected\n",
341 param.port, param.irq); 341 param.port, param.irq);
342 } 342 }
343 } 343 }
344 return retval; 344 return retval;
345} 345}
346 346
347static void b1pci_pci_remove(struct pci_dev *pdev) 347static void __devexit b1pci_pci_remove(struct pci_dev *pdev)
348{ 348{
349#ifdef CONFIG_ISDN_DRV_AVMB1_B1PCIV4 349#ifdef CONFIG_ISDN_DRV_AVMB1_B1PCIV4
350 avmcard *card = pci_get_drvdata(pdev); 350 avmcard *card = pci_get_drvdata(pdev);
@@ -362,7 +362,7 @@ static struct pci_driver b1pci_pci_driver = {
362 .name = "b1pci", 362 .name = "b1pci",
363 .id_table = b1pci_pci_tbl, 363 .id_table = b1pci_pci_tbl,
364 .probe = b1pci_pci_probe, 364 .probe = b1pci_pci_probe,
365 .remove = b1pci_pci_remove, 365 .remove = __devexit_p(b1pci_pci_remove),
366}; 366};
367 367
368static struct capi_driver capi_driver_b1pci = { 368static struct capi_driver capi_driver_b1pci = {
@@ -385,7 +385,7 @@ static int __init b1pci_init(void)
385 if ((p = strchr(revision, ':')) != NULL && p[1]) { 385 if ((p = strchr(revision, ':')) != NULL && p[1]) {
386 strlcpy(rev, p + 2, 32); 386 strlcpy(rev, p + 2, 32);
387 if ((p = strchr(rev, '$')) != NULL && p > rev) 387 if ((p = strchr(rev, '$')) != NULL && p > rev)
388 *(p - 1) = 0; 388 *(p-1) = 0;
389 } else 389 } else
390 strcpy(rev, "1.0"); 390 strcpy(rev, "1.0");
391 391
diff --git a/drivers/isdn/hardware/avm/b1pcmcia.c b/drivers/isdn/hardware/avm/b1pcmcia.c
index 6b0d19d963d..d6391e0afee 100644
--- a/drivers/isdn/hardware/avm/b1pcmcia.c
+++ b/drivers/isdn/hardware/avm/b1pcmcia.c
@@ -1,9 +1,9 @@
1/* $Id: b1pcmcia.c,v 1.1.2.2 2004/01/16 21:09:27 keil Exp $ 1/* $Id: b1pcmcia.c,v 1.1.2.2 2004/01/16 21:09:27 keil Exp $
2 * 2 *
3 * Module for AVM B1/M1/M2 PCMCIA-card. 3 * Module for AVM B1/M1/M2 PCMCIA-card.
4 * 4 *
5 * Copyright 1999 by Carsten Paeth <calle@calle.de> 5 * Copyright 1999 by Carsten Paeth <calle@calle.de>
6 * 6 *
7 * This software may be used and distributed according to the terms 7 * This software may be used and distributed according to the terms
8 * of the GNU General Public License, incorporated herein by reference. 8 * of the GNU General Public License, incorporated herein by reference.
9 * 9 *
@@ -74,9 +74,9 @@ static int b1pcmcia_add_card(unsigned int port, unsigned irq,
74 cinfo = card->ctrlinfo; 74 cinfo = card->ctrlinfo;
75 75
76 switch (cardtype) { 76 switch (cardtype) {
77 case avm_m1: sprintf(card->name, "m1-%x", port); break; 77 case avm_m1: sprintf(card->name, "m1-%x", port); break;
78 case avm_m2: sprintf(card->name, "m2-%x", port); break; 78 case avm_m2: sprintf(card->name, "m2-%x", port); break;
79 default: sprintf(card->name, "b1pcmcia-%x", port); break; 79 default: sprintf(card->name, "b1pcmcia-%x", port); break;
80 } 80 }
81 card->port = port; 81 card->port = port;
82 card->irq = irq; 82 card->irq = irq;
@@ -117,9 +117,9 @@ static int b1pcmcia_add_card(unsigned int port, unsigned irq,
117 goto err_free_irq; 117 goto err_free_irq;
118 } 118 }
119 switch (cardtype) { 119 switch (cardtype) {
120 case avm_m1: cardname = "M1"; break; 120 case avm_m1: cardname = "M1"; break;
121 case avm_m2: cardname = "M2"; break; 121 case avm_m2: cardname = "M2"; break;
122 default: cardname = "B1 PCMCIA"; break; 122 default : cardname = "B1 PCMCIA"; break;
123 } 123 }
124 124
125 printk(KERN_INFO "b1pcmcia: AVM %s at i/o %#x, irq %d, revision %d\n", 125 printk(KERN_INFO "b1pcmcia: AVM %s at i/o %#x, irq %d, revision %d\n",
@@ -128,11 +128,11 @@ static int b1pcmcia_add_card(unsigned int port, unsigned irq,
128 list_add(&card->list, &cards); 128 list_add(&card->list, &cards);
129 return cinfo->capi_ctrl.cnr; 129 return cinfo->capi_ctrl.cnr;
130 130
131err_free_irq: 131 err_free_irq:
132 free_irq(card->irq, card); 132 free_irq(card->irq, card);
133err_free: 133 err_free:
134 b1_free_card(card); 134 b1_free_card(card);
135err: 135 err:
136 return retval; 136 return retval;
137} 137}
138 138
@@ -175,7 +175,7 @@ int b1pcmcia_delcard(unsigned int port, unsigned irq)
175{ 175{
176 struct list_head *l; 176 struct list_head *l;
177 avmcard *card; 177 avmcard *card;
178 178
179 list_for_each(l, &cards) { 179 list_for_each(l, &cards) {
180 card = list_entry(l, avmcard, list); 180 card = list_entry(l, avmcard, list);
181 if (card->port == port && card->irq == irq) { 181 if (card->port == port && card->irq == irq) {
@@ -204,7 +204,7 @@ static int __init b1pcmcia_init(void)
204 if ((p = strchr(revision, ':')) != NULL && p[1]) { 204 if ((p = strchr(revision, ':')) != NULL && p[1]) {
205 strlcpy(rev, p + 2, 32); 205 strlcpy(rev, p + 2, 32);
206 if ((p = strchr(rev, '$')) != NULL && p > rev) 206 if ((p = strchr(rev, '$')) != NULL && p > rev)
207 *(p - 1) = 0; 207 *(p-1) = 0;
208 } else 208 } else
209 strcpy(rev, "1.0"); 209 strcpy(rev, "1.0");
210 210
diff --git a/drivers/isdn/hardware/avm/c4.c b/drivers/isdn/hardware/avm/c4.c
index 1d7fc44e3ee..d3530f6e811 100644
--- a/drivers/isdn/hardware/avm/c4.c
+++ b/drivers/isdn/hardware/avm/c4.c
@@ -1,7 +1,7 @@
1/* $Id: c4.c,v 1.1.2.2 2004/01/16 21:09:27 keil Exp $ 1/* $Id: c4.c,v 1.1.2.2 2004/01/16 21:09:27 keil Exp $
2 * 2 *
3 * Module for AVM C4 & C2 card. 3 * Module for AVM C4 & C2 card.
4 * 4 *
5 * Copyright 1999 by Carsten Paeth <calle@calle.de> 5 * Copyright 1999 by Carsten Paeth <calle@calle.de>
6 * 6 *
7 * This software may be used and distributed according to the terms 7 * This software may be used and distributed according to the terms
@@ -40,7 +40,7 @@ static char *revision = "$Revision: 1.1.2.2 $";
40 40
41/* ------------------------------------------------------------- */ 41/* ------------------------------------------------------------- */
42 42
43static bool suppress_pollack; 43static int suppress_pollack;
44 44
45static struct pci_device_id c4_pci_tbl[] = { 45static struct pci_device_id c4_pci_tbl[] = {
46 { PCI_VENDOR_ID_DEC, PCI_DEVICE_ID_DEC_21285, PCI_VENDOR_ID_AVM, PCI_DEVICE_ID_AVM_C4, 0, 0, (unsigned long)4 }, 46 { PCI_VENDOR_ID_DEC, PCI_DEVICE_ID_DEC_21285, PCI_VENDOR_ID_AVM, PCI_DEVICE_ID_AVM_C4, 0, 0, (unsigned long)4 },
@@ -129,8 +129,8 @@ static void c4_dispatch_tx(avmcard *card);
129 129
130/* ------------------------------------------------------------- */ 130/* ------------------------------------------------------------- */
131 131
132#define RESET_TIMEOUT (15 * HZ) /* 15 sec */ 132#define RESET_TIMEOUT (15*HZ) /* 15 sec */
133#define PEEK_POKE_TIMEOUT (HZ / 10) /* 0.1 sec */ 133#define PEEK_POKE_TIMEOUT (HZ/10) /* 0.1 sec */
134 134
135/* ------------------------------------------------------------- */ 135/* ------------------------------------------------------------- */
136 136
@@ -148,7 +148,7 @@ static inline int wait_for_doorbell(avmcard *card, unsigned long t)
148 unsigned long stop; 148 unsigned long stop;
149 149
150 stop = jiffies + t; 150 stop = jiffies + t;
151 while (c4inmeml(card->mbase + DOORBELL) != 0xffffffff) { 151 while (c4inmeml(card->mbase+DOORBELL) != 0xffffffff) {
152 if (!time_before(jiffies, stop)) 152 if (!time_before(jiffies, stop))
153 return -1; 153 return -1;
154 mb(); 154 mb();
@@ -159,40 +159,40 @@ static inline int wait_for_doorbell(avmcard *card, unsigned long t)
159static int c4_poke(avmcard *card, unsigned long off, unsigned long value) 159static int c4_poke(avmcard *card, unsigned long off, unsigned long value)
160{ 160{
161 161
162 if (wait_for_doorbell(card, HZ / 10) < 0) 162 if (wait_for_doorbell(card, HZ/10) < 0)
163 return -1; 163 return -1;
164
165 c4outmeml(card->mbase+MBOX_PEEK_POKE, off);
166 c4outmeml(card->mbase+DOORBELL, DBELL_ADDR);
164 167
165 c4outmeml(card->mbase + MBOX_PEEK_POKE, off); 168 if (wait_for_doorbell(card, HZ/10) < 0)
166 c4outmeml(card->mbase + DOORBELL, DBELL_ADDR);
167
168 if (wait_for_doorbell(card, HZ / 10) < 0)
169 return -1; 169 return -1;
170 170
171 c4outmeml(card->mbase + MBOX_PEEK_POKE, value); 171 c4outmeml(card->mbase+MBOX_PEEK_POKE, value);
172 c4outmeml(card->mbase + DOORBELL, DBELL_DATA | DBELL_ADDR); 172 c4outmeml(card->mbase+DOORBELL, DBELL_DATA | DBELL_ADDR);
173 173
174 return 0; 174 return 0;
175} 175}
176 176
177static int c4_peek(avmcard *card, unsigned long off, unsigned long *valuep) 177static int c4_peek(avmcard *card, unsigned long off, unsigned long *valuep)
178{ 178{
179 if (wait_for_doorbell(card, HZ / 10) < 0) 179 if (wait_for_doorbell(card, HZ/10) < 0)
180 return -1; 180 return -1;
181 181
182 c4outmeml(card->mbase + MBOX_PEEK_POKE, off); 182 c4outmeml(card->mbase+MBOX_PEEK_POKE, off);
183 c4outmeml(card->mbase + DOORBELL, DBELL_RNWR | DBELL_ADDR); 183 c4outmeml(card->mbase+DOORBELL, DBELL_RNWR | DBELL_ADDR);
184 184
185 if (wait_for_doorbell(card, HZ / 10) < 0) 185 if (wait_for_doorbell(card, HZ/10) < 0)
186 return -1; 186 return -1;
187 187
188 *valuep = c4inmeml(card->mbase + MBOX_PEEK_POKE); 188 *valuep = c4inmeml(card->mbase+MBOX_PEEK_POKE);
189 189
190 return 0; 190 return 0;
191} 191}
192 192
193/* ------------------------------------------------------------- */ 193/* ------------------------------------------------------------- */
194 194
195static int c4_load_t4file(avmcard *card, capiloaddatapart *t4file) 195static int c4_load_t4file(avmcard *card, capiloaddatapart * t4file)
196{ 196{
197 u32 val; 197 u32 val;
198 unsigned char *dp; 198 unsigned char *dp;
@@ -202,7 +202,7 @@ static int c4_load_t4file(avmcard *card, capiloaddatapart *t4file)
202 dp = t4file->data; 202 dp = t4file->data;
203 left = t4file->len; 203 left = t4file->len;
204 while (left >= sizeof(u32)) { 204 while (left >= sizeof(u32)) {
205 if (t4file->user) { 205 if (t4file->user) {
206 if (copy_from_user(&val, dp, sizeof(val))) 206 if (copy_from_user(&val, dp, sizeof(val)))
207 return -EFAULT; 207 return -EFAULT;
208 } else { 208 } else {
@@ -210,7 +210,7 @@ static int c4_load_t4file(avmcard *card, capiloaddatapart *t4file)
210 } 210 }
211 if (c4_poke(card, loadoff, val)) { 211 if (c4_poke(card, loadoff, val)) {
212 printk(KERN_ERR "%s: corrupted firmware file ?\n", 212 printk(KERN_ERR "%s: corrupted firmware file ?\n",
213 card->name); 213 card->name);
214 return -EIO; 214 return -EIO;
215 } 215 }
216 left -= sizeof(u32); 216 left -= sizeof(u32);
@@ -227,7 +227,7 @@ static int c4_load_t4file(avmcard *card, capiloaddatapart *t4file)
227 } 227 }
228 if (c4_poke(card, loadoff, val)) { 228 if (c4_poke(card, loadoff, val)) {
229 printk(KERN_ERR "%s: corrupted firmware file ?\n", 229 printk(KERN_ERR "%s: corrupted firmware file ?\n",
230 card->name); 230 card->name);
231 return -EIO; 231 return -EIO;
232 } 232 }
233 } 233 }
@@ -297,13 +297,13 @@ static void c4_reset(avmcard *card)
297{ 297{
298 unsigned long stop; 298 unsigned long stop;
299 299
300 c4outmeml(card->mbase + DOORBELL, DBELL_RESET_ARM); 300 c4outmeml(card->mbase+DOORBELL, DBELL_RESET_ARM);
301 301
302 stop = jiffies + HZ * 10; 302 stop = jiffies + HZ*10;
303 while (c4inmeml(card->mbase + DOORBELL) != 0xffffffff) { 303 while (c4inmeml(card->mbase+DOORBELL) != 0xffffffff) {
304 if (!time_before(jiffies, stop)) 304 if (!time_before(jiffies, stop))
305 return; 305 return;
306 c4outmeml(card->mbase + DOORBELL, DBELL_ADDR); 306 c4outmeml(card->mbase+DOORBELL, DBELL_ADDR);
307 mb(); 307 mb();
308 } 308 }
309 309
@@ -317,89 +317,89 @@ static int c4_detect(avmcard *card)
317{ 317{
318 unsigned long stop, dummy; 318 unsigned long stop, dummy;
319 319
320 c4outmeml(card->mbase + PCI_OUT_INT_MASK, 0x0c); 320 c4outmeml(card->mbase+PCI_OUT_INT_MASK, 0x0c);
321 if (c4inmeml(card->mbase + PCI_OUT_INT_MASK) != 0x0c) 321 if (c4inmeml(card->mbase+PCI_OUT_INT_MASK) != 0x0c)
322 return 1; 322 return 1;
323 323
324 c4outmeml(card->mbase + DOORBELL, DBELL_RESET_ARM); 324 c4outmeml(card->mbase+DOORBELL, DBELL_RESET_ARM);
325 325
326 stop = jiffies + HZ * 10; 326 stop = jiffies + HZ*10;
327 while (c4inmeml(card->mbase + DOORBELL) != 0xffffffff) { 327 while (c4inmeml(card->mbase+DOORBELL) != 0xffffffff) {
328 if (!time_before(jiffies, stop)) 328 if (!time_before(jiffies, stop))
329 return 2; 329 return 2;
330 c4outmeml(card->mbase + DOORBELL, DBELL_ADDR); 330 c4outmeml(card->mbase+DOORBELL, DBELL_ADDR);
331 mb(); 331 mb();
332 } 332 }
333 333
334 c4_poke(card, DC21285_ARMCSR_BASE + CHAN_1_CONTROL, 0); 334 c4_poke(card, DC21285_ARMCSR_BASE + CHAN_1_CONTROL, 0);
335 c4_poke(card, DC21285_ARMCSR_BASE + CHAN_2_CONTROL, 0); 335 c4_poke(card, DC21285_ARMCSR_BASE + CHAN_2_CONTROL, 0);
336 336
337 c4outmeml(card->mbase + MAILBOX_0, 0x55aa55aa); 337 c4outmeml(card->mbase+MAILBOX_0, 0x55aa55aa);
338 if (c4inmeml(card->mbase + MAILBOX_0) != 0x55aa55aa) return 3; 338 if (c4inmeml(card->mbase+MAILBOX_0) != 0x55aa55aa) return 3;
339 339
340 c4outmeml(card->mbase + MAILBOX_0, 0xaa55aa55); 340 c4outmeml(card->mbase+MAILBOX_0, 0xaa55aa55);
341 if (c4inmeml(card->mbase + MAILBOX_0) != 0xaa55aa55) return 4; 341 if (c4inmeml(card->mbase+MAILBOX_0) != 0xaa55aa55) return 4;
342 342
343 if (c4_poke(card, DC21285_ARMCSR_BASE + DBELL_SA_MASK, 0)) return 5; 343 if (c4_poke(card, DC21285_ARMCSR_BASE+DBELL_SA_MASK, 0)) return 5;
344 if (c4_poke(card, DC21285_ARMCSR_BASE + DBELL_PCI_MASK, 0)) return 6; 344 if (c4_poke(card, DC21285_ARMCSR_BASE+DBELL_PCI_MASK, 0)) return 6;
345 if (c4_poke(card, DC21285_ARMCSR_BASE + SA_CONTROL, SA_CTL_ALLRIGHT)) 345 if (c4_poke(card, DC21285_ARMCSR_BASE+SA_CONTROL, SA_CTL_ALLRIGHT))
346 return 7; 346 return 7;
347 if (c4_poke(card, DC21285_ARMCSR_BASE + XBUS_CYCLE, INIT_XBUS_CYCLE)) 347 if (c4_poke(card, DC21285_ARMCSR_BASE+XBUS_CYCLE, INIT_XBUS_CYCLE))
348 return 8; 348 return 8;
349 if (c4_poke(card, DC21285_ARMCSR_BASE + XBUS_STROBE, INIT_XBUS_STROBE)) 349 if (c4_poke(card, DC21285_ARMCSR_BASE+XBUS_STROBE, INIT_XBUS_STROBE))
350 return 8; 350 return 8;
351 if (c4_poke(card, DC21285_ARMCSR_BASE + DRAM_TIMING, 0)) return 9; 351 if (c4_poke(card, DC21285_ARMCSR_BASE+DRAM_TIMING, 0)) return 9;
352 352
353 mdelay(1); 353 mdelay(1);
354 354
355 if (c4_peek(card, DC21285_DRAM_A0MR, &dummy)) return 10; 355 if (c4_peek(card, DC21285_DRAM_A0MR, &dummy)) return 10;
356 if (c4_peek(card, DC21285_DRAM_A1MR, &dummy)) return 11; 356 if (c4_peek(card, DC21285_DRAM_A1MR, &dummy)) return 11;
357 if (c4_peek(card, DC21285_DRAM_A2MR, &dummy)) return 12; 357 if (c4_peek(card, DC21285_DRAM_A2MR, &dummy)) return 12;
358 if (c4_peek(card, DC21285_DRAM_A3MR, &dummy)) return 13; 358 if (c4_peek(card, DC21285_DRAM_A3MR, &dummy)) return 13;
359 359
360 if (c4_poke(card, DC21285_DRAM_A0MR + CAS_OFFSET, 0)) return 14; 360 if (c4_poke(card, DC21285_DRAM_A0MR+CAS_OFFSET, 0)) return 14;
361 if (c4_poke(card, DC21285_DRAM_A1MR + CAS_OFFSET, 0)) return 15; 361 if (c4_poke(card, DC21285_DRAM_A1MR+CAS_OFFSET, 0)) return 15;
362 if (c4_poke(card, DC21285_DRAM_A2MR + CAS_OFFSET, 0)) return 16; 362 if (c4_poke(card, DC21285_DRAM_A2MR+CAS_OFFSET, 0)) return 16;
363 if (c4_poke(card, DC21285_DRAM_A3MR + CAS_OFFSET, 0)) return 17; 363 if (c4_poke(card, DC21285_DRAM_A3MR+CAS_OFFSET, 0)) return 17;
364 364
365 mdelay(1); 365 mdelay(1);
366 366
367 if (c4_poke(card, DC21285_ARMCSR_BASE + DRAM_TIMING, DRAM_TIMING_DEF)) 367 if (c4_poke(card, DC21285_ARMCSR_BASE+DRAM_TIMING, DRAM_TIMING_DEF))
368 return 18; 368 return 18;
369 369
370 if (c4_poke(card, DC21285_ARMCSR_BASE + DRAM_ADDR_SIZE_0, DRAM_AD_SZ_DEF0)) 370 if (c4_poke(card, DC21285_ARMCSR_BASE+DRAM_ADDR_SIZE_0,DRAM_AD_SZ_DEF0))
371 return 19; 371 return 19;
372 if (c4_poke(card, DC21285_ARMCSR_BASE + DRAM_ADDR_SIZE_1, DRAM_AD_SZ_NULL)) 372 if (c4_poke(card, DC21285_ARMCSR_BASE+DRAM_ADDR_SIZE_1,DRAM_AD_SZ_NULL))
373 return 20; 373 return 20;
374 if (c4_poke(card, DC21285_ARMCSR_BASE + DRAM_ADDR_SIZE_2, DRAM_AD_SZ_NULL)) 374 if (c4_poke(card, DC21285_ARMCSR_BASE+DRAM_ADDR_SIZE_2,DRAM_AD_SZ_NULL))
375 return 21; 375 return 21;
376 if (c4_poke(card, DC21285_ARMCSR_BASE + DRAM_ADDR_SIZE_3, DRAM_AD_SZ_NULL)) 376 if (c4_poke(card, DC21285_ARMCSR_BASE+DRAM_ADDR_SIZE_3,DRAM_AD_SZ_NULL))
377 return 22; 377 return 22;
378 378
379 /* Transputer test */ 379 /* Transputer test */
380 380
381 if (c4_poke(card, 0x000000, 0x11111111) 381 if ( c4_poke(card, 0x000000, 0x11111111)
382 || c4_poke(card, 0x400000, 0x22222222) 382 || c4_poke(card, 0x400000, 0x22222222)
383 || c4_poke(card, 0x800000, 0x33333333) 383 || c4_poke(card, 0x800000, 0x33333333)
384 || c4_poke(card, 0xC00000, 0x44444444)) 384 || c4_poke(card, 0xC00000, 0x44444444))
385 return 23; 385 return 23;
386 386
387 if (c4_peek(card, 0x000000, &dummy) || dummy != 0x11111111 387 if ( c4_peek(card, 0x000000, &dummy) || dummy != 0x11111111
388 || c4_peek(card, 0x400000, &dummy) || dummy != 0x22222222 388 || c4_peek(card, 0x400000, &dummy) || dummy != 0x22222222
389 || c4_peek(card, 0x800000, &dummy) || dummy != 0x33333333 389 || c4_peek(card, 0x800000, &dummy) || dummy != 0x33333333
390 || c4_peek(card, 0xC00000, &dummy) || dummy != 0x44444444) 390 || c4_peek(card, 0xC00000, &dummy) || dummy != 0x44444444)
391 return 24; 391 return 24;
392 392
393 if (c4_poke(card, 0x000000, 0x55555555) 393 if ( c4_poke(card, 0x000000, 0x55555555)
394 || c4_poke(card, 0x400000, 0x66666666) 394 || c4_poke(card, 0x400000, 0x66666666)
395 || c4_poke(card, 0x800000, 0x77777777) 395 || c4_poke(card, 0x800000, 0x77777777)
396 || c4_poke(card, 0xC00000, 0x88888888)) 396 || c4_poke(card, 0xC00000, 0x88888888))
397 return 25; 397 return 25;
398 398
399 if (c4_peek(card, 0x000000, &dummy) || dummy != 0x55555555 399 if ( c4_peek(card, 0x000000, &dummy) || dummy != 0x55555555
400 || c4_peek(card, 0x400000, &dummy) || dummy != 0x66666666 400 || c4_peek(card, 0x400000, &dummy) || dummy != 0x66666666
401 || c4_peek(card, 0x800000, &dummy) || dummy != 0x77777777 401 || c4_peek(card, 0x800000, &dummy) || dummy != 0x77777777
402 || c4_peek(card, 0xC00000, &dummy) || dummy != 0x88888888) 402 || c4_peek(card, 0xC00000, &dummy) || dummy != 0x88888888)
403 return 26; 403 return 26;
404 404
405 return 0; 405 return 0;
@@ -451,26 +451,26 @@ static void c4_dispatch_tx(avmcard *card)
451 printk(KERN_DEBUG "%s: tx put msg len=%d\n", card->name, txlen); 451 printk(KERN_DEBUG "%s: tx put msg len=%d\n", card->name, txlen);
452#endif 452#endif
453 } else { 453 } else {
454 txlen = skb->len - 2; 454 txlen = skb->len-2;
455#ifdef AVM_C4_POLLDEBUG 455#ifdef AVM_C4_POLLDEBUG
456 if (skb->data[2] == SEND_POLLACK) 456 if (skb->data[2] == SEND_POLLACK)
457 printk(KERN_INFO "%s: ack to c4\n", card->name); 457 printk(KERN_INFO "%s: ack to c4\n", card->name);
458#endif 458#endif
459#ifdef AVM_C4_DEBUG 459#ifdef AVM_C4_DEBUG
460 printk(KERN_DEBUG "%s: tx put 0x%x len=%d\n", 460 printk(KERN_DEBUG "%s: tx put 0x%x len=%d\n",
461 card->name, skb->data[2], txlen); 461 card->name, skb->data[2], txlen);
462#endif 462#endif
463 skb_copy_from_linear_data_offset(skb, 2, dma->sendbuf.dmabuf, 463 skb_copy_from_linear_data_offset(skb, 2, dma->sendbuf.dmabuf,
464 skb->len - 2); 464 skb->len - 2);
465 } 465 }
466 txlen = (txlen + 3) & ~3; 466 txlen = (txlen + 3) & ~3;
467 467
468 c4outmeml(card->mbase + MBOX_DOWN_ADDR, dma->sendbuf.dmaaddr); 468 c4outmeml(card->mbase+MBOX_DOWN_ADDR, dma->sendbuf.dmaaddr);
469 c4outmeml(card->mbase + MBOX_DOWN_LEN, txlen); 469 c4outmeml(card->mbase+MBOX_DOWN_LEN, txlen);
470 470
471 card->csr |= DBELL_DOWN_ARM; 471 card->csr |= DBELL_DOWN_ARM;
472 472
473 c4outmeml(card->mbase + DOORBELL, DBELL_DOWN_ARM); 473 c4outmeml(card->mbase+DOORBELL, DBELL_DOWN_ARM);
474 474
475 dev_kfree_skb_any(skb); 475 dev_kfree_skb_any(skb);
476} 476}
@@ -485,7 +485,7 @@ static void queue_pollack(avmcard *card)
485 skb = alloc_skb(3, GFP_ATOMIC); 485 skb = alloc_skb(3, GFP_ATOMIC);
486 if (!skb) { 486 if (!skb) {
487 printk(KERN_CRIT "%s: no memory, lost poll ack\n", 487 printk(KERN_CRIT "%s: no memory, lost poll ack\n",
488 card->name); 488 card->name);
489 return; 489 return;
490 } 490 }
491 p = skb->data; 491 p = skb->data;
@@ -514,9 +514,9 @@ static void c4_handle_rx(avmcard *card)
514 514
515#ifdef AVM_C4_DEBUG 515#ifdef AVM_C4_DEBUG
516 printk(KERN_DEBUG "%s: rx 0x%x len=%lu\n", card->name, 516 printk(KERN_DEBUG "%s: rx 0x%x len=%lu\n", card->name,
517 b1cmd, (unsigned long)dma->recvlen); 517 b1cmd, (unsigned long)dma->recvlen);
518#endif 518#endif
519 519
520 switch (b1cmd) { 520 switch (b1cmd) {
521 case RECEIVE_DATA_B3_IND: 521 case RECEIVE_DATA_B3_IND:
522 522
@@ -528,13 +528,13 @@ static void c4_handle_rx(avmcard *card)
528 ctrl = &card->ctrlinfo[cidx].capi_ctrl; 528 ctrl = &card->ctrlinfo[cidx].capi_ctrl;
529 529
530 if (MsgLen < 30) { /* not CAPI 64Bit */ 530 if (MsgLen < 30) { /* not CAPI 64Bit */
531 memset(card->msgbuf + MsgLen, 0, 30 - MsgLen); 531 memset(card->msgbuf+MsgLen, 0, 30-MsgLen);
532 MsgLen = 30; 532 MsgLen = 30;
533 CAPIMSG_SETLEN(card->msgbuf, 30); 533 CAPIMSG_SETLEN(card->msgbuf, 30);
534 } 534 }
535 if (!(skb = alloc_skb(DataB3Len + MsgLen, GFP_ATOMIC))) { 535 if (!(skb = alloc_skb(DataB3Len+MsgLen, GFP_ATOMIC))) {
536 printk(KERN_ERR "%s: incoming packet dropped\n", 536 printk(KERN_ERR "%s: incoming packet dropped\n",
537 card->name); 537 card->name);
538 } else { 538 } else {
539 memcpy(skb_put(skb, MsgLen), card->msgbuf, MsgLen); 539 memcpy(skb_put(skb, MsgLen), card->msgbuf, MsgLen);
540 memcpy(skb_put(skb, DataB3Len), card->databuf, DataB3Len); 540 memcpy(skb_put(skb, DataB3Len), card->databuf, DataB3Len);
@@ -553,7 +553,7 @@ static void c4_handle_rx(avmcard *card)
553 553
554 if (!(skb = alloc_skb(MsgLen, GFP_ATOMIC))) { 554 if (!(skb = alloc_skb(MsgLen, GFP_ATOMIC))) {
555 printk(KERN_ERR "%s: incoming packet dropped\n", 555 printk(KERN_ERR "%s: incoming packet dropped\n",
556 card->name); 556 card->name);
557 } else { 557 } else {
558 memcpy(skb_put(skb, MsgLen), card->msgbuf, MsgLen); 558 memcpy(skb_put(skb, MsgLen), card->msgbuf, MsgLen);
559 if (CAPIMSG_CMD(skb->data) == CAPI_DATA_B3_CONF) 559 if (CAPIMSG_CMD(skb->data) == CAPI_DATA_B3_CONF)
@@ -570,7 +570,7 @@ static void c4_handle_rx(avmcard *card)
570 ApplId = _get_word(&p); 570 ApplId = _get_word(&p);
571 NCCI = _get_word(&p); 571 NCCI = _get_word(&p);
572 WindowSize = _get_word(&p); 572 WindowSize = _get_word(&p);
573 cidx = (NCCI & 0x7f) - card->cardnr; 573 cidx = (NCCI&0x7f) - card->cardnr;
574 if (cidx >= card->nlogcontr) cidx = 0; 574 if (cidx >= card->nlogcontr) cidx = 0;
575 575
576 capilib_new_ncci(&card->ctrlinfo[cidx].ncci_head, ApplId, NCCI, WindowSize); 576 capilib_new_ncci(&card->ctrlinfo[cidx].ncci_head, ApplId, NCCI, WindowSize);
@@ -583,7 +583,7 @@ static void c4_handle_rx(avmcard *card)
583 NCCI = _get_word(&p); 583 NCCI = _get_word(&p);
584 584
585 if (NCCI != 0xffffffff) { 585 if (NCCI != 0xffffffff) {
586 cidx = (NCCI & 0x7f) - card->cardnr; 586 cidx = (NCCI&0x7f) - card->cardnr;
587 if (cidx >= card->nlogcontr) cidx = 0; 587 if (cidx >= card->nlogcontr) cidx = 0;
588 capilib_free_ncci(&card->ctrlinfo[cidx].ncci_head, ApplId, NCCI); 588 capilib_free_ncci(&card->ctrlinfo[cidx].ncci_head, ApplId, NCCI);
589 } 589 }
@@ -595,14 +595,14 @@ static void c4_handle_rx(avmcard *card)
595#endif 595#endif
596 if (!suppress_pollack) 596 if (!suppress_pollack)
597 queue_pollack(card); 597 queue_pollack(card);
598 for (cidx = 0; cidx < card->nr_controllers; cidx++) { 598 for (cidx=0; cidx < card->nr_controllers; cidx++) {
599 ctrl = &card->ctrlinfo[cidx].capi_ctrl; 599 ctrl = &card->ctrlinfo[cidx].capi_ctrl;
600 capi_ctr_resume_output(ctrl); 600 capi_ctr_resume_output(ctrl);
601 } 601 }
602 break; 602 break;
603 603
604 case RECEIVE_STOP: 604 case RECEIVE_STOP:
605 for (cidx = 0; cidx < card->nr_controllers; cidx++) { 605 for (cidx=0; cidx < card->nr_controllers; cidx++) {
606 ctrl = &card->ctrlinfo[cidx].capi_ctrl; 606 ctrl = &card->ctrlinfo[cidx].capi_ctrl;
607 capi_ctr_suspend_output(ctrl); 607 capi_ctr_suspend_output(ctrl);
608 } 608 }
@@ -610,14 +610,14 @@ static void c4_handle_rx(avmcard *card)
610 610
611 case RECEIVE_INIT: 611 case RECEIVE_INIT:
612 612
613 cidx = card->nlogcontr; 613 cidx = card->nlogcontr;
614 if (cidx >= card->nr_controllers) { 614 if (cidx >= card->nr_controllers) {
615 printk(KERN_ERR "%s: card with %d controllers ??\n", 615 printk(KERN_ERR "%s: card with %d controllers ??\n",
616 card->name, cidx + 1); 616 card->name, cidx+1);
617 break; 617 break;
618 } 618 }
619 card->nlogcontr++; 619 card->nlogcontr++;
620 cinfo = &card->ctrlinfo[cidx]; 620 cinfo = &card->ctrlinfo[cidx];
621 ctrl = &cinfo->capi_ctrl; 621 ctrl = &cinfo->capi_ctrl;
622 cinfo->versionlen = _get_slice(&p, cinfo->versionbuf); 622 cinfo->versionlen = _get_slice(&p, cinfo->versionbuf);
623 b1_parse_version(cinfo); 623 b1_parse_version(cinfo);
@@ -632,23 +632,23 @@ static void c4_handle_rx(avmcard *card)
632 ApplId = (unsigned) _get_word(&p); 632 ApplId = (unsigned) _get_word(&p);
633 MsgLen = _get_slice(&p, card->msgbuf); 633 MsgLen = _get_slice(&p, card->msgbuf);
634 card->msgbuf[MsgLen] = 0; 634 card->msgbuf[MsgLen] = 0;
635 while (MsgLen > 0 635 while ( MsgLen > 0
636 && (card->msgbuf[MsgLen - 1] == '\n' 636 && ( card->msgbuf[MsgLen-1] == '\n'
637 || card->msgbuf[MsgLen - 1] == '\r')) { 637 || card->msgbuf[MsgLen-1] == '\r')) {
638 card->msgbuf[MsgLen - 1] = 0; 638 card->msgbuf[MsgLen-1] = 0;
639 MsgLen--; 639 MsgLen--;
640 } 640 }
641 printk(KERN_INFO "%s: task %d \"%s\" ready.\n", 641 printk(KERN_INFO "%s: task %d \"%s\" ready.\n",
642 card->name, ApplId, card->msgbuf); 642 card->name, ApplId, card->msgbuf);
643 break; 643 break;
644 644
645 case RECEIVE_DEBUGMSG: 645 case RECEIVE_DEBUGMSG:
646 MsgLen = _get_slice(&p, card->msgbuf); 646 MsgLen = _get_slice(&p, card->msgbuf);
647 card->msgbuf[MsgLen] = 0; 647 card->msgbuf[MsgLen] = 0;
648 while (MsgLen > 0 648 while ( MsgLen > 0
649 && (card->msgbuf[MsgLen - 1] == '\n' 649 && ( card->msgbuf[MsgLen-1] == '\n'
650 || card->msgbuf[MsgLen - 1] == '\r')) { 650 || card->msgbuf[MsgLen-1] == '\r')) {
651 card->msgbuf[MsgLen - 1] = 0; 651 card->msgbuf[MsgLen-1] = 0;
652 MsgLen--; 652 MsgLen--;
653 } 653 }
654 printk(KERN_INFO "%s: DEBUG: %s\n", card->name, card->msgbuf); 654 printk(KERN_INFO "%s: DEBUG: %s\n", card->name, card->msgbuf);
@@ -656,7 +656,7 @@ static void c4_handle_rx(avmcard *card)
656 656
657 default: 657 default:
658 printk(KERN_ERR "%s: c4_interrupt: 0x%x ???\n", 658 printk(KERN_ERR "%s: c4_interrupt: 0x%x ???\n",
659 card->name, b1cmd); 659 card->name, b1cmd);
660 return; 660 return;
661 } 661 }
662} 662}
@@ -669,16 +669,16 @@ static irqreturn_t c4_handle_interrupt(avmcard *card)
669 u32 status; 669 u32 status;
670 670
671 spin_lock_irqsave(&card->lock, flags); 671 spin_lock_irqsave(&card->lock, flags);
672 status = c4inmeml(card->mbase + DOORBELL); 672 status = c4inmeml(card->mbase+DOORBELL);
673 673
674 if (status & DBELL_RESET_HOST) { 674 if (status & DBELL_RESET_HOST) {
675 u_int i; 675 u_int i;
676 c4outmeml(card->mbase + PCI_OUT_INT_MASK, 0x0c); 676 c4outmeml(card->mbase+PCI_OUT_INT_MASK, 0x0c);
677 spin_unlock_irqrestore(&card->lock, flags); 677 spin_unlock_irqrestore(&card->lock, flags);
678 if (card->nlogcontr == 0) 678 if (card->nlogcontr == 0)
679 return IRQ_HANDLED; 679 return IRQ_HANDLED;
680 printk(KERN_ERR "%s: unexpected reset\n", card->name); 680 printk(KERN_ERR "%s: unexpected reset\n", card->name);
681 for (i = 0; i < card->nr_controllers; i++) { 681 for (i=0; i < card->nr_controllers; i++) {
682 avmctrl_info *cinfo = &card->ctrlinfo[i]; 682 avmctrl_info *cinfo = &card->ctrlinfo[i];
683 memset(cinfo->version, 0, sizeof(cinfo->version)); 683 memset(cinfo->version, 0, sizeof(cinfo->version));
684 spin_lock_irqsave(&card->lock, flags); 684 spin_lock_irqsave(&card->lock, flags);
@@ -695,23 +695,23 @@ static irqreturn_t c4_handle_interrupt(avmcard *card)
695 spin_unlock_irqrestore(&card->lock, flags); 695 spin_unlock_irqrestore(&card->lock, flags);
696 return IRQ_HANDLED; 696 return IRQ_HANDLED;
697 } 697 }
698 c4outmeml(card->mbase + DOORBELL, status); 698 c4outmeml(card->mbase+DOORBELL, status);
699 699
700 if ((status & DBELL_UP_HOST) != 0) { 700 if ((status & DBELL_UP_HOST) != 0) {
701 card->dma->recvlen = c4inmeml(card->mbase + MBOX_UP_LEN); 701 card->dma->recvlen = c4inmeml(card->mbase+MBOX_UP_LEN);
702 c4outmeml(card->mbase + MBOX_UP_LEN, 0); 702 c4outmeml(card->mbase+MBOX_UP_LEN, 0);
703 c4_handle_rx(card); 703 c4_handle_rx(card);
704 card->dma->recvlen = 0; 704 card->dma->recvlen = 0;
705 c4outmeml(card->mbase + MBOX_UP_LEN, card->dma->recvbuf.size); 705 c4outmeml(card->mbase+MBOX_UP_LEN, card->dma->recvbuf.size);
706 c4outmeml(card->mbase + DOORBELL, DBELL_UP_ARM); 706 c4outmeml(card->mbase+DOORBELL, DBELL_UP_ARM);
707 } 707 }
708 708
709 if ((status & DBELL_DOWN_HOST) != 0) { 709 if ((status & DBELL_DOWN_HOST) != 0) {
710 card->csr &= ~DBELL_DOWN_ARM; 710 card->csr &= ~DBELL_DOWN_ARM;
711 c4_dispatch_tx(card); 711 c4_dispatch_tx(card);
712 } else if (card->csr & DBELL_DOWN_HOST) { 712 } else if (card->csr & DBELL_DOWN_HOST) {
713 if (c4inmeml(card->mbase + MBOX_DOWN_LEN) == 0) { 713 if (c4inmeml(card->mbase+MBOX_DOWN_LEN) == 0) {
714 card->csr &= ~DBELL_DOWN_ARM; 714 card->csr &= ~DBELL_DOWN_ARM;
715 c4_dispatch_tx(card); 715 c4_dispatch_tx(card);
716 } 716 }
717 } 717 }
@@ -737,7 +737,7 @@ static void c4_send_init(avmcard *card)
737 skb = alloc_skb(15, GFP_ATOMIC); 737 skb = alloc_skb(15, GFP_ATOMIC);
738 if (!skb) { 738 if (!skb) {
739 printk(KERN_CRIT "%s: no memory, lost register appl.\n", 739 printk(KERN_CRIT "%s: no memory, lost register appl.\n",
740 card->name); 740 card->name);
741 return; 741 return;
742 } 742 }
743 p = skb->data; 743 p = skb->data;
@@ -745,7 +745,7 @@ static void c4_send_init(avmcard *card)
745 _put_byte(&p, 0); 745 _put_byte(&p, 0);
746 _put_byte(&p, SEND_INIT); 746 _put_byte(&p, SEND_INIT);
747 _put_word(&p, CAPI_MAXAPPL); 747 _put_word(&p, CAPI_MAXAPPL);
748 _put_word(&p, AVM_NCCI_PER_CHANNEL * 30); 748 _put_word(&p, AVM_NCCI_PER_CHANNEL*30);
749 _put_word(&p, card->cardnr - 1); 749 _put_word(&p, card->cardnr - 1);
750 skb_put(skb, (u8 *)p - (u8 *)skb->data); 750 skb_put(skb, (u8 *)p - (u8 *)skb->data);
751 751
@@ -761,10 +761,10 @@ static int queue_sendconfigword(avmcard *card, u32 val)
761 unsigned long flags; 761 unsigned long flags;
762 void *p; 762 void *p;
763 763
764 skb = alloc_skb(3 + 4, GFP_ATOMIC); 764 skb = alloc_skb(3+4, GFP_ATOMIC);
765 if (!skb) { 765 if (!skb) {
766 printk(KERN_CRIT "%s: no memory, send config\n", 766 printk(KERN_CRIT "%s: no memory, send config\n",
767 card->name); 767 card->name);
768 return -ENOMEM; 768 return -ENOMEM;
769 } 769 }
770 p = skb->data; 770 p = skb->data;
@@ -787,10 +787,10 @@ static int queue_sendconfig(avmcard *card, char cval[4])
787 unsigned long flags; 787 unsigned long flags;
788 void *p; 788 void *p;
789 789
790 skb = alloc_skb(3 + 4, GFP_ATOMIC); 790 skb = alloc_skb(3+4, GFP_ATOMIC);
791 if (!skb) { 791 if (!skb) {
792 printk(KERN_CRIT "%s: no memory, send config\n", 792 printk(KERN_CRIT "%s: no memory, send config\n",
793 card->name); 793 card->name);
794 return -ENOMEM; 794 return -ENOMEM;
795 } 795 }
796 p = skb->data; 796 p = skb->data;
@@ -804,20 +804,20 @@ static int queue_sendconfig(avmcard *card, char cval[4])
804 skb_put(skb, (u8 *)p - (u8 *)skb->data); 804 skb_put(skb, (u8 *)p - (u8 *)skb->data);
805 805
806 skb_queue_tail(&card->dma->send_queue, skb); 806 skb_queue_tail(&card->dma->send_queue, skb);
807 807
808 spin_lock_irqsave(&card->lock, flags); 808 spin_lock_irqsave(&card->lock, flags);
809 c4_dispatch_tx(card); 809 c4_dispatch_tx(card);
810 spin_unlock_irqrestore(&card->lock, flags); 810 spin_unlock_irqrestore(&card->lock, flags);
811 return 0; 811 return 0;
812} 812}
813 813
814static int c4_send_config(avmcard *card, capiloaddatapart *config) 814static int c4_send_config(avmcard *card, capiloaddatapart * config)
815{ 815{
816 u8 val[4]; 816 u8 val[4];
817 unsigned char *dp; 817 unsigned char *dp;
818 u_int left; 818 u_int left;
819 int retval; 819 int retval;
820 820
821 if ((retval = queue_sendconfigword(card, 1)) != 0) 821 if ((retval = queue_sendconfigword(card, 1)) != 0)
822 return retval; 822 return retval;
823 if ((retval = queue_sendconfigword(card, config->len)) != 0) 823 if ((retval = queue_sendconfigword(card, config->len)) != 0)
@@ -826,7 +826,7 @@ static int c4_send_config(avmcard *card, capiloaddatapart *config)
826 dp = config->data; 826 dp = config->data;
827 left = config->len; 827 left = config->len;
828 while (left >= sizeof(u32)) { 828 while (left >= sizeof(u32)) {
829 if (config->user) { 829 if (config->user) {
830 if (copy_from_user(val, dp, sizeof(val))) 830 if (copy_from_user(val, dp, sizeof(val)))
831 return -EFAULT; 831 return -EFAULT;
832 } else { 832 } else {
@@ -860,37 +860,37 @@ static int c4_load_firmware(struct capi_ctr *ctrl, capiloaddata *data)
860 860
861 if ((retval = c4_load_t4file(card, &data->firmware))) { 861 if ((retval = c4_load_t4file(card, &data->firmware))) {
862 printk(KERN_ERR "%s: failed to load t4file!!\n", 862 printk(KERN_ERR "%s: failed to load t4file!!\n",
863 card->name); 863 card->name);
864 c4_reset(card); 864 c4_reset(card);
865 return retval; 865 return retval;
866 } 866 }
867 867
868 card->csr = 0; 868 card->csr = 0;
869 c4outmeml(card->mbase + MBOX_UP_LEN, 0); 869 c4outmeml(card->mbase+MBOX_UP_LEN, 0);
870 c4outmeml(card->mbase + MBOX_DOWN_LEN, 0); 870 c4outmeml(card->mbase+MBOX_DOWN_LEN, 0);
871 c4outmeml(card->mbase + DOORBELL, DBELL_INIT); 871 c4outmeml(card->mbase+DOORBELL, DBELL_INIT);
872 mdelay(1); 872 mdelay(1);
873 c4outmeml(card->mbase + DOORBELL, 873 c4outmeml(card->mbase+DOORBELL,
874 DBELL_UP_HOST | DBELL_DOWN_HOST | DBELL_RESET_HOST); 874 DBELL_UP_HOST | DBELL_DOWN_HOST | DBELL_RESET_HOST);
875 875
876 c4outmeml(card->mbase + PCI_OUT_INT_MASK, 0x08); 876 c4outmeml(card->mbase+PCI_OUT_INT_MASK, 0x08);
877 877
878 card->dma->recvlen = 0; 878 card->dma->recvlen = 0;
879 c4outmeml(card->mbase + MBOX_UP_ADDR, card->dma->recvbuf.dmaaddr); 879 c4outmeml(card->mbase+MBOX_UP_ADDR, card->dma->recvbuf.dmaaddr);
880 c4outmeml(card->mbase + MBOX_UP_LEN, card->dma->recvbuf.size); 880 c4outmeml(card->mbase+MBOX_UP_LEN, card->dma->recvbuf.size);
881 c4outmeml(card->mbase + DOORBELL, DBELL_UP_ARM); 881 c4outmeml(card->mbase+DOORBELL, DBELL_UP_ARM);
882 882
883 if (data->configuration.len > 0 && data->configuration.data) { 883 if (data->configuration.len > 0 && data->configuration.data) {
884 retval = c4_send_config(card, &data->configuration); 884 retval = c4_send_config(card, &data->configuration);
885 if (retval) { 885 if (retval) {
886 printk(KERN_ERR "%s: failed to set config!!\n", 886 printk(KERN_ERR "%s: failed to set config!!\n",
887 card->name); 887 card->name);
888 c4_reset(card); 888 c4_reset(card);
889 return retval; 889 return retval;
890 } 890 }
891 } 891 }
892 892
893 c4_send_init(card); 893 c4_send_init(card);
894 894
895 return 0; 895 return 0;
896} 896}
@@ -905,11 +905,11 @@ static void c4_reset_ctr(struct capi_ctr *ctrl)
905 905
906 spin_lock_irqsave(&card->lock, flags); 906 spin_lock_irqsave(&card->lock, flags);
907 907
908 c4_reset(card); 908 c4_reset(card);
909 909
910 spin_unlock_irqrestore(&card->lock, flags); 910 spin_unlock_irqrestore(&card->lock, flags);
911 911
912 for (i = 0; i < card->nr_controllers; i++) { 912 for (i=0; i < card->nr_controllers; i++) {
913 cinfo = &card->ctrlinfo[i]; 913 cinfo = &card->ctrlinfo[i];
914 memset(cinfo->version, 0, sizeof(cinfo->version)); 914 memset(cinfo->version, 0, sizeof(cinfo->version));
915 capi_ctr_down(&cinfo->capi_ctrl); 915 capi_ctr_down(&cinfo->capi_ctrl);
@@ -926,9 +926,9 @@ static void c4_remove(struct pci_dev *pdev)
926 if (!card) 926 if (!card)
927 return; 927 return;
928 928
929 c4_reset(card); 929 c4_reset(card);
930 930
931 for (i = 0; i < card->nr_controllers; i++) { 931 for (i=0; i < card->nr_controllers; i++) {
932 cinfo = &card->ctrlinfo[i]; 932 cinfo = &card->ctrlinfo[i];
933 detach_capi_ctr(&cinfo->capi_ctrl); 933 detach_capi_ctr(&cinfo->capi_ctrl);
934 } 934 }
@@ -936,8 +936,8 @@ static void c4_remove(struct pci_dev *pdev)
936 free_irq(card->irq, card); 936 free_irq(card->irq, card);
937 iounmap(card->mbase); 937 iounmap(card->mbase);
938 release_region(card->port, AVMB1_PORTLEN); 938 release_region(card->port, AVMB1_PORTLEN);
939 avmcard_dma_free(card->dma); 939 avmcard_dma_free(card->dma);
940 pci_set_drvdata(pdev, NULL); 940 pci_set_drvdata(pdev, NULL);
941 b1_free_card(card); 941 b1_free_card(card);
942} 942}
943 943
@@ -945,8 +945,8 @@ static void c4_remove(struct pci_dev *pdev)
945 945
946 946
947static void c4_register_appl(struct capi_ctr *ctrl, 947static void c4_register_appl(struct capi_ctr *ctrl,
948 u16 appl, 948 u16 appl,
949 capi_register_params *rp) 949 capi_register_params *rp)
950{ 950{
951 avmctrl_info *cinfo = (avmctrl_info *)(ctrl->driverdata); 951 avmctrl_info *cinfo = (avmctrl_info *)(ctrl->driverdata);
952 avmcard *card = cinfo->card; 952 avmcard *card = cinfo->card;
@@ -965,7 +965,7 @@ static void c4_register_appl(struct capi_ctr *ctrl,
965 skb = alloc_skb(23, GFP_ATOMIC); 965 skb = alloc_skb(23, GFP_ATOMIC);
966 if (!skb) { 966 if (!skb) {
967 printk(KERN_CRIT "%s: no memory, lost register appl.\n", 967 printk(KERN_CRIT "%s: no memory, lost register appl.\n",
968 card->name); 968 card->name);
969 return; 969 return;
970 } 970 }
971 p = skb->data; 971 p = skb->data;
@@ -973,14 +973,14 @@ static void c4_register_appl(struct capi_ctr *ctrl,
973 _put_byte(&p, 0); 973 _put_byte(&p, 0);
974 _put_byte(&p, SEND_REGISTER); 974 _put_byte(&p, SEND_REGISTER);
975 _put_word(&p, appl); 975 _put_word(&p, appl);
976 _put_word(&p, 1024 * (nconn + 1)); 976 _put_word(&p, 1024 * (nconn+1));
977 _put_word(&p, nconn); 977 _put_word(&p, nconn);
978 _put_word(&p, rp->datablkcnt); 978 _put_word(&p, rp->datablkcnt);
979 _put_word(&p, rp->datablklen); 979 _put_word(&p, rp->datablklen);
980 skb_put(skb, (u8 *)p - (u8 *)skb->data); 980 skb_put(skb, (u8 *)p - (u8 *)skb->data);
981 981
982 skb_queue_tail(&card->dma->send_queue, skb); 982 skb_queue_tail(&card->dma->send_queue, skb);
983 983
984 spin_lock_irqsave(&card->lock, flags); 984 spin_lock_irqsave(&card->lock, flags);
985 c4_dispatch_tx(card); 985 c4_dispatch_tx(card);
986 spin_unlock_irqrestore(&card->lock, flags); 986 spin_unlock_irqrestore(&card->lock, flags);
@@ -1005,7 +1005,7 @@ static void c4_release_appl(struct capi_ctr *ctrl, u16 appl)
1005 skb = alloc_skb(7, GFP_ATOMIC); 1005 skb = alloc_skb(7, GFP_ATOMIC);
1006 if (!skb) { 1006 if (!skb) {
1007 printk(KERN_CRIT "%s: no memory, lost release appl.\n", 1007 printk(KERN_CRIT "%s: no memory, lost release appl.\n",
1008 card->name); 1008 card->name);
1009 return; 1009 return;
1010 } 1010 }
1011 p = skb->data; 1011 p = skb->data;
@@ -1098,29 +1098,29 @@ static int c4_proc_show(struct seq_file *m, void *v)
1098 seq_printf(m, "%-16s %s\n", "ver_serial", s); 1098 seq_printf(m, "%-16s %s\n", "ver_serial", s);
1099 1099
1100 if (card->cardtype != avm_m1) { 1100 if (card->cardtype != avm_m1) {
1101 flag = ((u8 *)(ctrl->profile.manu))[3]; 1101 flag = ((u8 *)(ctrl->profile.manu))[3];
1102 if (flag) 1102 if (flag)
1103 seq_printf(m, "%-16s%s%s%s%s%s%s%s\n", 1103 seq_printf(m, "%-16s%s%s%s%s%s%s%s\n",
1104 "protocol", 1104 "protocol",
1105 (flag & 0x01) ? " DSS1" : "", 1105 (flag & 0x01) ? " DSS1" : "",
1106 (flag & 0x02) ? " CT1" : "", 1106 (flag & 0x02) ? " CT1" : "",
1107 (flag & 0x04) ? " VN3" : "", 1107 (flag & 0x04) ? " VN3" : "",
1108 (flag & 0x08) ? " NI1" : "", 1108 (flag & 0x08) ? " NI1" : "",
1109 (flag & 0x10) ? " AUSTEL" : "", 1109 (flag & 0x10) ? " AUSTEL" : "",
1110 (flag & 0x20) ? " ESS" : "", 1110 (flag & 0x20) ? " ESS" : "",
1111 (flag & 0x40) ? " 1TR6" : "" 1111 (flag & 0x40) ? " 1TR6" : ""
1112 ); 1112 );
1113 } 1113 }
1114 if (card->cardtype != avm_m1) { 1114 if (card->cardtype != avm_m1) {
1115 flag = ((u8 *)(ctrl->profile.manu))[5]; 1115 flag = ((u8 *)(ctrl->profile.manu))[5];
1116 if (flag) 1116 if (flag)
1117 seq_printf(m, "%-16s%s%s%s%s\n", 1117 seq_printf(m, "%-16s%s%s%s%s\n",
1118 "linetype", 1118 "linetype",
1119 (flag & 0x01) ? " point to point" : "", 1119 (flag & 0x01) ? " point to point" : "",
1120 (flag & 0x02) ? " point to multipoint" : "", 1120 (flag & 0x02) ? " point to multipoint" : "",
1121 (flag & 0x08) ? " leased line without D-channel" : "", 1121 (flag & 0x08) ? " leased line without D-channel" : "",
1122 (flag & 0x04) ? " leased line with D-channel" : "" 1122 (flag & 0x04) ? " leased line with D-channel" : ""
1123 ); 1123 );
1124 } 1124 }
1125 seq_printf(m, "%-16s %s\n", "cardname", cinfo->cardname); 1125 seq_printf(m, "%-16s %s\n", "cardname", cinfo->cardname);
1126 1126
@@ -1156,7 +1156,7 @@ static int c4_add_card(struct capicardparams *p, struct pci_dev *dev,
1156 retval = -ENOMEM; 1156 retval = -ENOMEM;
1157 goto err; 1157 goto err;
1158 } 1158 }
1159 card->dma = avmcard_dma_alloc("c4", dev, 2048 + 128, 2048 + 128); 1159 card->dma = avmcard_dma_alloc("c4", dev, 2048+128, 2048+128);
1160 if (!card->dma) { 1160 if (!card->dma) {
1161 printk(KERN_WARNING "c4: no memory.\n"); 1161 printk(KERN_WARNING "c4: no memory.\n");
1162 retval = -ENOMEM; 1162 retval = -ENOMEM;
@@ -1195,12 +1195,12 @@ static int c4_add_card(struct capicardparams *p, struct pci_dev *dev,
1195 1195
1196 retval = request_irq(card->irq, c4_interrupt, IRQF_SHARED, card->name, card); 1196 retval = request_irq(card->irq, c4_interrupt, IRQF_SHARED, card->name, card);
1197 if (retval) { 1197 if (retval) {
1198 printk(KERN_ERR "c4: unable to get IRQ %d.\n", card->irq); 1198 printk(KERN_ERR "c4: unable to get IRQ %d.\n",card->irq);
1199 retval = -EBUSY; 1199 retval = -EBUSY;
1200 goto err_unmap; 1200 goto err_unmap;
1201 } 1201 }
1202 1202
1203 for (i = 0; i < nr_controllers; i++) { 1203 for (i=0; i < nr_controllers ; i++) {
1204 cinfo = &card->ctrlinfo[i]; 1204 cinfo = &card->ctrlinfo[i];
1205 cinfo->capi_ctrl.owner = THIS_MODULE; 1205 cinfo->capi_ctrl.owner = THIS_MODULE;
1206 cinfo->capi_ctrl.driver_name = "c4"; 1206 cinfo->capi_ctrl.driver_name = "c4";
@@ -1233,23 +1233,24 @@ static int c4_add_card(struct capicardparams *p, struct pci_dev *dev,
1233 pci_set_drvdata(dev, card); 1233 pci_set_drvdata(dev, card);
1234 return 0; 1234 return 0;
1235 1235
1236err_free_irq: 1236 err_free_irq:
1237 free_irq(card->irq, card); 1237 free_irq(card->irq, card);
1238err_unmap: 1238 err_unmap:
1239 iounmap(card->mbase); 1239 iounmap(card->mbase);
1240err_release_region: 1240 err_release_region:
1241 release_region(card->port, AVMB1_PORTLEN); 1241 release_region(card->port, AVMB1_PORTLEN);
1242err_free_dma: 1242 err_free_dma:
1243 avmcard_dma_free(card->dma); 1243 avmcard_dma_free(card->dma);
1244err_free: 1244 err_free:
1245 b1_free_card(card); 1245 b1_free_card(card);
1246err: 1246 err:
1247 return retval; 1247 return retval;
1248} 1248}
1249 1249
1250/* ------------------------------------------------------------- */ 1250/* ------------------------------------------------------------- */
1251 1251
1252static int c4_probe(struct pci_dev *dev, const struct pci_device_id *ent) 1252static int __devinit c4_probe(struct pci_dev *dev,
1253 const struct pci_device_id *ent)
1253{ 1254{
1254 int nr = ent->driver_data; 1255 int nr = ent->driver_data;
1255 int retval = 0; 1256 int retval = 0;
@@ -1264,10 +1265,10 @@ static int c4_probe(struct pci_dev *dev, const struct pci_device_id *ent)
1264 param.port = pci_resource_start(dev, 1); 1265 param.port = pci_resource_start(dev, 1);
1265 param.irq = dev->irq; 1266 param.irq = dev->irq;
1266 param.membase = pci_resource_start(dev, 0); 1267 param.membase = pci_resource_start(dev, 0);
1267 1268
1268 printk(KERN_INFO "c4: PCI BIOS reports AVM-C%d at i/o %#x, irq %d, mem %#x\n", 1269 printk(KERN_INFO "c4: PCI BIOS reports AVM-C%d at i/o %#x, irq %d, mem %#x\n",
1269 nr, param.port, param.irq, param.membase); 1270 nr, param.port, param.irq, param.membase);
1270 1271
1271 retval = c4_add_card(&param, dev, nr); 1272 retval = c4_add_card(&param, dev, nr);
1272 if (retval != 0) { 1273 if (retval != 0) {
1273 printk(KERN_ERR "c4: no AVM-C%d at i/o %#x, irq %d detected, mem %#x\n", 1274 printk(KERN_ERR "c4: no AVM-C%d at i/o %#x, irq %d detected, mem %#x\n",
@@ -1279,10 +1280,10 @@ static int c4_probe(struct pci_dev *dev, const struct pci_device_id *ent)
1279} 1280}
1280 1281
1281static struct pci_driver c4_pci_driver = { 1282static struct pci_driver c4_pci_driver = {
1282 .name = "c4", 1283 .name = "c4",
1283 .id_table = c4_pci_tbl, 1284 .id_table = c4_pci_tbl,
1284 .probe = c4_probe, 1285 .probe = c4_probe,
1285 .remove = c4_remove, 1286 .remove = c4_remove,
1286}; 1287};
1287 1288
1288static struct capi_driver capi_driver_c2 = { 1289static struct capi_driver capi_driver_c2 = {
@@ -1304,7 +1305,7 @@ static int __init c4_init(void)
1304 if ((p = strchr(revision, ':')) != NULL && p[1]) { 1305 if ((p = strchr(revision, ':')) != NULL && p[1]) {
1305 strlcpy(rev, p + 2, 32); 1306 strlcpy(rev, p + 2, 32);
1306 if ((p = strchr(rev, '$')) != NULL && p > rev) 1307 if ((p = strchr(rev, '$')) != NULL && p > rev)
1307 *(p - 1) = 0; 1308 *(p-1) = 0;
1308 } else 1309 } else
1309 strcpy(rev, "1.0"); 1310 strcpy(rev, "1.0");
1310 1311
diff --git a/drivers/isdn/hardware/avm/t1isa.c b/drivers/isdn/hardware/avm/t1isa.c
index 72ef1885395..08216b14be1 100644
--- a/drivers/isdn/hardware/avm/t1isa.c
+++ b/drivers/isdn/hardware/avm/t1isa.c
@@ -1,9 +1,9 @@
1/* $Id: t1isa.c,v 1.1.2.3 2004/02/10 01:07:12 keil Exp $ 1/* $Id: t1isa.c,v 1.1.2.3 2004/02/10 01:07:12 keil Exp $
2 * 2 *
3 * Module for AVM T1 HEMA-card. 3 * Module for AVM T1 HEMA-card.
4 * 4 *
5 * Copyright 1999 by Carsten Paeth <calle@calle.de> 5 * Copyright 1999 by Carsten Paeth <calle@calle.de>
6 * 6 *
7 * This software may be used and distributed according to the terms 7 * This software may be used and distributed according to the terms
8 * of the GNU General Public License, incorporated herein by reference. 8 * of the GNU General Public License, incorporated herein by reference.
9 * 9 *
@@ -67,7 +67,7 @@ static int t1_detectandinit(unsigned int base, unsigned irq, int cardnr)
67 int i; 67 int i;
68 68
69 reverse_cardnr = ((cardnr & 0x01) << 3) | ((cardnr & 0x02) << 1) 69 reverse_cardnr = ((cardnr & 0x01) << 3) | ((cardnr & 0x02) << 1)
70 | ((cardnr & 0x04) >> 1) | ((cardnr & 0x08) >> 3); 70 | ((cardnr & 0x04) >> 1) | ((cardnr & 0x08) >> 3);
71 cregs[0] = (HEMA_VERSION_ID << 4) | (reverse_cardnr & 0xf); 71 cregs[0] = (HEMA_VERSION_ID << 4) | (reverse_cardnr & 0xf);
72 cregs[1] = 0x00; /* fast & slow link connected to CON1 */ 72 cregs[1] = 0x00; /* fast & slow link connected to CON1 */
73 cregs[2] = 0x05; /* fast link 20MBit, slow link 20 MBit */ 73 cregs[2] = 0x05; /* fast link 20MBit, slow link 20 MBit */
@@ -86,50 +86,50 @@ static int t1_detectandinit(unsigned int base, unsigned irq, int cardnr)
86 /* board reset */ 86 /* board reset */
87 t1outp(base, T1_RESETBOARD, 0xf); 87 t1outp(base, T1_RESETBOARD, 0xf);
88 mdelay(100); 88 mdelay(100);
89 dummy = t1inp(base, T1_FASTLINK + T1_OUTSTAT); /* first read */ 89 dummy = t1inp(base, T1_FASTLINK+T1_OUTSTAT); /* first read */
90 90
91 /* write config */ 91 /* write config */
92 dummy = (base >> 4) & 0xff; 92 dummy = (base >> 4) & 0xff;
93 for (i = 1; i <= 0xf; i++) t1outp(base, i, dummy); 93 for (i=1;i<=0xf;i++) t1outp(base, i, dummy);
94 t1outp(base, HEMA_PAL_ID & 0xf, dummy); 94 t1outp(base, HEMA_PAL_ID & 0xf, dummy);
95 t1outp(base, HEMA_PAL_ID >> 4, cregs[0]); 95 t1outp(base, HEMA_PAL_ID >> 4, cregs[0]);
96 for (i = 1; i < 7; i++) t1outp(base, 0, cregs[i]); 96 for(i=1;i<7;i++) t1outp(base, 0, cregs[i]);
97 t1outp(base, ((base >> 4)) & 0x3, cregs[7]); 97 t1outp(base, ((base >> 4)) & 0x3, cregs[7]);
98 /* restore_flags(flags); */ 98 /* restore_flags(flags); */
99 99
100 mdelay(100); 100 mdelay(100);
101 t1outp(base, T1_FASTLINK + T1_RESETLINK, 0); 101 t1outp(base, T1_FASTLINK+T1_RESETLINK, 0);
102 t1outp(base, T1_SLOWLINK + T1_RESETLINK, 0); 102 t1outp(base, T1_SLOWLINK+T1_RESETLINK, 0);
103 mdelay(10); 103 mdelay(10);
104 t1outp(base, T1_FASTLINK + T1_RESETLINK, 1); 104 t1outp(base, T1_FASTLINK+T1_RESETLINK, 1);
105 t1outp(base, T1_SLOWLINK + T1_RESETLINK, 1); 105 t1outp(base, T1_SLOWLINK+T1_RESETLINK, 1);
106 mdelay(100); 106 mdelay(100);
107 t1outp(base, T1_FASTLINK + T1_RESETLINK, 0); 107 t1outp(base, T1_FASTLINK+T1_RESETLINK, 0);
108 t1outp(base, T1_SLOWLINK + T1_RESETLINK, 0); 108 t1outp(base, T1_SLOWLINK+T1_RESETLINK, 0);
109 mdelay(10); 109 mdelay(10);
110 t1outp(base, T1_FASTLINK + T1_ANALYSE, 0); 110 t1outp(base, T1_FASTLINK+T1_ANALYSE, 0);
111 mdelay(5); 111 mdelay(5);
112 t1outp(base, T1_SLOWLINK + T1_ANALYSE, 0); 112 t1outp(base, T1_SLOWLINK+T1_ANALYSE, 0);
113 113
114 if (t1inp(base, T1_FASTLINK + T1_OUTSTAT) != 0x1) /* tx empty */ 114 if (t1inp(base, T1_FASTLINK+T1_OUTSTAT) != 0x1) /* tx empty */
115 return 1; 115 return 1;
116 if (t1inp(base, T1_FASTLINK + T1_INSTAT) != 0x0) /* rx empty */ 116 if (t1inp(base, T1_FASTLINK+T1_INSTAT) != 0x0) /* rx empty */
117 return 2; 117 return 2;
118 if (t1inp(base, T1_FASTLINK + T1_IRQENABLE) != 0x0) 118 if (t1inp(base, T1_FASTLINK+T1_IRQENABLE) != 0x0)
119 return 3; 119 return 3;
120 if ((t1inp(base, T1_FASTLINK + T1_FIFOSTAT) & 0xf0) != 0x70) 120 if ((t1inp(base, T1_FASTLINK+T1_FIFOSTAT) & 0xf0) != 0x70)
121 return 4; 121 return 4;
122 if ((t1inp(base, T1_FASTLINK + T1_IRQMASTER) & 0x0e) != 0) 122 if ((t1inp(base, T1_FASTLINK+T1_IRQMASTER) & 0x0e) != 0)
123 return 5; 123 return 5;
124 if ((t1inp(base, T1_FASTLINK + T1_IDENT) & 0x7d) != 1) 124 if ((t1inp(base, T1_FASTLINK+T1_IDENT) & 0x7d) != 1)
125 return 6; 125 return 6;
126 if (t1inp(base, T1_SLOWLINK + T1_OUTSTAT) != 0x1) /* tx empty */ 126 if (t1inp(base, T1_SLOWLINK+T1_OUTSTAT) != 0x1) /* tx empty */
127 return 7; 127 return 7;
128 if ((t1inp(base, T1_SLOWLINK + T1_IRQMASTER) & 0x0e) != 0) 128 if ((t1inp(base, T1_SLOWLINK+T1_IRQMASTER) & 0x0e) != 0)
129 return 8; 129 return 8;
130 if ((t1inp(base, T1_SLOWLINK + T1_IDENT) & 0x7d) != 0) 130 if ((t1inp(base, T1_SLOWLINK+T1_IDENT) & 0x7d) != 0)
131 return 9; 131 return 9;
132 return 0; 132 return 0;
133} 133}
134 134
135static irqreturn_t t1isa_interrupt(int interrupt, void *devptr) 135static irqreturn_t t1isa_interrupt(int interrupt, void *devptr)
@@ -163,13 +163,13 @@ static irqreturn_t t1isa_interrupt(int interrupt, void *devptr)
163 spin_unlock_irqrestore(&card->lock, flags); 163 spin_unlock_irqrestore(&card->lock, flags);
164 164
165 if (MsgLen < 30) { /* not CAPI 64Bit */ 165 if (MsgLen < 30) { /* not CAPI 64Bit */
166 memset(card->msgbuf + MsgLen, 0, 30 - MsgLen); 166 memset(card->msgbuf+MsgLen, 0, 30-MsgLen);
167 MsgLen = 30; 167 MsgLen = 30;
168 CAPIMSG_SETLEN(card->msgbuf, 30); 168 CAPIMSG_SETLEN(card->msgbuf, 30);
169 } 169 }
170 if (!(skb = alloc_skb(DataB3Len + MsgLen, GFP_ATOMIC))) { 170 if (!(skb = alloc_skb(DataB3Len+MsgLen, GFP_ATOMIC))) {
171 printk(KERN_ERR "%s: incoming packet dropped\n", 171 printk(KERN_ERR "%s: incoming packet dropped\n",
172 card->name); 172 card->name);
173 } else { 173 } else {
174 memcpy(skb_put(skb, MsgLen), card->msgbuf, MsgLen); 174 memcpy(skb_put(skb, MsgLen), card->msgbuf, MsgLen);
175 memcpy(skb_put(skb, DataB3Len), card->databuf, DataB3Len); 175 memcpy(skb_put(skb, DataB3Len), card->databuf, DataB3Len);
@@ -184,7 +184,7 @@ static irqreturn_t t1isa_interrupt(int interrupt, void *devptr)
184 if (!(skb = alloc_skb(MsgLen, GFP_ATOMIC))) { 184 if (!(skb = alloc_skb(MsgLen, GFP_ATOMIC))) {
185 spin_unlock_irqrestore(&card->lock, flags); 185 spin_unlock_irqrestore(&card->lock, flags);
186 printk(KERN_ERR "%s: incoming packet dropped\n", 186 printk(KERN_ERR "%s: incoming packet dropped\n",
187 card->name); 187 card->name);
188 } else { 188 } else {
189 memcpy(skb_put(skb, MsgLen), card->msgbuf, MsgLen); 189 memcpy(skb_put(skb, MsgLen), card->msgbuf, MsgLen);
190 if (CAPIMSG_CMD(skb->data) == CAPI_DATA_B3) 190 if (CAPIMSG_CMD(skb->data) == CAPI_DATA_B3)
@@ -242,24 +242,24 @@ static irqreturn_t t1isa_interrupt(int interrupt, void *devptr)
242 MsgLen = t1_get_slice(card->port, card->msgbuf); 242 MsgLen = t1_get_slice(card->port, card->msgbuf);
243 spin_unlock_irqrestore(&card->lock, flags); 243 spin_unlock_irqrestore(&card->lock, flags);
244 card->msgbuf[MsgLen] = 0; 244 card->msgbuf[MsgLen] = 0;
245 while (MsgLen > 0 245 while ( MsgLen > 0
246 && (card->msgbuf[MsgLen - 1] == '\n' 246 && ( card->msgbuf[MsgLen-1] == '\n'
247 || card->msgbuf[MsgLen - 1] == '\r')) { 247 || card->msgbuf[MsgLen-1] == '\r')) {
248 card->msgbuf[MsgLen - 1] = 0; 248 card->msgbuf[MsgLen-1] = 0;
249 MsgLen--; 249 MsgLen--;
250 } 250 }
251 printk(KERN_INFO "%s: task %d \"%s\" ready.\n", 251 printk(KERN_INFO "%s: task %d \"%s\" ready.\n",
252 card->name, ApplId, card->msgbuf); 252 card->name, ApplId, card->msgbuf);
253 break; 253 break;
254 254
255 case RECEIVE_DEBUGMSG: 255 case RECEIVE_DEBUGMSG:
256 MsgLen = t1_get_slice(card->port, card->msgbuf); 256 MsgLen = t1_get_slice(card->port, card->msgbuf);
257 spin_unlock_irqrestore(&card->lock, flags); 257 spin_unlock_irqrestore(&card->lock, flags);
258 card->msgbuf[MsgLen] = 0; 258 card->msgbuf[MsgLen] = 0;
259 while (MsgLen > 0 259 while ( MsgLen > 0
260 && (card->msgbuf[MsgLen - 1] == '\n' 260 && ( card->msgbuf[MsgLen-1] == '\n'
261 || card->msgbuf[MsgLen - 1] == '\r')) { 261 || card->msgbuf[MsgLen-1] == '\r')) {
262 card->msgbuf[MsgLen - 1] = 0; 262 card->msgbuf[MsgLen-1] = 0;
263 MsgLen--; 263 MsgLen--;
264 } 264 }
265 printk(KERN_INFO "%s: DEBUG: %s\n", card->name, card->msgbuf); 265 printk(KERN_INFO "%s: DEBUG: %s\n", card->name, card->msgbuf);
@@ -273,7 +273,7 @@ static irqreturn_t t1isa_interrupt(int interrupt, void *devptr)
273 default: 273 default:
274 spin_unlock_irqrestore(&card->lock, flags); 274 spin_unlock_irqrestore(&card->lock, flags);
275 printk(KERN_ERR "%s: b1_interrupt: 0x%x ???\n", 275 printk(KERN_ERR "%s: b1_interrupt: 0x%x ???\n",
276 card->name, b1cmd); 276 card->name, b1cmd);
277 return IRQ_NONE; 277 return IRQ_NONE;
278 } 278 }
279 } 279 }
@@ -296,7 +296,7 @@ static int t1isa_load_firmware(struct capi_ctr *ctrl, capiloaddata *data)
296 if ((retval = b1_load_t4file(card, &data->firmware))) { 296 if ((retval = b1_load_t4file(card, &data->firmware))) {
297 b1_reset(port); 297 b1_reset(port);
298 printk(KERN_ERR "%s: failed to load t4file!!\n", 298 printk(KERN_ERR "%s: failed to load t4file!!\n",
299 card->name); 299 card->name);
300 return retval; 300 return retval;
301 } 301 }
302 302
@@ -304,7 +304,7 @@ static int t1isa_load_firmware(struct capi_ctr *ctrl, capiloaddata *data)
304 if ((retval = b1_load_config(card, &data->configuration))) { 304 if ((retval = b1_load_config(card, &data->configuration))) {
305 b1_reset(port); 305 b1_reset(port);
306 printk(KERN_ERR "%s: failed to load config!!\n", 306 printk(KERN_ERR "%s: failed to load config!!\n",
307 card->name); 307 card->name);
308 return retval; 308 return retval;
309 } 309 }
310 } 310 }
@@ -318,7 +318,7 @@ static int t1isa_load_firmware(struct capi_ctr *ctrl, capiloaddata *data)
318 b1_setinterrupt(port, card->irq, card->cardtype); 318 b1_setinterrupt(port, card->irq, card->cardtype);
319 b1_put_byte(port, SEND_INIT); 319 b1_put_byte(port, SEND_INIT);
320 b1_put_word(port, CAPI_MAXAPPL); 320 b1_put_word(port, CAPI_MAXAPPL);
321 b1_put_word(port, AVM_NCCI_PER_CHANNEL * 30); 321 b1_put_word(port, AVM_NCCI_PER_CHANNEL*30);
322 b1_put_word(port, ctrl->cnr - 1); 322 b1_put_word(port, ctrl->cnr - 1);
323 spin_unlock_irqrestore(&card->lock, flags); 323 spin_unlock_irqrestore(&card->lock, flags);
324 324
@@ -347,7 +347,7 @@ static void t1isa_remove(struct pci_dev *pdev)
347{ 347{
348 avmctrl_info *cinfo = pci_get_drvdata(pdev); 348 avmctrl_info *cinfo = pci_get_drvdata(pdev);
349 avmcard *card; 349 avmcard *card;
350 350
351 if (!cinfo) 351 if (!cinfo)
352 return; 352 return;
353 353
@@ -393,7 +393,7 @@ static int t1isa_probe(struct pci_dev *pdev, int cardnr)
393 printk(KERN_WARNING "t1isa: invalid port 0x%x.\n", card->port); 393 printk(KERN_WARNING "t1isa: invalid port 0x%x.\n", card->port);
394 retval = -EINVAL; 394 retval = -EINVAL;
395 goto err_free; 395 goto err_free;
396 } 396 }
397 if (hema_irq_table[card->irq & 0xf] == 0) { 397 if (hema_irq_table[card->irq & 0xf] == 0) {
398 printk(KERN_WARNING "t1isa: irq %d not valid.\n", card->irq); 398 printk(KERN_WARNING "t1isa: irq %d not valid.\n", card->irq);
399 retval = -EINVAL; 399 retval = -EINVAL;
@@ -412,7 +412,7 @@ static int t1isa_probe(struct pci_dev *pdev, int cardnr)
412 goto err_release_region; 412 goto err_release_region;
413 } 413 }
414 414
415 if ((retval = t1_detectandinit(card->port, card->irq, card->cardnr)) != 0) { 415 if ((retval = t1_detectandinit(card->port, card->irq, card->cardnr)) != 0) {
416 printk(KERN_INFO "t1isa: NO card at 0x%x (%d)\n", 416 printk(KERN_INFO "t1isa: NO card at 0x%x (%d)\n",
417 card->port, retval); 417 card->port, retval);
418 retval = -ENODEV; 418 retval = -ENODEV;
@@ -445,13 +445,13 @@ static int t1isa_probe(struct pci_dev *pdev, int cardnr)
445 pci_set_drvdata(pdev, cinfo); 445 pci_set_drvdata(pdev, cinfo);
446 return 0; 446 return 0;
447 447
448err_free_irq: 448 err_free_irq:
449 free_irq(card->irq, card); 449 free_irq(card->irq, card);
450err_release_region: 450 err_release_region:
451 release_region(card->port, AVMB1_PORTLEN); 451 release_region(card->port, AVMB1_PORTLEN);
452err_free: 452 err_free:
453 b1_free_card(card); 453 b1_free_card(card);
454err: 454 err:
455 return retval; 455 return retval;
456} 456}
457 457
@@ -555,7 +555,7 @@ static int __init t1isa_init(void)
555 if ((p = strchr(revision, ':')) != NULL && p[1]) { 555 if ((p = strchr(revision, ':')) != NULL && p[1]) {
556 strlcpy(rev, p + 2, 32); 556 strlcpy(rev, p + 2, 32);
557 if ((p = strchr(rev, '$')) != NULL && p > rev) 557 if ((p = strchr(rev, '$')) != NULL && p > rev)
558 *(p - 1) = 0; 558 *(p-1) = 0;
559 } else 559 } else
560 strcpy(rev, "1.0"); 560 strcpy(rev, "1.0");
561 561
diff --git a/drivers/isdn/hardware/avm/t1pci.c b/drivers/isdn/hardware/avm/t1pci.c
index 2180b168569..a79eb5afb92 100644
--- a/drivers/isdn/hardware/avm/t1pci.c
+++ b/drivers/isdn/hardware/avm/t1pci.c
@@ -1,9 +1,9 @@
1/* $Id: t1pci.c,v 1.1.2.2 2004/01/16 21:09:27 keil Exp $ 1/* $Id: t1pci.c,v 1.1.2.2 2004/01/16 21:09:27 keil Exp $
2 * 2 *
3 * Module for AVM T1 PCI-card. 3 * Module for AVM T1 PCI-card.
4 * 4 *
5 * Copyright 1999 by Carsten Paeth <calle@calle.de> 5 * Copyright 1999 by Carsten Paeth <calle@calle.de>
6 * 6 *
7 * This software may be used and distributed according to the terms 7 * This software may be used and distributed according to the terms
8 * of the GNU General Public License, incorporated herein by reference. 8 * of the GNU General Public License, incorporated herein by reference.
9 * 9 *
@@ -59,7 +59,7 @@ static int t1pci_add_card(struct capicardparams *p, struct pci_dev *pdev)
59 goto err; 59 goto err;
60 } 60 }
61 61
62 card->dma = avmcard_dma_alloc("t1pci", pdev, 2048 + 128, 2048 + 128); 62 card->dma = avmcard_dma_alloc("t1pci", pdev, 2048+128, 2048+128);
63 if (!card->dma) { 63 if (!card->dma) {
64 printk(KERN_WARNING "t1pci: no memory.\n"); 64 printk(KERN_WARNING "t1pci: no memory.\n");
65 retval = -ENOMEM; 65 retval = -ENOMEM;
@@ -136,17 +136,17 @@ static int t1pci_add_card(struct capicardparams *p, struct pci_dev *pdev)
136 pci_set_drvdata(pdev, card); 136 pci_set_drvdata(pdev, card);
137 return 0; 137 return 0;
138 138
139err_free_irq: 139 err_free_irq:
140 free_irq(card->irq, card); 140 free_irq(card->irq, card);
141err_unmap: 141 err_unmap:
142 iounmap(card->mbase); 142 iounmap(card->mbase);
143err_release_region: 143 err_release_region:
144 release_region(card->port, AVMB1_PORTLEN); 144 release_region(card->port, AVMB1_PORTLEN);
145err_free_dma: 145 err_free_dma:
146 avmcard_dma_free(card->dma); 146 avmcard_dma_free(card->dma);
147err_free: 147 err_free:
148 b1_free_card(card); 148 b1_free_card(card);
149err: 149 err:
150 return retval; 150 return retval;
151} 151}
152 152
@@ -157,7 +157,7 @@ static void t1pci_remove(struct pci_dev *pdev)
157 avmcard *card = pci_get_drvdata(pdev); 157 avmcard *card = pci_get_drvdata(pdev);
158 avmctrl_info *cinfo = card->ctrlinfo; 158 avmctrl_info *cinfo = card->ctrlinfo;
159 159
160 b1dma_reset(card); 160 b1dma_reset(card);
161 161
162 detach_capi_ctr(&cinfo->capi_ctrl); 162 detach_capi_ctr(&cinfo->capi_ctrl);
163 free_irq(card->irq, card); 163 free_irq(card->irq, card);
@@ -187,7 +187,8 @@ static char *t1pci_procinfo(struct capi_ctr *ctrl)
187 187
188/* ------------------------------------------------------------- */ 188/* ------------------------------------------------------------- */
189 189
190static int t1pci_probe(struct pci_dev *dev, const struct pci_device_id *ent) 190static int __devinit t1pci_probe(struct pci_dev *dev,
191 const struct pci_device_id *ent)
191{ 192{
192 struct capicardparams param; 193 struct capicardparams param;
193 int retval; 194 int retval;
@@ -216,10 +217,10 @@ static int t1pci_probe(struct pci_dev *dev, const struct pci_device_id *ent)
216} 217}
217 218
218static struct pci_driver t1pci_pci_driver = { 219static struct pci_driver t1pci_pci_driver = {
219 .name = "t1pci", 220 .name = "t1pci",
220 .id_table = t1pci_pci_tbl, 221 .id_table = t1pci_pci_tbl,
221 .probe = t1pci_probe, 222 .probe = t1pci_probe,
222 .remove = t1pci_remove, 223 .remove = t1pci_remove,
223}; 224};
224 225
225static struct capi_driver capi_driver_t1pci = { 226static struct capi_driver capi_driver_t1pci = {
@@ -236,7 +237,7 @@ static int __init t1pci_init(void)
236 if ((p = strchr(revision, ':')) != NULL && p[1]) { 237 if ((p = strchr(revision, ':')) != NULL && p[1]) {
237 strlcpy(rev, p + 2, 32); 238 strlcpy(rev, p + 2, 32);
238 if ((p = strchr(rev, '$')) != NULL && p > rev) 239 if ((p = strchr(rev, '$')) != NULL && p > rev)
239 *(p - 1) = 0; 240 *(p-1) = 0;
240 } else 241 } else
241 strcpy(rev, "1.0"); 242 strcpy(rev, "1.0");
242 243