aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/isdn/hisax
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2009-12-05 12:42:59 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2009-12-05 12:42:59 -0500
commitd9b2c4d0b03c721808c0d259e43a27f1e80205bc (patch)
treef17a4166f62ee14faa1401a6cbd353a4ab8c77cb /drivers/isdn/hisax
parent27d16d08717faeaa8afd1b736a096dbaab90f08e (diff)
parent5fa9167a1bf5f5a4b7282f5e7ac56a4a5a1fa044 (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6: (50 commits) pcmcia: rework the irq_req_t typedef pcmcia: remove deprecated handle_to_dev() macro pcmcia: pcmcia_request_window() doesn't need a pointer to a pointer pcmcia: remove unused "window_t" typedef pcmcia: move some window-related code to pcmcia_ioctl.c pcmcia: Change window_handle_t logic to unsigned long pcmcia: Pass struct pcmcia_socket to pcmcia_get_mem_page() pcmcia: Pass struct pcmcia_device to pcmcia_map_mem_page() pcmcia: Pass struct pcmcia_device to pcmcia_release_window() drivers/pcmcia: remove unnecessary kzalloc pcmcia: correct handling for Zoomed Video registers in topic.h pcmcia: fix printk formats pcmcia: autoload module pcmcia pcmcia/staging: update comedi drivers PCMCIA: stop duplicating pci_irq in soc_pcmcia_socket PCMCIA: ss: allow PCI IRQs > 255 PCMCIA: soc_common: remove 'dev' member from soc_pcmcia_socket PCMCIA: soc_common: constify soc_pcmcia_socket ops member PCMCIA: sa1111: remove duplicated initializers PCMCIA: sa1111: wrap soc_pcmcia_socket to contain sa1111 specific data ...
Diffstat (limited to 'drivers/isdn/hisax')
-rw-r--r--drivers/isdn/hisax/avma1_cs.c28
-rw-r--r--drivers/isdn/hisax/elsa_cs.c46
-rw-r--r--drivers/isdn/hisax/sedlbauer_cs.c64
-rw-r--r--drivers/isdn/hisax/teles_cs.c38
4 files changed, 45 insertions, 131 deletions
diff --git a/drivers/isdn/hisax/avma1_cs.c b/drivers/isdn/hisax/avma1_cs.c
index 23560c897ec3..f9bdff39cf4a 100644
--- a/drivers/isdn/hisax/avma1_cs.c
+++ b/drivers/isdn/hisax/avma1_cs.c
@@ -30,22 +30,6 @@ MODULE_DESCRIPTION("ISDN4Linux: PCMCIA client driver for AVM A1/Fritz!PCMCIA car
30MODULE_AUTHOR("Carsten Paeth"); 30MODULE_AUTHOR("Carsten Paeth");
31MODULE_LICENSE("GPL"); 31MODULE_LICENSE("GPL");
32 32
33/*
34 All the PCMCIA modules use PCMCIA_DEBUG to control debugging. If
35 you do not define PCMCIA_DEBUG at all, all the debug code will be
36 left out. If you compile with PCMCIA_DEBUG=0, the debug code will
37 be present but disabled -- but it can then be enabled for specific
38 modules at load time with a 'pc_debug=#' option to insmod.
39*/
40#ifdef PCMCIA_DEBUG
41static int pc_debug = PCMCIA_DEBUG;
42module_param(pc_debug, int, 0);
43#define DEBUG(n, args...) if (pc_debug>(n)) printk(KERN_DEBUG args);
44static char *version =
45"avma1_cs.c 1.00 1998/01/23 10:00:00 (Carsten Paeth)";
46#else
47#define DEBUG(n, args...)
48#endif
49 33
50/*====================================================================*/ 34/*====================================================================*/
51 35
@@ -119,7 +103,7 @@ static int avma1cs_probe(struct pcmcia_device *p_dev)
119{ 103{
120 local_info_t *local; 104 local_info_t *local;
121 105
122 DEBUG(0, "avma1cs_attach()\n"); 106 dev_dbg(&p_dev->dev, "avma1cs_attach()\n");
123 107
124 /* Allocate space for private device-specific data */ 108 /* Allocate space for private device-specific data */
125 local = kzalloc(sizeof(local_info_t), GFP_KERNEL); 109 local = kzalloc(sizeof(local_info_t), GFP_KERNEL);
@@ -139,8 +123,6 @@ static int avma1cs_probe(struct pcmcia_device *p_dev)
139 p_dev->irq.Attributes = IRQ_TYPE_EXCLUSIVE; 123 p_dev->irq.Attributes = IRQ_TYPE_EXCLUSIVE;
140 p_dev->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING|IRQ_FIRST_SHARED; 124 p_dev->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING|IRQ_FIRST_SHARED;
141 125
142 p_dev->irq.IRQInfo1 = IRQ_LEVEL_ID;
143
144 /* General socket configuration */ 126 /* General socket configuration */
145 p_dev->conf.Attributes = CONF_ENABLE_IRQ; 127 p_dev->conf.Attributes = CONF_ENABLE_IRQ;
146 p_dev->conf.IntType = INT_MEMORY_AND_IO; 128 p_dev->conf.IntType = INT_MEMORY_AND_IO;
@@ -161,7 +143,7 @@ static int avma1cs_probe(struct pcmcia_device *p_dev)
161 143
162static void avma1cs_detach(struct pcmcia_device *link) 144static void avma1cs_detach(struct pcmcia_device *link)
163{ 145{
164 DEBUG(0, "avma1cs_detach(0x%p)\n", link); 146 dev_dbg(&link->dev, "avma1cs_detach(0x%p)\n", link);
165 avma1cs_release(link); 147 avma1cs_release(link);
166 kfree(link->priv); 148 kfree(link->priv);
167} /* avma1cs_detach */ 149} /* avma1cs_detach */
@@ -203,7 +185,7 @@ static int avma1cs_config(struct pcmcia_device *link)
203 185
204 dev = link->priv; 186 dev = link->priv;
205 187
206 DEBUG(0, "avma1cs_config(0x%p)\n", link); 188 dev_dbg(&link->dev, "avma1cs_config(0x%p)\n", link);
207 189
208 devname[0] = 0; 190 devname[0] = 0;
209 if (link->prod_id[1]) 191 if (link->prod_id[1])
@@ -218,7 +200,6 @@ static int avma1cs_config(struct pcmcia_device *link)
218 */ 200 */
219 i = pcmcia_request_irq(link, &link->irq); 201 i = pcmcia_request_irq(link, &link->irq);
220 if (i != 0) { 202 if (i != 0) {
221 cs_error(link, RequestIRQ, i);
222 /* undo */ 203 /* undo */
223 pcmcia_disable_device(link); 204 pcmcia_disable_device(link);
224 break; 205 break;
@@ -229,7 +210,6 @@ static int avma1cs_config(struct pcmcia_device *link)
229 */ 210 */
230 i = pcmcia_request_configuration(link, &link->conf); 211 i = pcmcia_request_configuration(link, &link->conf);
231 if (i != 0) { 212 if (i != 0) {
232 cs_error(link, RequestConfiguration, i);
233 pcmcia_disable_device(link); 213 pcmcia_disable_device(link);
234 break; 214 break;
235 } 215 }
@@ -281,7 +261,7 @@ static void avma1cs_release(struct pcmcia_device *link)
281{ 261{
282 local_info_t *local = link->priv; 262 local_info_t *local = link->priv;
283 263
284 DEBUG(0, "avma1cs_release(0x%p)\n", link); 264 dev_dbg(&link->dev, "avma1cs_release(0x%p)\n", link);
285 265
286 /* now unregister function with hisax */ 266 /* now unregister function with hisax */
287 HiSax_closecard(local->node.minor); 267 HiSax_closecard(local->node.minor);
diff --git a/drivers/isdn/hisax/elsa_cs.c b/drivers/isdn/hisax/elsa_cs.c
index f4d0fe29bcf8..a2f709f53974 100644
--- a/drivers/isdn/hisax/elsa_cs.c
+++ b/drivers/isdn/hisax/elsa_cs.c
@@ -57,23 +57,6 @@ MODULE_DESCRIPTION("ISDN4Linux: PCMCIA client driver for Elsa PCM cards");
57MODULE_AUTHOR("Klaus Lichtenwalder"); 57MODULE_AUTHOR("Klaus Lichtenwalder");
58MODULE_LICENSE("Dual MPL/GPL"); 58MODULE_LICENSE("Dual MPL/GPL");
59 59
60/*
61 All the PCMCIA modules use PCMCIA_DEBUG to control debugging. If
62 you do not define PCMCIA_DEBUG at all, all the debug code will be
63 left out. If you compile with PCMCIA_DEBUG=0, the debug code will
64 be present but disabled -- but it can then be enabled for specific
65 modules at load time with a 'pc_debug=#' option to insmod.
66*/
67
68#ifdef PCMCIA_DEBUG
69static int pc_debug = PCMCIA_DEBUG;
70module_param(pc_debug, int, 0);
71#define DEBUG(n, args...) if (pc_debug>(n)) printk(KERN_DEBUG args);
72static char *version =
73"elsa_cs.c $Revision: 1.2.2.4 $ $Date: 2004/01/25 15:07:06 $ (K.Lichtenwalder)";
74#else
75#define DEBUG(n, args...)
76#endif
77 60
78/*====================================================================*/ 61/*====================================================================*/
79 62
@@ -142,7 +125,7 @@ static int elsa_cs_probe(struct pcmcia_device *link)
142{ 125{
143 local_info_t *local; 126 local_info_t *local;
144 127
145 DEBUG(0, "elsa_cs_attach()\n"); 128 dev_dbg(&link->dev, "elsa_cs_attach()\n");
146 129
147 /* Allocate space for private device-specific data */ 130 /* Allocate space for private device-specific data */
148 local = kzalloc(sizeof(local_info_t), GFP_KERNEL); 131 local = kzalloc(sizeof(local_info_t), GFP_KERNEL);
@@ -155,7 +138,6 @@ static int elsa_cs_probe(struct pcmcia_device *link)
155 138
156 /* Interrupt setup */ 139 /* Interrupt setup */
157 link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING|IRQ_FIRST_SHARED; 140 link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING|IRQ_FIRST_SHARED;
158 link->irq.IRQInfo1 = IRQ_LEVEL_ID|IRQ_SHARE_ID;
159 link->irq.Handler = NULL; 141 link->irq.Handler = NULL;
160 142
161 /* 143 /*
@@ -188,7 +170,7 @@ static void elsa_cs_detach(struct pcmcia_device *link)
188{ 170{
189 local_info_t *info = link->priv; 171 local_info_t *info = link->priv;
190 172
191 DEBUG(0, "elsa_cs_detach(0x%p)\n", link); 173 dev_dbg(&link->dev, "elsa_cs_detach(0x%p)\n", link);
192 174
193 info->busy = 1; 175 info->busy = 1;
194 elsa_cs_release(link); 176 elsa_cs_release(link);
@@ -231,30 +213,25 @@ static int elsa_cs_configcheck(struct pcmcia_device *p_dev,
231static int elsa_cs_config(struct pcmcia_device *link) 213static int elsa_cs_config(struct pcmcia_device *link)
232{ 214{
233 local_info_t *dev; 215 local_info_t *dev;
234 int i, last_fn; 216 int i;
235 IsdnCard_t icard; 217 IsdnCard_t icard;
236 218
237 DEBUG(0, "elsa_config(0x%p)\n", link); 219 dev_dbg(&link->dev, "elsa_config(0x%p)\n", link);
238 dev = link->priv; 220 dev = link->priv;
239 221
240 i = pcmcia_loop_config(link, elsa_cs_configcheck, NULL); 222 i = pcmcia_loop_config(link, elsa_cs_configcheck, NULL);
241 if (i != 0) { 223 if (i != 0)
242 last_fn = RequestIO; 224 goto failed;
243 goto cs_failed;
244 }
245 225
246 i = pcmcia_request_irq(link, &link->irq); 226 i = pcmcia_request_irq(link, &link->irq);
247 if (i != 0) { 227 if (i != 0) {
248 link->irq.AssignedIRQ = 0; 228 link->irq.AssignedIRQ = 0;
249 last_fn = RequestIRQ; 229 goto failed;
250 goto cs_failed;
251 } 230 }
252 231
253 i = pcmcia_request_configuration(link, &link->conf); 232 i = pcmcia_request_configuration(link, &link->conf);
254 if (i != 0) { 233 if (i != 0)
255 last_fn = RequestConfiguration; 234 goto failed;
256 goto cs_failed;
257 }
258 235
259 /* At this point, the dev_node_t structure(s) should be 236 /* At this point, the dev_node_t structure(s) should be
260 initialized and arranged in a linked list at link->dev. *//* */ 237 initialized and arranged in a linked list at link->dev. *//* */
@@ -290,8 +267,7 @@ static int elsa_cs_config(struct pcmcia_device *link)
290 ((local_info_t*)link->priv)->cardnr = i; 267 ((local_info_t*)link->priv)->cardnr = i;
291 268
292 return 0; 269 return 0;
293cs_failed: 270failed:
294 cs_error(link, last_fn, i);
295 elsa_cs_release(link); 271 elsa_cs_release(link);
296 return -ENODEV; 272 return -ENODEV;
297} /* elsa_cs_config */ 273} /* elsa_cs_config */
@@ -308,7 +284,7 @@ static void elsa_cs_release(struct pcmcia_device *link)
308{ 284{
309 local_info_t *local = link->priv; 285 local_info_t *local = link->priv;
310 286
311 DEBUG(0, "elsa_cs_release(0x%p)\n", link); 287 dev_dbg(&link->dev, "elsa_cs_release(0x%p)\n", link);
312 288
313 if (local) { 289 if (local) {
314 if (local->cardnr >= 0) { 290 if (local->cardnr >= 0) {
diff --git a/drivers/isdn/hisax/sedlbauer_cs.c b/drivers/isdn/hisax/sedlbauer_cs.c
index 9a3c9f5e4fe8..af5d393cc2d0 100644
--- a/drivers/isdn/hisax/sedlbauer_cs.c
+++ b/drivers/isdn/hisax/sedlbauer_cs.c
@@ -57,24 +57,6 @@ MODULE_DESCRIPTION("ISDN4Linux: PCMCIA client driver for Sedlbauer cards");
57MODULE_AUTHOR("Marcus Niemann"); 57MODULE_AUTHOR("Marcus Niemann");
58MODULE_LICENSE("Dual MPL/GPL"); 58MODULE_LICENSE("Dual MPL/GPL");
59 59
60/*
61 All the PCMCIA modules use PCMCIA_DEBUG to control debugging. If
62 you do not define PCMCIA_DEBUG at all, all the debug code will be
63 left out. If you compile with PCMCIA_DEBUG=0, the debug code will
64 be present but disabled -- but it can then be enabled for specific
65 modules at load time with a 'pc_debug=#' option to insmod.
66*/
67
68#ifdef PCMCIA_DEBUG
69static int pc_debug = PCMCIA_DEBUG;
70module_param(pc_debug, int, 0);
71#define DEBUG(n, args...) if (pc_debug>(n)) printk(KERN_DEBUG args);
72static char *version =
73"sedlbauer_cs.c 1.1a 2001/01/28 15:04:04 (M.Niemann)";
74#else
75#define DEBUG(n, args...)
76#endif
77
78 60
79/*====================================================================*/ 61/*====================================================================*/
80 62
@@ -151,7 +133,7 @@ static int sedlbauer_probe(struct pcmcia_device *link)
151{ 133{
152 local_info_t *local; 134 local_info_t *local;
153 135
154 DEBUG(0, "sedlbauer_attach()\n"); 136 dev_dbg(&link->dev, "sedlbauer_attach()\n");
155 137
156 /* Allocate space for private device-specific data */ 138 /* Allocate space for private device-specific data */
157 local = kzalloc(sizeof(local_info_t), GFP_KERNEL); 139 local = kzalloc(sizeof(local_info_t), GFP_KERNEL);
@@ -163,7 +145,6 @@ static int sedlbauer_probe(struct pcmcia_device *link)
163 145
164 /* Interrupt setup */ 146 /* Interrupt setup */
165 link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING|IRQ_FIRST_SHARED; 147 link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING|IRQ_FIRST_SHARED;
166 link->irq.IRQInfo1 = IRQ_LEVEL_ID;
167 link->irq.Handler = NULL; 148 link->irq.Handler = NULL;
168 149
169 /* 150 /*
@@ -198,7 +179,7 @@ static int sedlbauer_probe(struct pcmcia_device *link)
198 179
199static void sedlbauer_detach(struct pcmcia_device *link) 180static void sedlbauer_detach(struct pcmcia_device *link)
200{ 181{
201 DEBUG(0, "sedlbauer_detach(0x%p)\n", link); 182 dev_dbg(&link->dev, "sedlbauer_detach(0x%p)\n", link);
202 183
203 ((local_info_t *)link->priv)->stop = 1; 184 ((local_info_t *)link->priv)->stop = 1;
204 sedlbauer_release(link); 185 sedlbauer_release(link);
@@ -214,9 +195,6 @@ static void sedlbauer_detach(struct pcmcia_device *link)
214 device available to the system. 195 device available to the system.
215 196
216======================================================================*/ 197======================================================================*/
217#define CS_CHECK(fn, ret) \
218do { last_fn = (fn); if ((last_ret = (ret)) != 0) goto cs_failed; } while (0)
219
220static int sedlbauer_config_check(struct pcmcia_device *p_dev, 198static int sedlbauer_config_check(struct pcmcia_device *p_dev,
221 cistpl_cftable_entry_t *cfg, 199 cistpl_cftable_entry_t *cfg,
222 cistpl_cftable_entry_t *dflt, 200 cistpl_cftable_entry_t *dflt,
@@ -293,11 +271,11 @@ static int sedlbauer_config_check(struct pcmcia_device *p_dev,
293 req->Base = mem->win[0].host_addr; 271 req->Base = mem->win[0].host_addr;
294 req->Size = mem->win[0].len; 272 req->Size = mem->win[0].len;
295 req->AccessSpeed = 0; 273 req->AccessSpeed = 0;
296 if (pcmcia_request_window(&p_dev, req, &p_dev->win) != 0) 274 if (pcmcia_request_window(p_dev, req, &p_dev->win) != 0)
297 return -ENODEV; 275 return -ENODEV;
298 map.Page = 0; 276 map.Page = 0;
299 map.CardOffset = mem->win[0].card_addr; 277 map.CardOffset = mem->win[0].card_addr;
300 if (pcmcia_map_mem_page(p_dev->win, &map) != 0) 278 if (pcmcia_map_mem_page(p_dev, p_dev->win, &map) != 0)
301 return -ENODEV; 279 return -ENODEV;
302 } 280 }
303 return 0; 281 return 0;
@@ -309,10 +287,10 @@ static int sedlbauer_config(struct pcmcia_device *link)
309{ 287{
310 local_info_t *dev = link->priv; 288 local_info_t *dev = link->priv;
311 win_req_t *req; 289 win_req_t *req;
312 int last_fn, last_ret; 290 int ret;
313 IsdnCard_t icard; 291 IsdnCard_t icard;
314 292
315 DEBUG(0, "sedlbauer_config(0x%p)\n", link); 293 dev_dbg(&link->dev, "sedlbauer_config(0x%p)\n", link);
316 294
317 req = kzalloc(sizeof(win_req_t), GFP_KERNEL); 295 req = kzalloc(sizeof(win_req_t), GFP_KERNEL);
318 if (!req) 296 if (!req)
@@ -330,8 +308,8 @@ static int sedlbauer_config(struct pcmcia_device *link)
330 these things without consulting the CIS, and most client drivers 308 these things without consulting the CIS, and most client drivers
331 will only use the CIS to fill in implementation-defined details. 309 will only use the CIS to fill in implementation-defined details.
332 */ 310 */
333 last_ret = pcmcia_loop_config(link, sedlbauer_config_check, req); 311 ret = pcmcia_loop_config(link, sedlbauer_config_check, req);
334 if (last_ret) 312 if (ret)
335 goto failed; 313 goto failed;
336 314
337 /* 315 /*
@@ -339,15 +317,20 @@ static int sedlbauer_config(struct pcmcia_device *link)
339 handler to the interrupt, unless the 'Handler' member of the 317 handler to the interrupt, unless the 'Handler' member of the
340 irq structure is initialized. 318 irq structure is initialized.
341 */ 319 */
342 if (link->conf.Attributes & CONF_ENABLE_IRQ) 320 if (link->conf.Attributes & CONF_ENABLE_IRQ) {
343 CS_CHECK(RequestIRQ, pcmcia_request_irq(link, &link->irq)); 321 ret = pcmcia_request_irq(link, &link->irq);
322 if (ret)
323 goto failed;
324 }
344 325
345 /* 326 /*
346 This actually configures the PCMCIA socket -- setting up 327 This actually configures the PCMCIA socket -- setting up
347 the I/O windows and the interrupt mapping, and putting the 328 the I/O windows and the interrupt mapping, and putting the
348 card and host interface into "Memory and IO" mode. 329 card and host interface into "Memory and IO" mode.
349 */ 330 */
350 CS_CHECK(RequestConfiguration, pcmcia_request_configuration(link, &link->conf)); 331 ret = pcmcia_request_configuration(link, &link->conf);
332 if (ret)
333 goto failed;
351 334
352 /* 335 /*
353 At this point, the dev_node_t structure(s) need to be 336 At this point, the dev_node_t structure(s) need to be
@@ -380,19 +363,18 @@ static int sedlbauer_config(struct pcmcia_device *link)
380 icard.protocol = protocol; 363 icard.protocol = protocol;
381 icard.typ = ISDN_CTYPE_SEDLBAUER_PCMCIA; 364 icard.typ = ISDN_CTYPE_SEDLBAUER_PCMCIA;
382 365
383 last_ret = hisax_init_pcmcia(link, &(((local_info_t*)link->priv)->stop), &icard); 366 ret = hisax_init_pcmcia(link,
384 if (last_ret < 0) { 367 &(((local_info_t *)link->priv)->stop), &icard);
385 printk(KERN_ERR "sedlbauer_cs: failed to initialize SEDLBAUER PCMCIA %d at i/o %#x\n", 368 if (ret < 0) {
386 last_ret, link->io.BasePort1); 369 printk(KERN_ERR "sedlbauer_cs: failed to initialize SEDLBAUER PCMCIA %d at i/o %#x\n",
370 ret, link->io.BasePort1);
387 sedlbauer_release(link); 371 sedlbauer_release(link);
388 return -ENODEV; 372 return -ENODEV;
389 } else 373 } else
390 ((local_info_t*)link->priv)->cardnr = last_ret; 374 ((local_info_t *)link->priv)->cardnr = ret;
391 375
392 return 0; 376 return 0;
393 377
394cs_failed:
395 cs_error(link, last_fn, last_ret);
396failed: 378failed:
397 sedlbauer_release(link); 379 sedlbauer_release(link);
398 return -ENODEV; 380 return -ENODEV;
@@ -410,7 +392,7 @@ failed:
410static void sedlbauer_release(struct pcmcia_device *link) 392static void sedlbauer_release(struct pcmcia_device *link)
411{ 393{
412 local_info_t *local = link->priv; 394 local_info_t *local = link->priv;
413 DEBUG(0, "sedlbauer_release(0x%p)\n", link); 395 dev_dbg(&link->dev, "sedlbauer_release(0x%p)\n", link);
414 396
415 if (local) { 397 if (local) {
416 if (local->cardnr >= 0) { 398 if (local->cardnr >= 0) {
diff --git a/drivers/isdn/hisax/teles_cs.c b/drivers/isdn/hisax/teles_cs.c
index 623d111544d4..ea705394ce2b 100644
--- a/drivers/isdn/hisax/teles_cs.c
+++ b/drivers/isdn/hisax/teles_cs.c
@@ -38,23 +38,6 @@ MODULE_DESCRIPTION("ISDN4Linux: PCMCIA client driver for Teles PCMCIA cards");
38MODULE_AUTHOR("Christof Petig, christof.petig@wtal.de, Karsten Keil, kkeil@suse.de"); 38MODULE_AUTHOR("Christof Petig, christof.petig@wtal.de, Karsten Keil, kkeil@suse.de");
39MODULE_LICENSE("GPL"); 39MODULE_LICENSE("GPL");
40 40
41/*
42 All the PCMCIA modules use PCMCIA_DEBUG to control debugging. If
43 you do not define PCMCIA_DEBUG at all, all the debug code will be
44 left out. If you compile with PCMCIA_DEBUG=0, the debug code will
45 be present but disabled -- but it can then be enabled for specific
46 modules at load time with a 'pc_debug=#' option to insmod.
47*/
48
49#ifdef PCMCIA_DEBUG
50static int pc_debug = PCMCIA_DEBUG;
51module_param(pc_debug, int, 0);
52#define DEBUG(n, args...) if (pc_debug>(n)) printk(KERN_DEBUG args);
53static char *version =
54"teles_cs.c 2.10 2002/07/30 22:23:34 kkeil";
55#else
56#define DEBUG(n, args...)
57#endif
58 41
59/*====================================================================*/ 42/*====================================================================*/
60 43
@@ -133,7 +116,7 @@ static int teles_probe(struct pcmcia_device *link)
133{ 116{
134 local_info_t *local; 117 local_info_t *local;
135 118
136 DEBUG(0, "teles_attach()\n"); 119 dev_dbg(&link->dev, "teles_attach()\n");
137 120
138 /* Allocate space for private device-specific data */ 121 /* Allocate space for private device-specific data */
139 local = kzalloc(sizeof(local_info_t), GFP_KERNEL); 122 local = kzalloc(sizeof(local_info_t), GFP_KERNEL);
@@ -145,7 +128,6 @@ static int teles_probe(struct pcmcia_device *link)
145 128
146 /* Interrupt setup */ 129 /* Interrupt setup */
147 link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING|IRQ_FIRST_SHARED; 130 link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING|IRQ_FIRST_SHARED;
148 link->irq.IRQInfo1 = IRQ_LEVEL_ID|IRQ_SHARE_ID;
149 link->irq.Handler = NULL; 131 link->irq.Handler = NULL;
150 132
151 /* 133 /*
@@ -178,7 +160,7 @@ static void teles_detach(struct pcmcia_device *link)
178{ 160{
179 local_info_t *info = link->priv; 161 local_info_t *info = link->priv;
180 162
181 DEBUG(0, "teles_detach(0x%p)\n", link); 163 dev_dbg(&link->dev, "teles_detach(0x%p)\n", link);
182 164
183 info->busy = 1; 165 info->busy = 1;
184 teles_cs_release(link); 166 teles_cs_release(link);
@@ -221,30 +203,25 @@ static int teles_cs_configcheck(struct pcmcia_device *p_dev,
221static int teles_cs_config(struct pcmcia_device *link) 203static int teles_cs_config(struct pcmcia_device *link)
222{ 204{
223 local_info_t *dev; 205 local_info_t *dev;
224 int i, last_fn; 206 int i;
225 IsdnCard_t icard; 207 IsdnCard_t icard;
226 208
227 DEBUG(0, "teles_config(0x%p)\n", link); 209 dev_dbg(&link->dev, "teles_config(0x%p)\n", link);
228 dev = link->priv; 210 dev = link->priv;
229 211
230 i = pcmcia_loop_config(link, teles_cs_configcheck, NULL); 212 i = pcmcia_loop_config(link, teles_cs_configcheck, NULL);
231 if (i != 0) { 213 if (i != 0)
232 last_fn = RequestIO;
233 goto cs_failed; 214 goto cs_failed;
234 }
235 215
236 i = pcmcia_request_irq(link, &link->irq); 216 i = pcmcia_request_irq(link, &link->irq);
237 if (i != 0) { 217 if (i != 0) {
238 link->irq.AssignedIRQ = 0; 218 link->irq.AssignedIRQ = 0;
239 last_fn = RequestIRQ;
240 goto cs_failed; 219 goto cs_failed;
241 } 220 }
242 221
243 i = pcmcia_request_configuration(link, &link->conf); 222 i = pcmcia_request_configuration(link, &link->conf);
244 if (i != 0) { 223 if (i != 0)
245 last_fn = RequestConfiguration;
246 goto cs_failed; 224 goto cs_failed;
247 }
248 225
249 /* At this point, the dev_node_t structure(s) should be 226 /* At this point, the dev_node_t structure(s) should be
250 initialized and arranged in a linked list at link->dev. *//* */ 227 initialized and arranged in a linked list at link->dev. *//* */
@@ -283,7 +260,6 @@ static int teles_cs_config(struct pcmcia_device *link)
283 return 0; 260 return 0;
284 261
285cs_failed: 262cs_failed:
286 cs_error(link, last_fn, i);
287 teles_cs_release(link); 263 teles_cs_release(link);
288 return -ENODEV; 264 return -ENODEV;
289} /* teles_cs_config */ 265} /* teles_cs_config */
@@ -300,7 +276,7 @@ static void teles_cs_release(struct pcmcia_device *link)
300{ 276{
301 local_info_t *local = link->priv; 277 local_info_t *local = link->priv;
302 278
303 DEBUG(0, "teles_cs_release(0x%p)\n", link); 279 dev_dbg(&link->dev, "teles_cs_release(0x%p)\n", link);
304 280
305 if (local) { 281 if (local) {
306 if (local->cardnr >= 0) { 282 if (local->cardnr >= 0) {