staging: comedi: ni_daq_700: refactor the pcmcia attach/detach
PATCH 31/31 staging: comedi: ni_daq_700: refactor the pcmcia attach/detach
Move the pcmcia_disable_device() call where needed in the pcmcia attach/detach and delete the dio700_release() function.
Move the logic of dio700_config() directly into the attach function and properly return an error code when the config fails.
Only set the pcmcia_cur_dev, used by the comedi_driver, if the pcmcia attach is successful. Also, make sure to NULL it in the detach.
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/ni_daq_700.c | 39 +++++++---------------------- 1 file changed, 9 insertions(+), 30 deletions(-)
drivers/staging/comedi/drivers/ni_daq_700.c +9 -30
@@ -164,13 +164,6 @@ static struct comedi_driver driver_dio700 = { .offset = sizeof(struct dio700_board), }; -static void dio700_release (struct pcmcia_device *link) -{ -dev_dbg (&link->dev,"%s\n" , __func__); - -pcmcia_disable_device (link); -} -static int dio700_pcmcia_config_loop (struct pcmcia_device *p_dev,void *priv_data) {
@@ -180,50 +173,36 @@ static int dio700_pcmcia_config_loop(struct pcmcia_device *p_dev,return pcmcia_request_io (p_dev); } -static void dio700_config (struct pcmcia_device *link) +static int dio700_cs_attach (struct pcmcia_device *link) {int ret; -dev_dbg (&link->dev,"%s\n" , __func__); - link->config_flags |=CONF_ENABLE_IRQ |CONF_AUTO_AUDIO |CONF_AUTO_SET_IO ; ret =pcmcia_loop_config (link, dio700_pcmcia_config_loop,NULL ); -if (ret) { -dev_warn (&link->dev,"no configuration found\n" ); +if (ret) goto failed; - }if (!link->irq) goto failed; ret =pcmcia_enable_device (link); -if (ret !=0 ) +if (ret) goto failed; -return ; - -failed: -dev_dbg (&link->dev,"%s failed\n" , __func__); -dio700_release (link); - -} - -static int dio700_cs_attach (struct pcmcia_device *link) -{ -dev_dbg (&link->dev,"%s\n" , __func__); - pcmcia_cur_dev = link; - -dio700_config (link); -return 0 ; + +failed: +pcmcia_disable_device (link); +return ret; }static void dio700_cs_detach (struct pcmcia_device *link) { -dio700_release (link); +pcmcia_disable_device (link); + pcmcia_cur_dev =NULL ; }static const struct pcmcia_device_id dio700_cs_ids[] = {
Signature · 1 line
1.7.11