diff options
author | Dominik Brodowski <linux@dominikbrodowski.net> | 2010-03-07 06:21:16 -0500 |
---|---|---|
committer | Dominik Brodowski <linux@dominikbrodowski.net> | 2010-05-10 04:23:13 -0400 |
commit | eb14120f743d29744d9475bffec56ff4ad43a749 (patch) | |
tree | 56857094d2b0cfc0ecbd1685f18d6edbe78e140f /drivers/isdn/hisax/teles_cs.c | |
parent | a7debe789dfcaee9c4d81e5738b0be8c5d93930b (diff) |
pcmcia: re-work pcmcia_request_irq()
Instead of the old pcmcia_request_irq() interface, drivers may now
choose between:
- calling request_irq/free_irq directly. Use the IRQ from *p_dev->irq.
- use pcmcia_request_irq(p_dev, handler_t); the PCMCIA core will
clean up automatically on calls to pcmcia_disable_device() or
device ejection.
- drivers still not capable of IRQF_SHARED (or not telling us so) may
use the deprecated pcmcia_request_exclusive_irq() for the time
being; they might receive a shared IRQ nonetheless.
CC: linux-bluetooth@vger.kernel.org
CC: netdev@vger.kernel.org
CC: linux-wireless@vger.kernel.org
CC: linux-serial@vger.kernel.org
CC: alsa-devel@alsa-project.org
CC: linux-usb@vger.kernel.org
CC: linux-ide@vger.kernel.org
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
Diffstat (limited to 'drivers/isdn/hisax/teles_cs.c')
-rw-r--r-- | drivers/isdn/hisax/teles_cs.c | 13 |
1 files changed, 3 insertions, 10 deletions
diff --git a/drivers/isdn/hisax/teles_cs.c b/drivers/isdn/hisax/teles_cs.c index d010a0da8e19..02dec13f25e5 100644 --- a/drivers/isdn/hisax/teles_cs.c +++ b/drivers/isdn/hisax/teles_cs.c | |||
@@ -126,10 +126,6 @@ static int __devinit teles_probe(struct pcmcia_device *link) | |||
126 | local->p_dev = link; | 126 | local->p_dev = link; |
127 | link->priv = local; | 127 | link->priv = local; |
128 | 128 | ||
129 | /* Interrupt setup */ | ||
130 | link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING; | ||
131 | link->irq.Handler = NULL; | ||
132 | |||
133 | /* | 129 | /* |
134 | General socket configuration defaults can go here. In this | 130 | General socket configuration defaults can go here. In this |
135 | client, we assume very little, and rely on the CIS for almost | 131 | client, we assume very little, and rely on the CIS for almost |
@@ -213,11 +209,8 @@ static int __devinit teles_cs_config(struct pcmcia_device *link) | |||
213 | if (i != 0) | 209 | if (i != 0) |
214 | goto cs_failed; | 210 | goto cs_failed; |
215 | 211 | ||
216 | i = pcmcia_request_irq(link, &link->irq); | 212 | if (!link->irq) |
217 | if (i != 0) { | ||
218 | link->irq.AssignedIRQ = 0; | ||
219 | goto cs_failed; | 213 | goto cs_failed; |
220 | } | ||
221 | 214 | ||
222 | i = pcmcia_request_configuration(link, &link->conf); | 215 | i = pcmcia_request_configuration(link, &link->conf); |
223 | if (i != 0) | 216 | if (i != 0) |
@@ -234,7 +227,7 @@ static int __devinit teles_cs_config(struct pcmcia_device *link) | |||
234 | printk(KERN_INFO "%s: index 0x%02x:", | 227 | printk(KERN_INFO "%s: index 0x%02x:", |
235 | dev->node.dev_name, link->conf.ConfigIndex); | 228 | dev->node.dev_name, link->conf.ConfigIndex); |
236 | if (link->conf.Attributes & CONF_ENABLE_IRQ) | 229 | if (link->conf.Attributes & CONF_ENABLE_IRQ) |
237 | printk(", irq %d", link->irq.AssignedIRQ); | 230 | printk(", irq %d", link->irq); |
238 | if (link->io.NumPorts1) | 231 | if (link->io.NumPorts1) |
239 | printk(", io 0x%04x-0x%04x", link->io.BasePort1, | 232 | printk(", io 0x%04x-0x%04x", link->io.BasePort1, |
240 | link->io.BasePort1+link->io.NumPorts1-1); | 233 | link->io.BasePort1+link->io.NumPorts1-1); |
@@ -243,7 +236,7 @@ static int __devinit teles_cs_config(struct pcmcia_device *link) | |||
243 | link->io.BasePort2+link->io.NumPorts2-1); | 236 | link->io.BasePort2+link->io.NumPorts2-1); |
244 | printk("\n"); | 237 | printk("\n"); |
245 | 238 | ||
246 | icard.para[0] = link->irq.AssignedIRQ; | 239 | icard.para[0] = link->irq; |
247 | icard.para[1] = link->io.BasePort1; | 240 | icard.para[1] = link->io.BasePort1; |
248 | icard.protocol = protocol; | 241 | icard.protocol = protocol; |
249 | icard.typ = ISDN_CTYPE_TELESPCMCIA; | 242 | icard.typ = ISDN_CTYPE_TELESPCMCIA; |