diff options
-rw-r--r-- | drivers/staging/comedi/drivers/ni_daq_dio24.c | 57 |
1 files changed, 19 insertions, 38 deletions
diff --git a/drivers/staging/comedi/drivers/ni_daq_dio24.c b/drivers/staging/comedi/drivers/ni_daq_dio24.c index 4cdf928ffb7c..6cdf45efbf8b 100644 --- a/drivers/staging/comedi/drivers/ni_daq_dio24.c +++ b/drivers/staging/comedi/drivers/ni_daq_dio24.c @@ -184,45 +184,13 @@ static void dio24_detach(struct comedi_device *dev) free_irq(dev->irq, dev); }; -static void dio24_config(struct pcmcia_device *link); - struct local_info_t { struct pcmcia_device *link; struct bus_operations *bus; }; -static int dio24_cs_attach(struct pcmcia_device *link) -{ - struct local_info_t *local; - - dev_info(&link->dev, "ni_daq_dio24: HOLA SOY YO - CS-attach!\n"); - - dev_dbg(&link->dev, "dio24_cs_attach()\n"); - - /* Allocate space for private device-specific data */ - local = kzalloc(sizeof(struct local_info_t), GFP_KERNEL); - if (!local) - return -ENOMEM; - local->link = link; - link->priv = local; - - pcmcia_cur_dev = link; - - dio24_config(link); - - return 0; -} /* dio24_cs_attach */ - -static void dio24_cs_detach(struct pcmcia_device *link) -{ - pcmcia_disable_device(link); - - /* This points to the parent local_info_t struct */ - kfree(link->priv); -} - static int dio24_pcmcia_config_loop(struct pcmcia_device *p_dev, - void *priv_data) + void *priv_data) { if (p_dev->config_index == 0) return -EINVAL; @@ -230,13 +198,18 @@ static int dio24_pcmcia_config_loop(struct pcmcia_device *p_dev, return pcmcia_request_io(p_dev); } -static void dio24_config(struct pcmcia_device *link) +static int dio24_cs_attach(struct pcmcia_device *link) { + struct local_info_t *local; int ret; - dev_info(&link->dev, "ni_daq_dio24: HOLA SOY YO! - config\n"); + local = kzalloc(sizeof(*local), GFP_KERNEL); + if (!local) + return -ENOMEM; + local->link = link; + link->priv = local; - dev_dbg(&link->dev, "dio24_config\n"); + pcmcia_cur_dev = link; link->config_flags |= CONF_ENABLE_IRQ | CONF_AUTO_AUDIO | CONF_AUTO_SET_IO; @@ -254,11 +227,19 @@ static void dio24_config(struct pcmcia_device *link) if (ret) goto failed; - return; + return 0; failed: - dev_info(&link->dev, "Fallo"); pcmcia_disable_device(link); + return ret; +} + +static void dio24_cs_detach(struct pcmcia_device *link) +{ + pcmcia_disable_device(link); + + /* This points to the parent local_info_t struct */ + kfree(link->priv); } static const struct pcmcia_device_id dio24_cs_ids[] = { |