diff options
author | H Hartley Sweeten <hartleys@visionengravers.com> | 2012-07-03 02:47:47 +0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-07-07 02:51:19 +0400 |
commit | ae6eba84efd2ccc214ed50e8b35bbc54cb50121b (patch) | |
tree | 14cff50dfea13e1e61a64b31149e90da12544f94 | |
parent | 6d4ef6d6360193c6acd0d41a88ddd7034af286f3 (diff) | |
download | linux-ae6eba84efd2ccc214ed50e8b35bbc54cb50121b.tar.xz |
staging: comedi: das08_cs: refactor the pcmcia probe/remove
Move the pcmcia_disable_device() call where needed in the pcmcia
probe/remove and delete the das08_pcmcia_release() function.
Move the logic of the das08_pcmcia_config() directly into the
probe function and properly return an error code when the config
fails.
Only set cur_dev, used by the comedi_driver, if the pcmcia probe
is successful. Also, make sure to NULL it in the remove.
Remove all the kernel messages in the pcmcia support code. They
are just added noise.
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r-- | drivers/staging/comedi/drivers/das08_cs.c | 38 |
1 files changed, 8 insertions, 30 deletions
diff --git a/drivers/staging/comedi/drivers/das08_cs.c b/drivers/staging/comedi/drivers/das08_cs.c index d02250e6f0c1..f2f33e1ea516 100644 --- a/drivers/staging/comedi/drivers/das08_cs.c +++ b/drivers/staging/comedi/drivers/das08_cs.c @@ -104,12 +104,6 @@ static int das08_cs_attach(struct comedi_device *dev, return das08_common_attach(dev, iobase); } -static void das08_pcmcia_release(struct pcmcia_device *link) -{ - dev_dbg(&link->dev, "das08_pcmcia_release\n"); - pcmcia_disable_device(link); -} - static int das08_pcmcia_config_loop(struct pcmcia_device *p_dev, void *priv_data) { @@ -119,19 +113,15 @@ static int das08_pcmcia_config_loop(struct pcmcia_device *p_dev, return pcmcia_request_io(p_dev); } -static void das08_pcmcia_config(struct pcmcia_device *link) +static int das08_pcmcia_attach(struct pcmcia_device *link) { int ret; - dev_dbg(&link->dev, "das08_pcmcia_config\n"); - link->config_flags |= CONF_ENABLE_IRQ | CONF_AUTO_SET_IO; ret = pcmcia_loop_config(link, das08_pcmcia_config_loop, NULL); - if (ret) { - dev_warn(&link->dev, "no configuration found\n"); + if (ret) goto failed; - } if (!link->irq) goto failed; @@ -140,30 +130,18 @@ static void das08_pcmcia_config(struct pcmcia_device *link) if (ret) goto failed; - return; - -failed: - das08_pcmcia_release(link); - -} - -static int das08_pcmcia_attach(struct pcmcia_device *link) -{ - dev_dbg(&link->dev, "das08_pcmcia_attach()\n"); - cur_dev = link; - - das08_pcmcia_config(link); - return 0; + +failed: + pcmcia_disable_device(link); + return ret; } static void das08_pcmcia_detach(struct pcmcia_device *link) { - - dev_dbg(&link->dev, "das08_pcmcia_detach\n"); - - das08_pcmcia_release(link); + pcmcia_disable_device(link); + cur_dev = NULL; } static const struct pcmcia_device_id das08_cs_id_table[] = { |