Skip to content

Commit

Permalink
staging: comedi: make attach handler optional
Browse files Browse the repository at this point in the history
Some low-level Comedi drivers no longer support manual configuration of
devices with the COMEDI_DEVCONFIG ioctl (used by the comedi_config
program).  For those drivers, the 'attach_pci' or 'attach_usb' handler
will be set in the struct comedi_driver to configure devices
automatically (via comedi_pci_auto_config() or
comedi_usb_auto_config()).  Their 'attach' handlers are redundant but
the the comedi core module currently requires it to be set.

Make the 'attach' handler optional and issue a warning if something
wants to call it.

Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Ian Abbott authored and Greg Kroah-Hartman committed Aug 15, 2012
1 parent 3131de8 commit 8c3714d
Showing 1 changed file with 16 additions and 3 deletions.
19 changes: 16 additions & 3 deletions drivers/staging/comedi/drivers.c
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,14 @@ int comedi_device_attach(struct comedi_device *dev, struct comedi_devconfig *it)
}
return -EIO;
}
if (driv->attach == NULL) {
/* driver does not support manual configuration */
dev_warn(dev->class_dev,
"driver '%s' does not support attach using comedi_config\n",
driv->driver_name);
module_put(driv->module);
return -ENOSYS;
}
/* initialize dev->driver here so
* comedi_error() can be called from attach */
dev->driver = driv;
Expand Down Expand Up @@ -885,13 +893,18 @@ static int comedi_auto_config_wrapper(struct comedi_device *dev, void *context)
dev->board_ptr = comedi_recognize(driv, it->board_name);
if (dev->board_ptr == NULL) {
printk(KERN_WARNING
"comedi: auto config failed to find board entry"
" '%s' for driver '%s'\n", it->board_name,
driv->driver_name);
"comedi: auto config failed to find board entry '%s' for driver '%s'\n",
it->board_name, driv->driver_name);
comedi_report_boards(driv);
return -EINVAL;
}
}
if (!driv->attach) {
printk(KERN_WARNING
"comedi: BUG! driver '%s' using old-style auto config but has no attach handler\n",
driv->driver_name);
return -EINVAL;
}
return driv->attach(dev, it);
}

Expand Down

0 comments on commit 8c3714d

Please sign in to comment.