staging: comedi: das08_cs: refactor the pcmcia probe/remove
PATCH 10/12 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 <[email protected]>
Cc Ian Abbott <[email protected]>
Cc Frank Mori Hess <[email protected]>
Cc Greg Kroah-Hartman <[email protected]>
--- drivers/staging/comedi/drivers/das08_cs.c | 38 +++++++------------------------ 1 file changed, 8 insertions(+), 30 deletions(-)
drivers/staging/comedi/drivers/das08_cs.c +8 -30
@@ -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[] = {
Signature · 1 line
1.7.11