Merge git://github.com/davem330/ide
[pandora-kernel.git] / drivers / staging / iio / industrialio-trigger.c
index d504aa2..90ca2df 100644 (file)
@@ -340,6 +340,9 @@ static ssize_t iio_trigger_write_current(struct device *dev,
 {
        struct iio_dev *dev_info = dev_get_drvdata(dev);
        struct iio_trigger *oldtrig = dev_info->trig;
+       struct iio_trigger *trig;
+       int ret;
+
        mutex_lock(&dev_info->mlock);
        if (dev_info->currentmode == INDIO_RING_TRIGGERED) {
                mutex_unlock(&dev_info->mlock);
@@ -347,7 +350,22 @@ static ssize_t iio_trigger_write_current(struct device *dev,
        }
        mutex_unlock(&dev_info->mlock);
 
-       dev_info->trig = iio_trigger_find_by_name(buf, len);
+       trig = iio_trigger_find_by_name(buf, len);
+
+       if (trig && dev_info->info->validate_trigger) {
+               ret = dev_info->info->validate_trigger(dev_info, trig);
+               if (ret)
+                       return ret;
+       }
+
+       if (trig && trig->validate_device) {
+               ret = trig->validate_device(trig, dev_info);
+               if (ret)
+                       return ret;
+       }
+
+       dev_info->trig = trig;
+
        if (oldtrig && dev_info->trig != oldtrig)
                iio_put_trigger(oldtrig);
        if (dev_info->trig)