mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-03 07:38:10 +00:00
staging: comedi: make attach handler optional
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>
This commit is contained in:
parent
3131de834e
commit
8c3714d60c
1 changed files with 16 additions and 3 deletions
|
@ -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;
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue