Merge tag 'regulator-v4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie...
[sfrench/cifs-2.6.git] / drivers / iio / adc / ad7476.c
index be85c2a0ad97feeedd9b0a4ac4d61548d236c57b..b7ecf9aab90fa56ecf3e51584ce24c4bc423211b 100644 (file)
@@ -70,7 +70,7 @@ static irqreturn_t ad7476_trigger_handler(int irq, void  *p)
                goto done;
 
        iio_push_to_buffers_with_timestamp(indio_dev, st->data,
-               iio_get_time_ns());
+               iio_get_time_ns(indio_dev));
 done:
        iio_trigger_notify_done(indio_dev->trig);
 
@@ -106,12 +106,11 @@ static int ad7476_read_raw(struct iio_dev *indio_dev,
 
        switch (m) {
        case IIO_CHAN_INFO_RAW:
-               mutex_lock(&indio_dev->mlock);
-               if (iio_buffer_enabled(indio_dev))
-                       ret = -EBUSY;
-               else
-                       ret = ad7476_scan_direct(st);
-               mutex_unlock(&indio_dev->mlock);
+               ret = iio_device_claim_direct_mode(indio_dev);
+               if (ret)
+                       return ret;
+               ret = ad7476_scan_direct(st);
+               iio_device_release_direct_mode(indio_dev);
 
                if (ret < 0)
                        return ret;
@@ -228,6 +227,7 @@ static int ad7476_probe(struct spi_device *spi)
 
        /* Establish that the iio_dev is a child of the spi device */
        indio_dev->dev.parent = &spi->dev;
+       indio_dev->dev.of_node = spi->dev.of_node;
        indio_dev->name = spi_get_device_id(spi)->name;
        indio_dev->modes = INDIO_DIRECT_MODE;
        indio_dev->channels = st->chip_info->channel;