diff options
Diffstat (limited to 'drivers/net/wireless/airo_cs.c')
-rw-r--r-- | drivers/net/wireless/airo_cs.c | 55 |
1 files changed, 19 insertions, 36 deletions
diff --git a/drivers/net/wireless/airo_cs.c b/drivers/net/wireless/airo_cs.c index d0593ed9170e..f6036fb42319 100644 --- a/drivers/net/wireless/airo_cs.c +++ b/drivers/net/wireless/airo_cs.c | |||
@@ -43,21 +43,6 @@ | |||
43 | 43 | ||
44 | #include "airo.h" | 44 | #include "airo.h" |
45 | 45 | ||
46 | /* | ||
47 | All the PCMCIA modules use PCMCIA_DEBUG to control debugging. If | ||
48 | you do not define PCMCIA_DEBUG at all, all the debug code will be | ||
49 | left out. If you compile with PCMCIA_DEBUG=0, the debug code will | ||
50 | be present but disabled -- but it can then be enabled for specific | ||
51 | modules at load time with a 'pc_debug=#' option to insmod. | ||
52 | */ | ||
53 | #ifdef PCMCIA_DEBUG | ||
54 | static int pc_debug = PCMCIA_DEBUG; | ||
55 | module_param(pc_debug, int, 0); | ||
56 | static char *version = "$Revision: 1.2 $"; | ||
57 | #define DEBUG(n, args...) if (pc_debug > (n)) printk(KERN_DEBUG args); | ||
58 | #else | ||
59 | #define DEBUG(n, args...) | ||
60 | #endif | ||
61 | 46 | ||
62 | /*====================================================================*/ | 47 | /*====================================================================*/ |
63 | 48 | ||
@@ -145,11 +130,10 @@ static int airo_probe(struct pcmcia_device *p_dev) | |||
145 | { | 130 | { |
146 | local_info_t *local; | 131 | local_info_t *local; |
147 | 132 | ||
148 | DEBUG(0, "airo_attach()\n"); | 133 | dev_dbg(&p_dev->dev, "airo_attach()\n"); |
149 | 134 | ||
150 | /* Interrupt setup */ | 135 | /* Interrupt setup */ |
151 | p_dev->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING; | 136 | p_dev->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING; |
152 | p_dev->irq.IRQInfo1 = IRQ_LEVEL_ID; | ||
153 | p_dev->irq.Handler = NULL; | 137 | p_dev->irq.Handler = NULL; |
154 | 138 | ||
155 | /* | 139 | /* |
@@ -184,7 +168,7 @@ static int airo_probe(struct pcmcia_device *p_dev) | |||
184 | 168 | ||
185 | static void airo_detach(struct pcmcia_device *link) | 169 | static void airo_detach(struct pcmcia_device *link) |
186 | { | 170 | { |
187 | DEBUG(0, "airo_detach(0x%p)\n", link); | 171 | dev_dbg(&link->dev, "airo_detach\n"); |
188 | 172 | ||
189 | airo_release(link); | 173 | airo_release(link); |
190 | 174 | ||
@@ -204,9 +188,6 @@ static void airo_detach(struct pcmcia_device *link) | |||
204 | 188 | ||
205 | ======================================================================*/ | 189 | ======================================================================*/ |
206 | 190 | ||
207 | #define CS_CHECK(fn, ret) \ | ||
208 | do { last_fn = (fn); if ((last_ret = (ret)) != 0) goto cs_failed; } while (0) | ||
209 | |||
210 | static int airo_cs_config_check(struct pcmcia_device *p_dev, | 191 | static int airo_cs_config_check(struct pcmcia_device *p_dev, |
211 | cistpl_cftable_entry_t *cfg, | 192 | cistpl_cftable_entry_t *cfg, |
212 | cistpl_cftable_entry_t *dflt, | 193 | cistpl_cftable_entry_t *dflt, |
@@ -275,11 +256,11 @@ static int airo_cs_config_check(struct pcmcia_device *p_dev, | |||
275 | req->Base = mem->win[0].host_addr; | 256 | req->Base = mem->win[0].host_addr; |
276 | req->Size = mem->win[0].len; | 257 | req->Size = mem->win[0].len; |
277 | req->AccessSpeed = 0; | 258 | req->AccessSpeed = 0; |
278 | if (pcmcia_request_window(&p_dev, req, &p_dev->win) != 0) | 259 | if (pcmcia_request_window(p_dev, req, &p_dev->win) != 0) |
279 | return -ENODEV; | 260 | return -ENODEV; |
280 | map.Page = 0; | 261 | map.Page = 0; |
281 | map.CardOffset = mem->win[0].card_addr; | 262 | map.CardOffset = mem->win[0].card_addr; |
282 | if (pcmcia_map_mem_page(p_dev->win, &map) != 0) | 263 | if (pcmcia_map_mem_page(p_dev, p_dev->win, &map) != 0) |
283 | return -ENODEV; | 264 | return -ENODEV; |
284 | } | 265 | } |
285 | /* If we got this far, we're cool! */ | 266 | /* If we got this far, we're cool! */ |
@@ -291,11 +272,11 @@ static int airo_config(struct pcmcia_device *link) | |||
291 | { | 272 | { |
292 | local_info_t *dev; | 273 | local_info_t *dev; |
293 | win_req_t *req; | 274 | win_req_t *req; |
294 | int last_fn, last_ret; | 275 | int ret; |
295 | 276 | ||
296 | dev = link->priv; | 277 | dev = link->priv; |
297 | 278 | ||
298 | DEBUG(0, "airo_config(0x%p)\n", link); | 279 | dev_dbg(&link->dev, "airo_config\n"); |
299 | 280 | ||
300 | req = kzalloc(sizeof(win_req_t), GFP_KERNEL); | 281 | req = kzalloc(sizeof(win_req_t), GFP_KERNEL); |
301 | if (!req) | 282 | if (!req) |
@@ -315,8 +296,8 @@ static int airo_config(struct pcmcia_device *link) | |||
315 | * and most client drivers will only use the CIS to fill in | 296 | * and most client drivers will only use the CIS to fill in |
316 | * implementation-defined details. | 297 | * implementation-defined details. |
317 | */ | 298 | */ |
318 | last_ret = pcmcia_loop_config(link, airo_cs_config_check, req); | 299 | ret = pcmcia_loop_config(link, airo_cs_config_check, req); |
319 | if (last_ret) | 300 | if (ret) |
320 | goto failed; | 301 | goto failed; |
321 | 302 | ||
322 | /* | 303 | /* |
@@ -324,21 +305,25 @@ static int airo_config(struct pcmcia_device *link) | |||
324 | handler to the interrupt, unless the 'Handler' member of the | 305 | handler to the interrupt, unless the 'Handler' member of the |
325 | irq structure is initialized. | 306 | irq structure is initialized. |
326 | */ | 307 | */ |
327 | if (link->conf.Attributes & CONF_ENABLE_IRQ) | 308 | if (link->conf.Attributes & CONF_ENABLE_IRQ) { |
328 | CS_CHECK(RequestIRQ, pcmcia_request_irq(link, &link->irq)); | 309 | ret = pcmcia_request_irq(link, &link->irq); |
310 | if (ret) | ||
311 | goto failed; | ||
312 | } | ||
329 | 313 | ||
330 | /* | 314 | /* |
331 | This actually configures the PCMCIA socket -- setting up | 315 | This actually configures the PCMCIA socket -- setting up |
332 | the I/O windows and the interrupt mapping, and putting the | 316 | the I/O windows and the interrupt mapping, and putting the |
333 | card and host interface into "Memory and IO" mode. | 317 | card and host interface into "Memory and IO" mode. |
334 | */ | 318 | */ |
335 | CS_CHECK(RequestConfiguration, | 319 | ret = pcmcia_request_configuration(link, &link->conf); |
336 | pcmcia_request_configuration(link, &link->conf)); | 320 | if (ret) |
321 | goto failed; | ||
337 | ((local_info_t *)link->priv)->eth_dev = | 322 | ((local_info_t *)link->priv)->eth_dev = |
338 | init_airo_card(link->irq.AssignedIRQ, | 323 | init_airo_card(link->irq.AssignedIRQ, |
339 | link->io.BasePort1, 1, &handle_to_dev(link)); | 324 | link->io.BasePort1, 1, &link->dev); |
340 | if (!((local_info_t *)link->priv)->eth_dev) | 325 | if (!((local_info_t *)link->priv)->eth_dev) |
341 | goto cs_failed; | 326 | goto failed; |
342 | 327 | ||
343 | /* | 328 | /* |
344 | At this point, the dev_node_t structure(s) need to be | 329 | At this point, the dev_node_t structure(s) need to be |
@@ -368,8 +353,6 @@ static int airo_config(struct pcmcia_device *link) | |||
368 | kfree(req); | 353 | kfree(req); |
369 | return 0; | 354 | return 0; |
370 | 355 | ||
371 | cs_failed: | ||
372 | cs_error(link, last_fn, last_ret); | ||
373 | failed: | 356 | failed: |
374 | airo_release(link); | 357 | airo_release(link); |
375 | kfree(req); | 358 | kfree(req); |
@@ -386,7 +369,7 @@ static int airo_config(struct pcmcia_device *link) | |||
386 | 369 | ||
387 | static void airo_release(struct pcmcia_device *link) | 370 | static void airo_release(struct pcmcia_device *link) |
388 | { | 371 | { |
389 | DEBUG(0, "airo_release(0x%p)\n", link); | 372 | dev_dbg(&link->dev, "airo_release\n"); |
390 | pcmcia_disable_device(link); | 373 | pcmcia_disable_device(link); |
391 | } | 374 | } |
392 | 375 | ||