diff options
author | Alan Cox <alan@redhat.com> | 2008-10-05 12:35:41 -0400 |
---|---|---|
committer | Dominik Brodowski <linux@dominikbrodowski.net> | 2008-10-17 17:07:10 -0400 |
commit | aafcf998c333a2a29e12093437eef32a60a8018d (patch) | |
tree | 585dd11b346ddf47c3ddf562d8754b20f62403cc /drivers | |
parent | 26e9a397774a0e94efbb8a0bf4a952c28d808cab (diff) |
pcmcia: IRQ_TYPE_EXCLUSIVE is long obsoleted
Switch more drivers to dynamic sharing after checking their IRQ handlers
use dev_id and are robust
Signed-off-by: Alan Cox <alan@redhat.com>
Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/bluetooth/bluecard_cs.c | 2 | ||||
-rw-r--r-- | drivers/bluetooth/bt3c_cs.c | 6 | ||||
-rw-r--r-- | drivers/bluetooth/btuart_cs.c | 6 | ||||
-rw-r--r-- | drivers/bluetooth/dtl1_cs.c | 7 | ||||
-rw-r--r-- | drivers/char/pcmcia/synclink_cs.c | 2 | ||||
-rw-r--r-- | drivers/parport/parport_cs.c | 2 |
6 files changed, 16 insertions, 9 deletions
diff --git a/drivers/bluetooth/bluecard_cs.c b/drivers/bluetooth/bluecard_cs.c index e6ee21d99d92..b0e569ba730d 100644 --- a/drivers/bluetooth/bluecard_cs.c +++ b/drivers/bluetooth/bluecard_cs.c | |||
@@ -867,7 +867,7 @@ static int bluecard_probe(struct pcmcia_device *link) | |||
867 | 867 | ||
868 | link->io.Attributes1 = IO_DATA_PATH_WIDTH_8; | 868 | link->io.Attributes1 = IO_DATA_PATH_WIDTH_8; |
869 | link->io.NumPorts1 = 8; | 869 | link->io.NumPorts1 = 8; |
870 | link->irq.Attributes = IRQ_TYPE_EXCLUSIVE | IRQ_HANDLE_PRESENT; | 870 | link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING | IRQ_HANDLE_PRESENT; |
871 | link->irq.IRQInfo1 = IRQ_LEVEL_ID; | 871 | link->irq.IRQInfo1 = IRQ_LEVEL_ID; |
872 | 872 | ||
873 | link->irq.Handler = bluecard_interrupt; | 873 | link->irq.Handler = bluecard_interrupt; |
diff --git a/drivers/bluetooth/bt3c_cs.c b/drivers/bluetooth/bt3c_cs.c index 2cbe70b66470..b3e4d07a4ac2 100644 --- a/drivers/bluetooth/bt3c_cs.c +++ b/drivers/bluetooth/bt3c_cs.c | |||
@@ -343,6 +343,7 @@ static irqreturn_t bt3c_interrupt(int irq, void *dev_inst) | |||
343 | bt3c_info_t *info = dev_inst; | 343 | bt3c_info_t *info = dev_inst; |
344 | unsigned int iobase; | 344 | unsigned int iobase; |
345 | int iir; | 345 | int iir; |
346 | irqreturn_t r = IRQ_NONE; | ||
346 | 347 | ||
347 | BUG_ON(!info->hdev); | 348 | BUG_ON(!info->hdev); |
348 | 349 | ||
@@ -374,11 +375,12 @@ static irqreturn_t bt3c_interrupt(int irq, void *dev_inst) | |||
374 | 375 | ||
375 | outb(iir, iobase + CONTROL); | 376 | outb(iir, iobase + CONTROL); |
376 | } | 377 | } |
378 | r = IRQ_HANDLED; | ||
377 | } | 379 | } |
378 | 380 | ||
379 | spin_unlock(&(info->lock)); | 381 | spin_unlock(&(info->lock)); |
380 | 382 | ||
381 | return IRQ_HANDLED; | 383 | return r; |
382 | } | 384 | } |
383 | 385 | ||
384 | 386 | ||
@@ -657,7 +659,7 @@ static int bt3c_probe(struct pcmcia_device *link) | |||
657 | 659 | ||
658 | link->io.Attributes1 = IO_DATA_PATH_WIDTH_8; | 660 | link->io.Attributes1 = IO_DATA_PATH_WIDTH_8; |
659 | link->io.NumPorts1 = 8; | 661 | link->io.NumPorts1 = 8; |
660 | link->irq.Attributes = IRQ_TYPE_EXCLUSIVE | IRQ_HANDLE_PRESENT; | 662 | link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING | IRQ_HANDLE_PRESENT; |
661 | link->irq.IRQInfo1 = IRQ_LEVEL_ID; | 663 | link->irq.IRQInfo1 = IRQ_LEVEL_ID; |
662 | 664 | ||
663 | link->irq.Handler = bt3c_interrupt; | 665 | link->irq.Handler = bt3c_interrupt; |
diff --git a/drivers/bluetooth/btuart_cs.c b/drivers/bluetooth/btuart_cs.c index 8e556b7ff9f6..efd689a062eb 100644 --- a/drivers/bluetooth/btuart_cs.c +++ b/drivers/bluetooth/btuart_cs.c | |||
@@ -293,6 +293,7 @@ static irqreturn_t btuart_interrupt(int irq, void *dev_inst) | |||
293 | unsigned int iobase; | 293 | unsigned int iobase; |
294 | int boguscount = 0; | 294 | int boguscount = 0; |
295 | int iir, lsr; | 295 | int iir, lsr; |
296 | irqreturn_t r = IRQ_NONE; | ||
296 | 297 | ||
297 | BUG_ON(!info->hdev); | 298 | BUG_ON(!info->hdev); |
298 | 299 | ||
@@ -302,6 +303,7 @@ static irqreturn_t btuart_interrupt(int irq, void *dev_inst) | |||
302 | 303 | ||
303 | iir = inb(iobase + UART_IIR) & UART_IIR_ID; | 304 | iir = inb(iobase + UART_IIR) & UART_IIR_ID; |
304 | while (iir) { | 305 | while (iir) { |
306 | r = IRQ_HANDLED; | ||
305 | 307 | ||
306 | /* Clear interrupt */ | 308 | /* Clear interrupt */ |
307 | lsr = inb(iobase + UART_LSR); | 309 | lsr = inb(iobase + UART_LSR); |
@@ -335,7 +337,7 @@ static irqreturn_t btuart_interrupt(int irq, void *dev_inst) | |||
335 | 337 | ||
336 | spin_unlock(&(info->lock)); | 338 | spin_unlock(&(info->lock)); |
337 | 339 | ||
338 | return IRQ_HANDLED; | 340 | return r; |
339 | } | 341 | } |
340 | 342 | ||
341 | 343 | ||
@@ -586,7 +588,7 @@ static int btuart_probe(struct pcmcia_device *link) | |||
586 | 588 | ||
587 | link->io.Attributes1 = IO_DATA_PATH_WIDTH_8; | 589 | link->io.Attributes1 = IO_DATA_PATH_WIDTH_8; |
588 | link->io.NumPorts1 = 8; | 590 | link->io.NumPorts1 = 8; |
589 | link->irq.Attributes = IRQ_TYPE_EXCLUSIVE | IRQ_HANDLE_PRESENT; | 591 | link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING | IRQ_HANDLE_PRESENT; |
590 | link->irq.IRQInfo1 = IRQ_LEVEL_ID; | 592 | link->irq.IRQInfo1 = IRQ_LEVEL_ID; |
591 | 593 | ||
592 | link->irq.Handler = btuart_interrupt; | 594 | link->irq.Handler = btuart_interrupt; |
diff --git a/drivers/bluetooth/dtl1_cs.c b/drivers/bluetooth/dtl1_cs.c index e6e6b037695a..901bdd95655f 100644 --- a/drivers/bluetooth/dtl1_cs.c +++ b/drivers/bluetooth/dtl1_cs.c | |||
@@ -297,6 +297,7 @@ static irqreturn_t dtl1_interrupt(int irq, void *dev_inst) | |||
297 | unsigned char msr; | 297 | unsigned char msr; |
298 | int boguscount = 0; | 298 | int boguscount = 0; |
299 | int iir, lsr; | 299 | int iir, lsr; |
300 | irqreturn_t r = IRQ_NONE; | ||
300 | 301 | ||
301 | BUG_ON(!info->hdev); | 302 | BUG_ON(!info->hdev); |
302 | 303 | ||
@@ -307,6 +308,7 @@ static irqreturn_t dtl1_interrupt(int irq, void *dev_inst) | |||
307 | iir = inb(iobase + UART_IIR) & UART_IIR_ID; | 308 | iir = inb(iobase + UART_IIR) & UART_IIR_ID; |
308 | while (iir) { | 309 | while (iir) { |
309 | 310 | ||
311 | r = IRQ_HANDLED; | ||
310 | /* Clear interrupt */ | 312 | /* Clear interrupt */ |
311 | lsr = inb(iobase + UART_LSR); | 313 | lsr = inb(iobase + UART_LSR); |
312 | 314 | ||
@@ -343,11 +345,12 @@ static irqreturn_t dtl1_interrupt(int irq, void *dev_inst) | |||
343 | info->ri_latch = msr & UART_MSR_RI; | 345 | info->ri_latch = msr & UART_MSR_RI; |
344 | clear_bit(XMIT_WAITING, &(info->tx_state)); | 346 | clear_bit(XMIT_WAITING, &(info->tx_state)); |
345 | dtl1_write_wakeup(info); | 347 | dtl1_write_wakeup(info); |
348 | r = IRQ_HANDLED; | ||
346 | } | 349 | } |
347 | 350 | ||
348 | spin_unlock(&(info->lock)); | 351 | spin_unlock(&(info->lock)); |
349 | 352 | ||
350 | return IRQ_HANDLED; | 353 | return r; |
351 | } | 354 | } |
352 | 355 | ||
353 | 356 | ||
@@ -568,7 +571,7 @@ static int dtl1_probe(struct pcmcia_device *link) | |||
568 | 571 | ||
569 | link->io.Attributes1 = IO_DATA_PATH_WIDTH_8; | 572 | link->io.Attributes1 = IO_DATA_PATH_WIDTH_8; |
570 | link->io.NumPorts1 = 8; | 573 | link->io.NumPorts1 = 8; |
571 | link->irq.Attributes = IRQ_TYPE_EXCLUSIVE | IRQ_HANDLE_PRESENT; | 574 | link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING | IRQ_HANDLE_PRESENT; |
572 | link->irq.IRQInfo1 = IRQ_LEVEL_ID; | 575 | link->irq.IRQInfo1 = IRQ_LEVEL_ID; |
573 | 576 | ||
574 | link->irq.Handler = dtl1_interrupt; | 577 | link->irq.Handler = dtl1_interrupt; |
diff --git a/drivers/char/pcmcia/synclink_cs.c b/drivers/char/pcmcia/synclink_cs.c index 9a626e50b793..4d64a02612a4 100644 --- a/drivers/char/pcmcia/synclink_cs.c +++ b/drivers/char/pcmcia/synclink_cs.c | |||
@@ -554,7 +554,7 @@ static int mgslpc_probe(struct pcmcia_device *link) | |||
554 | /* Initialize the struct pcmcia_device structure */ | 554 | /* Initialize the struct pcmcia_device structure */ |
555 | 555 | ||
556 | /* Interrupt setup */ | 556 | /* Interrupt setup */ |
557 | link->irq.Attributes = IRQ_TYPE_EXCLUSIVE; | 557 | link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING; |
558 | link->irq.IRQInfo1 = IRQ_LEVEL_ID; | 558 | link->irq.IRQInfo1 = IRQ_LEVEL_ID; |
559 | link->irq.Handler = NULL; | 559 | link->irq.Handler = NULL; |
560 | 560 | ||
diff --git a/drivers/parport/parport_cs.c b/drivers/parport/parport_cs.c index b1899e9c1f65..0cd5fbc7f2c2 100644 --- a/drivers/parport/parport_cs.c +++ b/drivers/parport/parport_cs.c | |||
@@ -112,7 +112,7 @@ static int parport_probe(struct pcmcia_device *link) | |||
112 | 112 | ||
113 | link->io.Attributes1 = IO_DATA_PATH_WIDTH_8; | 113 | link->io.Attributes1 = IO_DATA_PATH_WIDTH_8; |
114 | link->io.Attributes2 = IO_DATA_PATH_WIDTH_8; | 114 | link->io.Attributes2 = IO_DATA_PATH_WIDTH_8; |
115 | link->irq.Attributes = IRQ_TYPE_EXCLUSIVE; | 115 | link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING; |
116 | link->irq.IRQInfo1 = IRQ_LEVEL_ID; | 116 | link->irq.IRQInfo1 = IRQ_LEVEL_ID; |
117 | link->conf.Attributes = CONF_ENABLE_IRQ; | 117 | link->conf.Attributes = CONF_ENABLE_IRQ; |
118 | link->conf.IntType = INT_MEMORY_AND_IO; | 118 | link->conf.IntType = INT_MEMORY_AND_IO; |