diff options
-rw-r--r-- | drivers/ata/pata_pcmcia.c | 16 | ||||
-rw-r--r-- | drivers/ide/ide-cs.c | 32 |
2 files changed, 19 insertions, 29 deletions
diff --git a/drivers/ata/pata_pcmcia.c b/drivers/ata/pata_pcmcia.c index dc99e26f8e5b..5f94e214e17d 100644 --- a/drivers/ata/pata_pcmcia.c +++ b/drivers/ata/pata_pcmcia.c | |||
@@ -177,9 +177,6 @@ static struct ata_port_operations pcmcia_8bit_port_ops = { | |||
177 | .drain_fifo = pcmcia_8bit_drain_fifo, | 177 | .drain_fifo = pcmcia_8bit_drain_fifo, |
178 | }; | 178 | }; |
179 | 179 | ||
180 | #define CS_CHECK(fn, ret) \ | ||
181 | do { last_fn = (fn); if ((last_ret = (ret)) != 0) goto cs_failed; } while (0) | ||
182 | |||
183 | 180 | ||
184 | struct pcmcia_config_check { | 181 | struct pcmcia_config_check { |
185 | unsigned long ctl_base; | 182 | unsigned long ctl_base; |
@@ -252,7 +249,7 @@ static int pcmcia_init_one(struct pcmcia_device *pdev) | |||
252 | struct ata_port *ap; | 249 | struct ata_port *ap; |
253 | struct ata_pcmcia_info *info; | 250 | struct ata_pcmcia_info *info; |
254 | struct pcmcia_config_check *stk = NULL; | 251 | struct pcmcia_config_check *stk = NULL; |
255 | int last_ret = 0, last_fn = 0, is_kme = 0, ret = -ENOMEM, p; | 252 | int is_kme = 0, ret = -ENOMEM, p; |
256 | unsigned long io_base, ctl_base; | 253 | unsigned long io_base, ctl_base; |
257 | void __iomem *io_addr, *ctl_addr; | 254 | void __iomem *io_addr, *ctl_addr; |
258 | int n_ports = 1; | 255 | int n_ports = 1; |
@@ -296,8 +293,13 @@ static int pcmcia_init_one(struct pcmcia_device *pdev) | |||
296 | } | 293 | } |
297 | io_base = pdev->io.BasePort1; | 294 | io_base = pdev->io.BasePort1; |
298 | ctl_base = stk->ctl_base; | 295 | ctl_base = stk->ctl_base; |
299 | CS_CHECK(RequestIRQ, pcmcia_request_irq(pdev, &pdev->irq)); | 296 | ret = pcmcia_request_irq(pdev, &pdev->irq); |
300 | CS_CHECK(RequestConfiguration, pcmcia_request_configuration(pdev, &pdev->conf)); | 297 | if (ret) |
298 | goto failed; | ||
299 | |||
300 | ret = pcmcia_request_configuration(pdev, &pdev->conf); | ||
301 | if (ret) | ||
302 | goto failed; | ||
301 | 303 | ||
302 | /* iomap */ | 304 | /* iomap */ |
303 | ret = -ENOMEM; | 305 | ret = -ENOMEM; |
@@ -351,8 +353,6 @@ static int pcmcia_init_one(struct pcmcia_device *pdev) | |||
351 | kfree(stk); | 353 | kfree(stk); |
352 | return 0; | 354 | return 0; |
353 | 355 | ||
354 | cs_failed: | ||
355 | cs_error(pdev, last_fn, last_ret); | ||
356 | failed: | 356 | failed: |
357 | kfree(stk); | 357 | kfree(stk); |
358 | info->ndev = 0; | 358 | info->ndev = 0; |
diff --git a/drivers/ide/ide-cs.c b/drivers/ide/ide-cs.c index 063b933d864a..6cee6c8d0782 100644 --- a/drivers/ide/ide-cs.c +++ b/drivers/ide/ide-cs.c | |||
@@ -60,15 +60,6 @@ MODULE_AUTHOR("David Hinds <dahinds@users.sourceforge.net>"); | |||
60 | MODULE_DESCRIPTION("PCMCIA ATA/IDE card driver"); | 60 | MODULE_DESCRIPTION("PCMCIA ATA/IDE card driver"); |
61 | MODULE_LICENSE("Dual MPL/GPL"); | 61 | MODULE_LICENSE("Dual MPL/GPL"); |
62 | 62 | ||
63 | #define INT_MODULE_PARM(n, v) static int n = v; module_param(n, int, 0) | ||
64 | |||
65 | #ifdef CONFIG_PCMCIA_DEBUG | ||
66 | INT_MODULE_PARM(pc_debug, 0); | ||
67 | #define DEBUG(n, args...) if (pc_debug>(n)) printk(KERN_DEBUG args) | ||
68 | #else | ||
69 | #define DEBUG(n, args...) | ||
70 | #endif | ||
71 | |||
72 | /*====================================================================*/ | 63 | /*====================================================================*/ |
73 | 64 | ||
74 | typedef struct ide_info_t { | 65 | typedef struct ide_info_t { |
@@ -98,7 +89,7 @@ static int ide_probe(struct pcmcia_device *link) | |||
98 | { | 89 | { |
99 | ide_info_t *info; | 90 | ide_info_t *info; |
100 | 91 | ||
101 | DEBUG(0, "ide_attach()\n"); | 92 | dev_dbg(&link->dev, "ide_attach()\n"); |
102 | 93 | ||
103 | /* Create new ide device */ | 94 | /* Create new ide device */ |
104 | info = kzalloc(sizeof(*info), GFP_KERNEL); | 95 | info = kzalloc(sizeof(*info), GFP_KERNEL); |
@@ -134,7 +125,7 @@ static void ide_detach(struct pcmcia_device *link) | |||
134 | ide_hwif_t *hwif = info->host->ports[0]; | 125 | ide_hwif_t *hwif = info->host->ports[0]; |
135 | unsigned long data_addr, ctl_addr; | 126 | unsigned long data_addr, ctl_addr; |
136 | 127 | ||
137 | DEBUG(0, "ide_detach(0x%p)\n", link); | 128 | dev_dbg(&link->dev, "ide_detach(0x%p)\n", link); |
138 | 129 | ||
139 | data_addr = hwif->io_ports.data_addr; | 130 | data_addr = hwif->io_ports.data_addr; |
140 | ctl_addr = hwif->io_ports.ctl_addr; | 131 | ctl_addr = hwif->io_ports.ctl_addr; |
@@ -217,9 +208,6 @@ out_release: | |||
217 | 208 | ||
218 | ======================================================================*/ | 209 | ======================================================================*/ |
219 | 210 | ||
220 | #define CS_CHECK(fn, ret) \ | ||
221 | do { last_fn = (fn); if ((last_ret = (ret)) != 0) goto cs_failed; } while (0) | ||
222 | |||
223 | struct pcmcia_config_check { | 211 | struct pcmcia_config_check { |
224 | unsigned long ctl_base; | 212 | unsigned long ctl_base; |
225 | int skip_vcc; | 213 | int skip_vcc; |
@@ -282,11 +270,11 @@ static int ide_config(struct pcmcia_device *link) | |||
282 | { | 270 | { |
283 | ide_info_t *info = link->priv; | 271 | ide_info_t *info = link->priv; |
284 | struct pcmcia_config_check *stk = NULL; | 272 | struct pcmcia_config_check *stk = NULL; |
285 | int last_ret = 0, last_fn = 0, is_kme = 0; | 273 | int ret = 0, is_kme = 0; |
286 | unsigned long io_base, ctl_base; | 274 | unsigned long io_base, ctl_base; |
287 | struct ide_host *host; | 275 | struct ide_host *host; |
288 | 276 | ||
289 | DEBUG(0, "ide_config(0x%p)\n", link); | 277 | dev_dbg(&link->dev, "ide_config(0x%p)\n", link); |
290 | 278 | ||
291 | is_kme = ((link->manf_id == MANFID_KME) && | 279 | is_kme = ((link->manf_id == MANFID_KME) && |
292 | ((link->card_id == PRODID_KME_KXLC005_A) || | 280 | ((link->card_id == PRODID_KME_KXLC005_A) || |
@@ -306,8 +294,12 @@ static int ide_config(struct pcmcia_device *link) | |||
306 | io_base = link->io.BasePort1; | 294 | io_base = link->io.BasePort1; |
307 | ctl_base = stk->ctl_base; | 295 | ctl_base = stk->ctl_base; |
308 | 296 | ||
309 | CS_CHECK(RequestIRQ, pcmcia_request_irq(link, &link->irq)); | 297 | ret = pcmcia_request_irq(link, &link->irq); |
310 | CS_CHECK(RequestConfiguration, pcmcia_request_configuration(link, &link->conf)); | 298 | if (ret) |
299 | goto failed; | ||
300 | ret = pcmcia_request_configuration(link, &link->conf); | ||
301 | if (ret) | ||
302 | goto failed; | ||
311 | 303 | ||
312 | /* disable drive interrupts during IDE probe */ | 304 | /* disable drive interrupts during IDE probe */ |
313 | outb(0x02, ctl_base); | 305 | outb(0x02, ctl_base); |
@@ -342,8 +334,6 @@ err_mem: | |||
342 | printk(KERN_NOTICE "ide-cs: ide_config failed memory allocation\n"); | 334 | printk(KERN_NOTICE "ide-cs: ide_config failed memory allocation\n"); |
343 | goto failed; | 335 | goto failed; |
344 | 336 | ||
345 | cs_failed: | ||
346 | cs_error(link, last_fn, last_ret); | ||
347 | failed: | 337 | failed: |
348 | kfree(stk); | 338 | kfree(stk); |
349 | ide_release(link); | 339 | ide_release(link); |
@@ -363,7 +353,7 @@ static void ide_release(struct pcmcia_device *link) | |||
363 | ide_info_t *info = link->priv; | 353 | ide_info_t *info = link->priv; |
364 | struct ide_host *host = info->host; | 354 | struct ide_host *host = info->host; |
365 | 355 | ||
366 | DEBUG(0, "ide_release(0x%p)\n", link); | 356 | dev_dbg(&link->dev, "ide_release(0x%p)\n", link); |
367 | 357 | ||
368 | if (info->ndev) | 358 | if (info->ndev) |
369 | /* FIXME: if this fails we need to queue the cleanup somehow | 359 | /* FIXME: if this fails we need to queue the cleanup somehow |