aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/pcmcia/pcmcia_resource.c11
-rw-r--r--drivers/staging/comedi/drivers/ni_labpc_cs.c5
-rw-r--r--include/pcmcia/cs.h1
-rw-r--r--sound/pcmcia/pdaudiocf/pdaudiocf.c6
4 files changed, 10 insertions, 13 deletions
diff --git a/drivers/pcmcia/pcmcia_resource.c b/drivers/pcmcia/pcmcia_resource.c
index cefc4cda9d3e..8dce223f3f44 100644
--- a/drivers/pcmcia/pcmcia_resource.c
+++ b/drivers/pcmcia/pcmcia_resource.c
@@ -426,10 +426,6 @@ static int pcmcia_release_irq(struct pcmcia_device *p_dev, irq_req_t *req)
426 if (c->state & CONFIG_LOCKED) 426 if (c->state & CONFIG_LOCKED)
427 goto out; 427 goto out;
428 428
429 if (c->irq.Attributes != req->Attributes) {
430 dev_dbg(&s->dev, "IRQ attributes must match assigned ones\n");
431 goto out;
432 }
433 if (s->pcmcia_irq != req->AssignedIRQ) { 429 if (s->pcmcia_irq != req->AssignedIRQ) {
434 dev_dbg(&s->dev, "IRQ must match assigned one\n"); 430 dev_dbg(&s->dev, "IRQ must match assigned one\n");
435 goto out; 431 goto out;
@@ -553,9 +549,9 @@ int pcmcia_request_configuration(struct pcmcia_device *p_dev,
553 if (req->Present & PRESENT_IOBASE_0) 549 if (req->Present & PRESENT_IOBASE_0)
554 c->Option |= COR_ADDR_DECODE; 550 c->Option |= COR_ADDR_DECODE;
555 } 551 }
556 if (req->Attributes & CONF_ENABLE_IRQ) 552 if ((req->Attributes & CONF_ENABLE_IRQ) &&
557 if (!(c->irq.Attributes & IRQ_FORCED_PULSE)) 553 !(req->Attributes & CONF_ENABLE_PULSE_IRQ))
558 c->Option |= COR_LEVEL_REQ; 554 c->Option |= COR_LEVEL_REQ;
559 pcmcia_write_cis_mem(s, 1, (base + CISREG_COR)>>1, 1, &c->Option); 555 pcmcia_write_cis_mem(s, 1, (base + CISREG_COR)>>1, 1, &c->Option);
560 mdelay(40); 556 mdelay(40);
561 } 557 }
@@ -730,7 +726,6 @@ int pcmcia_request_irq(struct pcmcia_device *p_dev, irq_req_t *req)
730 } 726 }
731 } 727 }
732 728
733 c->irq.Attributes = req->Attributes;
734 req->AssignedIRQ = irq; 729 req->AssignedIRQ = irq;
735 730
736 p_dev->_irq = 1; 731 p_dev->_irq = 1;
diff --git a/drivers/staging/comedi/drivers/ni_labpc_cs.c b/drivers/staging/comedi/drivers/ni_labpc_cs.c
index 8ad1055a5cc1..6e4ed0d9105a 100644
--- a/drivers/staging/comedi/drivers/ni_labpc_cs.c
+++ b/drivers/staging/comedi/drivers/ni_labpc_cs.c
@@ -230,7 +230,7 @@ static int labpc_cs_attach(struct pcmcia_device *link)
230 link->priv = local; 230 link->priv = local;
231 231
232 /* Interrupt setup */ 232 /* Interrupt setup */
233 link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING | IRQ_FORCED_PULSE; 233 link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING;
234 link->irq.Handler = NULL; 234 link->irq.Handler = NULL;
235 235
236 /* 236 /*
@@ -307,7 +307,8 @@ static int labpc_pcmcia_config_loop(struct pcmcia_device *p_dev,
307 307
308 /* Do we need to allocate an interrupt? */ 308 /* Do we need to allocate an interrupt? */
309 if (cfg->irq.IRQInfo1 || dflt->irq.IRQInfo1) 309 if (cfg->irq.IRQInfo1 || dflt->irq.IRQInfo1)
310 p_dev->conf.Attributes |= CONF_ENABLE_IRQ; 310 p_dev->conf.Attributes |=
311 (CONF_ENABLE_IRQ | CONF_ENABLE_PULSE_IRQ);
311 312
312 /* IO window settings */ 313 /* IO window settings */
313 p_dev->io.NumPorts1 = p_dev->io.NumPorts2 = 0; 314 p_dev->io.NumPorts1 = p_dev->io.NumPorts2 = 0;
diff --git a/include/pcmcia/cs.h b/include/pcmcia/cs.h
index 75fa3530345b..af615716dc23 100644
--- a/include/pcmcia/cs.h
+++ b/include/pcmcia/cs.h
@@ -85,6 +85,7 @@ typedef struct config_req_t {
85#define CONF_ENABLE_IRQ 0x01 85#define CONF_ENABLE_IRQ 0x01
86#define CONF_ENABLE_DMA 0x02 86#define CONF_ENABLE_DMA 0x02
87#define CONF_ENABLE_SPKR 0x04 87#define CONF_ENABLE_SPKR 0x04
88#define CONF_ENABLE_PULSE_IRQ 0x08
88#define CONF_VALID_CLIENT 0x100 89#define CONF_VALID_CLIENT 0x100
89 90
90/* IntType field */ 91/* IntType field */
diff --git a/sound/pcmcia/pdaudiocf/pdaudiocf.c b/sound/pcmcia/pdaudiocf/pdaudiocf.c
index edaa729126bb..dcf85390c5f9 100644
--- a/sound/pcmcia/pdaudiocf/pdaudiocf.c
+++ b/sound/pcmcia/pdaudiocf/pdaudiocf.c
@@ -142,12 +142,12 @@ static int snd_pdacf_probe(struct pcmcia_device *link)
142 link->io.Attributes1 = IO_DATA_PATH_WIDTH_AUTO; 142 link->io.Attributes1 = IO_DATA_PATH_WIDTH_AUTO;
143 link->io.NumPorts1 = 16; 143 link->io.NumPorts1 = 16;
144 144
145 link->irq.Attributes = IRQ_TYPE_EXCLUSIVE | IRQ_FORCED_PULSE; 145 link->irq.Attributes = IRQ_TYPE_EXCLUSIVE;
146 /* FIXME: This driver should be updated to allow for dynamic IRQ sharing */ 146 /* FIXME: This driver should be updated to allow for dynamic IRQ sharing */
147 /* link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING | IRQ_FORCED_PULSE; */ 147 /* link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING; */
148 148
149 link->irq.Handler = pdacf_interrupt; 149 link->irq.Handler = pdacf_interrupt;
150 link->conf.Attributes = CONF_ENABLE_IRQ; 150 link->conf.Attributes = CONF_ENABLE_IRQ | CONF_ENABLE_PULSE_IRQ;
151 link->conf.IntType = INT_MEMORY_AND_IO; 151 link->conf.IntType = INT_MEMORY_AND_IO;
152 link->conf.ConfigIndex = 1; 152 link->conf.ConfigIndex = 1;
153 link->conf.Present = PRESENT_OPTION; 153 link->conf.Present = PRESENT_OPTION;