Commit a7debe78 authored by Dominik Brodowski's avatar Dominik Brodowski

pcmcia: pass FORCED_PULSE parameter in pcmcia_request_configuration()

As it's only used there it makes no sense relying on pcmcia_request_irq().

CC: alsa-devel@alsa-project.org
Signed-off-by: default avatarDominik Brodowski <linux@dominikbrodowski.net>
parent 6f840afb
...@@ -426,10 +426,6 @@ static int pcmcia_release_irq(struct pcmcia_device *p_dev, irq_req_t *req) ...@@ -426,10 +426,6 @@ static int pcmcia_release_irq(struct pcmcia_device *p_dev, irq_req_t *req)
if (c->state & CONFIG_LOCKED) if (c->state & CONFIG_LOCKED)
goto out; goto out;
if (c->irq.Attributes != req->Attributes) {
dev_dbg(&s->dev, "IRQ attributes must match assigned ones\n");
goto out;
}
if (s->pcmcia_irq != req->AssignedIRQ) { if (s->pcmcia_irq != req->AssignedIRQ) {
dev_dbg(&s->dev, "IRQ must match assigned one\n"); dev_dbg(&s->dev, "IRQ must match assigned one\n");
goto out; goto out;
...@@ -553,9 +549,9 @@ int pcmcia_request_configuration(struct pcmcia_device *p_dev, ...@@ -553,9 +549,9 @@ int pcmcia_request_configuration(struct pcmcia_device *p_dev,
if (req->Present & PRESENT_IOBASE_0) if (req->Present & PRESENT_IOBASE_0)
c->Option |= COR_ADDR_DECODE; c->Option |= COR_ADDR_DECODE;
} }
if (req->Attributes & CONF_ENABLE_IRQ) if ((req->Attributes & CONF_ENABLE_IRQ) &&
if (!(c->irq.Attributes & IRQ_FORCED_PULSE)) !(req->Attributes & CONF_ENABLE_PULSE_IRQ))
c->Option |= COR_LEVEL_REQ; c->Option |= COR_LEVEL_REQ;
pcmcia_write_cis_mem(s, 1, (base + CISREG_COR)>>1, 1, &c->Option); pcmcia_write_cis_mem(s, 1, (base + CISREG_COR)>>1, 1, &c->Option);
mdelay(40); mdelay(40);
} }
...@@ -730,7 +726,6 @@ int pcmcia_request_irq(struct pcmcia_device *p_dev, irq_req_t *req) ...@@ -730,7 +726,6 @@ int pcmcia_request_irq(struct pcmcia_device *p_dev, irq_req_t *req)
} }
} }
c->irq.Attributes = req->Attributes;
req->AssignedIRQ = irq; req->AssignedIRQ = irq;
p_dev->_irq = 1; p_dev->_irq = 1;
......
...@@ -230,7 +230,7 @@ static int labpc_cs_attach(struct pcmcia_device *link) ...@@ -230,7 +230,7 @@ static int labpc_cs_attach(struct pcmcia_device *link)
link->priv = local; link->priv = local;
/* Interrupt setup */ /* Interrupt setup */
link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING | IRQ_FORCED_PULSE; link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING;
link->irq.Handler = NULL; link->irq.Handler = NULL;
/* /*
...@@ -307,7 +307,8 @@ static int labpc_pcmcia_config_loop(struct pcmcia_device *p_dev, ...@@ -307,7 +307,8 @@ static int labpc_pcmcia_config_loop(struct pcmcia_device *p_dev,
/* Do we need to allocate an interrupt? */ /* Do we need to allocate an interrupt? */
if (cfg->irq.IRQInfo1 || dflt->irq.IRQInfo1) if (cfg->irq.IRQInfo1 || dflt->irq.IRQInfo1)
p_dev->conf.Attributes |= CONF_ENABLE_IRQ; p_dev->conf.Attributes |=
(CONF_ENABLE_IRQ | CONF_ENABLE_PULSE_IRQ);
/* IO window settings */ /* IO window settings */
p_dev->io.NumPorts1 = p_dev->io.NumPorts2 = 0; p_dev->io.NumPorts1 = p_dev->io.NumPorts2 = 0;
......
...@@ -85,6 +85,7 @@ typedef struct config_req_t { ...@@ -85,6 +85,7 @@ typedef struct config_req_t {
#define CONF_ENABLE_IRQ 0x01 #define CONF_ENABLE_IRQ 0x01
#define CONF_ENABLE_DMA 0x02 #define CONF_ENABLE_DMA 0x02
#define CONF_ENABLE_SPKR 0x04 #define CONF_ENABLE_SPKR 0x04
#define CONF_ENABLE_PULSE_IRQ 0x08
#define CONF_VALID_CLIENT 0x100 #define CONF_VALID_CLIENT 0x100
/* IntType field */ /* IntType field */
......
...@@ -142,12 +142,12 @@ static int snd_pdacf_probe(struct pcmcia_device *link) ...@@ -142,12 +142,12 @@ static int snd_pdacf_probe(struct pcmcia_device *link)
link->io.Attributes1 = IO_DATA_PATH_WIDTH_AUTO; link->io.Attributes1 = IO_DATA_PATH_WIDTH_AUTO;
link->io.NumPorts1 = 16; link->io.NumPorts1 = 16;
link->irq.Attributes = IRQ_TYPE_EXCLUSIVE | IRQ_FORCED_PULSE; link->irq.Attributes = IRQ_TYPE_EXCLUSIVE;
/* FIXME: This driver should be updated to allow for dynamic IRQ sharing */ /* FIXME: This driver should be updated to allow for dynamic IRQ sharing */
/* link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING | IRQ_FORCED_PULSE; */ /* link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING; */
link->irq.Handler = pdacf_interrupt; link->irq.Handler = pdacf_interrupt;
link->conf.Attributes = CONF_ENABLE_IRQ; link->conf.Attributes = CONF_ENABLE_IRQ | CONF_ENABLE_PULSE_IRQ;
link->conf.IntType = INT_MEMORY_AND_IO; link->conf.IntType = INT_MEMORY_AND_IO;
link->conf.ConfigIndex = 1; link->conf.ConfigIndex = 1;
link->conf.Present = PRESENT_OPTION; link->conf.Present = PRESENT_OPTION;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment