summaryrefslogtreecommitdiff
path: root/drivers/staging/comedi/drivers/comedi_bond.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/staging/comedi/drivers/comedi_bond.c')
-rw-r--r--drivers/staging/comedi/drivers/comedi_bond.c49
1 files changed, 21 insertions, 28 deletions
diff --git a/drivers/staging/comedi/drivers/comedi_bond.c b/drivers/staging/comedi/drivers/comedi_bond.c
index 4507bab1f14c..29412de06c31 100644
--- a/drivers/staging/comedi/drivers/comedi_bond.c
+++ b/drivers/staging/comedi/drivers/comedi_bond.c
@@ -332,30 +332,6 @@ static int doDevConfig(struct comedi_device *dev, struct comedi_devconfig *it)
return 1;
}
-static void doDevUnconfig(struct comedi_device *dev)
-{
- unsigned long devs_closed = 0;
-
- if (devpriv) {
- while (devpriv->ndevs-- && devpriv->devs) {
- struct BondedDevice *bdev;
-
- bdev = devpriv->devs[devpriv->ndevs];
- if (!bdev)
- continue;
- if (!(devs_closed & (0x1 << bdev->minor))) {
- comedi_close(bdev->dev);
- devs_closed |= (0x1 << bdev->minor);
- }
- kfree(bdev);
- }
- kfree(devpriv->devs);
- devpriv->devs = NULL;
- kfree(devpriv);
- dev->private = NULL;
- }
-}
-
static int bonding_attach(struct comedi_device *dev,
struct comedi_devconfig *it)
{
@@ -406,11 +382,28 @@ static int bonding_attach(struct comedi_device *dev,
return 1;
}
-static int bonding_detach(struct comedi_device *dev)
+static void bonding_detach(struct comedi_device *dev)
{
- LOG_MSG("comedi%d: remove\n", dev->minor);
- doDevUnconfig(dev);
- return 0;
+ unsigned long devs_closed = 0;
+
+ if (devpriv) {
+ while (devpriv->ndevs-- && devpriv->devs) {
+ struct BondedDevice *bdev;
+
+ bdev = devpriv->devs[devpriv->ndevs];
+ if (!bdev)
+ continue;
+ if (!(devs_closed & (0x1 << bdev->minor))) {
+ comedi_close(bdev->dev);
+ devs_closed |= (0x1 << bdev->minor);
+ }
+ kfree(bdev);
+ }
+ kfree(devpriv->devs);
+ devpriv->devs = NULL;
+ kfree(devpriv);
+ dev->private = NULL;
+ }
}
static const struct BondingBoard bondingBoards[] = {