diff options
Diffstat (limited to 'drivers/net/wireless/atmel_cs.c')
-rw-r--r-- | drivers/net/wireless/atmel_cs.c | 51 |
1 files changed, 17 insertions, 34 deletions
diff --git a/drivers/net/wireless/atmel_cs.c b/drivers/net/wireless/atmel_cs.c index ddaa859c3491..32407911842f 100644 --- a/drivers/net/wireless/atmel_cs.c +++ b/drivers/net/wireless/atmel_cs.c | |||
@@ -55,22 +55,6 @@ | |||
55 | 55 | ||
56 | #include "atmel.h" | 56 | #include "atmel.h" |
57 | 57 | ||
58 | /* | ||
59 | All the PCMCIA modules use PCMCIA_DEBUG to control debugging. If | ||
60 | you do not define PCMCIA_DEBUG at all, all the debug code will be | ||
61 | left out. If you compile with PCMCIA_DEBUG=0, the debug code will | ||
62 | be present but disabled -- but it can then be enabled for specific | ||
63 | modules at load time with a 'pc_debug=#' option to insmod. | ||
64 | */ | ||
65 | |||
66 | #ifdef PCMCIA_DEBUG | ||
67 | static int pc_debug = PCMCIA_DEBUG; | ||
68 | module_param(pc_debug, int, 0); | ||
69 | static char *version = "$Revision: 1.2 $"; | ||
70 | #define DEBUG(n, args...) if (pc_debug>(n)) printk(KERN_DEBUG args); | ||
71 | #else | ||
72 | #define DEBUG(n, args...) | ||
73 | #endif | ||
74 | 58 | ||
75 | /*====================================================================*/ | 59 | /*====================================================================*/ |
76 | 60 | ||
@@ -155,11 +139,10 @@ static int atmel_probe(struct pcmcia_device *p_dev) | |||
155 | { | 139 | { |
156 | local_info_t *local; | 140 | local_info_t *local; |
157 | 141 | ||
158 | DEBUG(0, "atmel_attach()\n"); | 142 | dev_dbg(&p_dev->dev, "atmel_attach()\n"); |
159 | 143 | ||
160 | /* Interrupt setup */ | 144 | /* Interrupt setup */ |
161 | p_dev->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING; | 145 | p_dev->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING; |
162 | p_dev->irq.IRQInfo1 = IRQ_LEVEL_ID; | ||
163 | p_dev->irq.Handler = NULL; | 146 | p_dev->irq.Handler = NULL; |
164 | 147 | ||
165 | /* | 148 | /* |
@@ -194,7 +177,7 @@ static int atmel_probe(struct pcmcia_device *p_dev) | |||
194 | 177 | ||
195 | static void atmel_detach(struct pcmcia_device *link) | 178 | static void atmel_detach(struct pcmcia_device *link) |
196 | { | 179 | { |
197 | DEBUG(0, "atmel_detach(0x%p)\n", link); | 180 | dev_dbg(&link->dev, "atmel_detach\n"); |
198 | 181 | ||
199 | atmel_release(link); | 182 | atmel_release(link); |
200 | 183 | ||
@@ -209,9 +192,6 @@ static void atmel_detach(struct pcmcia_device *link) | |||
209 | 192 | ||
210 | ======================================================================*/ | 193 | ======================================================================*/ |
211 | 194 | ||
212 | #define CS_CHECK(fn, ret) \ | ||
213 | do { last_fn = (fn); if ((last_ret = (ret)) != 0) goto cs_failed; } while (0) | ||
214 | |||
215 | /* Call-back function to interrogate PCMCIA-specific information | 195 | /* Call-back function to interrogate PCMCIA-specific information |
216 | about the current existance of the card */ | 196 | about the current existance of the card */ |
217 | static int card_present(void *arg) | 197 | static int card_present(void *arg) |
@@ -275,13 +255,13 @@ static int atmel_config_check(struct pcmcia_device *p_dev, | |||
275 | static int atmel_config(struct pcmcia_device *link) | 255 | static int atmel_config(struct pcmcia_device *link) |
276 | { | 256 | { |
277 | local_info_t *dev; | 257 | local_info_t *dev; |
278 | int last_fn, last_ret; | 258 | int ret; |
279 | struct pcmcia_device_id *did; | 259 | struct pcmcia_device_id *did; |
280 | 260 | ||
281 | dev = link->priv; | 261 | dev = link->priv; |
282 | did = dev_get_drvdata(&handle_to_dev(link)); | 262 | did = dev_get_drvdata(&link->dev); |
283 | 263 | ||
284 | DEBUG(0, "atmel_config(0x%p)\n", link); | 264 | dev_dbg(&link->dev, "atmel_config\n"); |
285 | 265 | ||
286 | /* | 266 | /* |
287 | In this loop, we scan the CIS for configuration table entries, | 267 | In this loop, we scan the CIS for configuration table entries, |
@@ -303,31 +283,36 @@ static int atmel_config(struct pcmcia_device *link) | |||
303 | handler to the interrupt, unless the 'Handler' member of the | 283 | handler to the interrupt, unless the 'Handler' member of the |
304 | irq structure is initialized. | 284 | irq structure is initialized. |
305 | */ | 285 | */ |
306 | if (link->conf.Attributes & CONF_ENABLE_IRQ) | 286 | if (link->conf.Attributes & CONF_ENABLE_IRQ) { |
307 | CS_CHECK(RequestIRQ, pcmcia_request_irq(link, &link->irq)); | 287 | ret = pcmcia_request_irq(link, &link->irq); |
288 | if (ret) | ||
289 | goto failed; | ||
290 | } | ||
308 | 291 | ||
309 | /* | 292 | /* |
310 | This actually configures the PCMCIA socket -- setting up | 293 | This actually configures the PCMCIA socket -- setting up |
311 | the I/O windows and the interrupt mapping, and putting the | 294 | the I/O windows and the interrupt mapping, and putting the |
312 | card and host interface into "Memory and IO" mode. | 295 | card and host interface into "Memory and IO" mode. |
313 | */ | 296 | */ |
314 | CS_CHECK(RequestConfiguration, pcmcia_request_configuration(link, &link->conf)); | 297 | ret = pcmcia_request_configuration(link, &link->conf); |
298 | if (ret) | ||
299 | goto failed; | ||
315 | 300 | ||
316 | if (link->irq.AssignedIRQ == 0) { | 301 | if (link->irq.AssignedIRQ == 0) { |
317 | printk(KERN_ALERT | 302 | printk(KERN_ALERT |
318 | "atmel: cannot assign IRQ: check that CONFIG_ISA is set in kernel config."); | 303 | "atmel: cannot assign IRQ: check that CONFIG_ISA is set in kernel config."); |
319 | goto cs_failed; | 304 | goto failed; |
320 | } | 305 | } |
321 | 306 | ||
322 | ((local_info_t*)link->priv)->eth_dev = | 307 | ((local_info_t*)link->priv)->eth_dev = |
323 | init_atmel_card(link->irq.AssignedIRQ, | 308 | init_atmel_card(link->irq.AssignedIRQ, |
324 | link->io.BasePort1, | 309 | link->io.BasePort1, |
325 | did ? did->driver_info : ATMEL_FW_TYPE_NONE, | 310 | did ? did->driver_info : ATMEL_FW_TYPE_NONE, |
326 | &handle_to_dev(link), | 311 | &link->dev, |
327 | card_present, | 312 | card_present, |
328 | link); | 313 | link); |
329 | if (!((local_info_t*)link->priv)->eth_dev) | 314 | if (!((local_info_t*)link->priv)->eth_dev) |
330 | goto cs_failed; | 315 | goto failed; |
331 | 316 | ||
332 | 317 | ||
333 | /* | 318 | /* |
@@ -340,8 +325,6 @@ static int atmel_config(struct pcmcia_device *link) | |||
340 | 325 | ||
341 | return 0; | 326 | return 0; |
342 | 327 | ||
343 | cs_failed: | ||
344 | cs_error(link, last_fn, last_ret); | ||
345 | failed: | 328 | failed: |
346 | atmel_release(link); | 329 | atmel_release(link); |
347 | return -ENODEV; | 330 | return -ENODEV; |
@@ -359,7 +342,7 @@ static void atmel_release(struct pcmcia_device *link) | |||
359 | { | 342 | { |
360 | struct net_device *dev = ((local_info_t*)link->priv)->eth_dev; | 343 | struct net_device *dev = ((local_info_t*)link->priv)->eth_dev; |
361 | 344 | ||
362 | DEBUG(0, "atmel_release(0x%p)\n", link); | 345 | dev_dbg(&link->dev, "atmel_release\n"); |
363 | 346 | ||
364 | if (dev) | 347 | if (dev) |
365 | stop_atmel_card(dev); | 348 | stop_atmel_card(dev); |