Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 354243
b: refs/heads/master
c: bea5b90
h: refs/heads/master
i:
  354241: 9c0fadf
  354239: 0e89c24
v: v3
  • Loading branch information
H Hartley Sweeten authored and Greg Kroah-Hartman committed Jan 30, 2013
1 parent c8944ae commit 4658dd9
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 60 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 63e563af82e643cc0aaf3409fea2328809f2cf36
refs/heads/master: bea5b9035dae264e5da4a8a6aacc8bace0647c35
113 changes: 54 additions & 59 deletions trunk/drivers/staging/comedi/drivers/ni_mio_cs.c
Original file line number Diff line number Diff line change
Expand Up @@ -247,67 +247,8 @@ static void mio_cs_detach(struct comedi_device *dev)
free_irq(dev->irq, dev);
}

static void mio_cs_config(struct pcmcia_device *link);
static void cs_release(struct pcmcia_device *link);
static void cs_detach(struct pcmcia_device *);

static struct pcmcia_device *cur_dev;

static int cs_attach(struct pcmcia_device *link)
{
cur_dev = link;

mio_cs_config(link);

return 0;
}

static void cs_release(struct pcmcia_device *link)
{
pcmcia_disable_device(link);
}

static void cs_detach(struct pcmcia_device *link)
{
cs_release(link);
}

static int mio_pcmcia_config_loop(struct pcmcia_device *p_dev, void *priv_data)
{
int base, ret;

p_dev->resource[0]->flags &= ~IO_DATA_PATH_WIDTH;
p_dev->resource[0]->flags |= IO_DATA_PATH_WIDTH_16;

for (base = 0x000; base < 0x400; base += 0x20) {
p_dev->resource[0]->start = base;
ret = pcmcia_request_io(p_dev);
if (!ret)
return 0;
}
return -ENODEV;
}


static void mio_cs_config(struct pcmcia_device *link)
{
int ret;

DPRINTK("mio_cs_config(link=%p)\n", link);
link->config_flags |= CONF_ENABLE_IRQ | CONF_AUTO_SET_IO;

ret = pcmcia_loop_config(link, mio_pcmcia_config_loop, NULL);
if (ret) {
dev_warn(&link->dev, "no configuration found\n");
return;
}

if (!link->irq)
dev_info(&link->dev, "no IRQ available\n");

ret = pcmcia_enable_device(link);
}

static int mio_cs_attach(struct comedi_device *dev, struct comedi_devconfig *it)
{
struct ni_private *devpriv;
Expand Down Expand Up @@ -393,6 +334,60 @@ static int ni_getboardtype(struct comedi_device *dev,
return 0;
}

static int mio_pcmcia_config_loop(struct pcmcia_device *p_dev, void *priv_data)
{
int base, ret;

p_dev->resource[0]->flags &= ~IO_DATA_PATH_WIDTH;
p_dev->resource[0]->flags |= IO_DATA_PATH_WIDTH_16;

for (base = 0x000; base < 0x400; base += 0x20) {
p_dev->resource[0]->start = base;
ret = pcmcia_request_io(p_dev);
if (!ret)
return 0;
}
return -ENODEV;
}

static void mio_cs_config(struct pcmcia_device *link)
{
int ret;

DPRINTK("mio_cs_config(link=%p)\n", link);
link->config_flags |= CONF_ENABLE_IRQ | CONF_AUTO_SET_IO;

ret = pcmcia_loop_config(link, mio_pcmcia_config_loop, NULL);
if (ret) {
dev_warn(&link->dev, "no configuration found\n");
return;
}

if (!link->irq)
dev_info(&link->dev, "no IRQ available\n");

ret = pcmcia_enable_device(link);
}

static int cs_attach(struct pcmcia_device *link)
{
cur_dev = link;

mio_cs_config(link);

return 0;
}

static void cs_release(struct pcmcia_device *link)
{
pcmcia_disable_device(link);
}

static void cs_detach(struct pcmcia_device *link)
{
cs_release(link);
}

static const struct pcmcia_device_id ni_mio_cs_ids[] = {
PCMCIA_DEVICE_MANF_CARD(0x010b, 0x010d), /* DAQCard-ai-16xe-50 */
PCMCIA_DEVICE_MANF_CARD(0x010b, 0x010c), /* DAQCard-ai-16e-4 */
Expand Down

0 comments on commit 4658dd9

Please sign in to comment.