]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/iio/industrialio-core.c
Merge remote-tracking branch 'staging/staging-next'
[karo-tx-linux.git] / drivers / iio / industrialio-core.c
index b3fcc2c449d80e2cb1fdfe95dc6ca200d36931e3..208358f9e7e36582152cad8c4f4924d9667a58cc 100644 (file)
@@ -75,6 +75,8 @@ static const char * const iio_chan_type_name_spec[] = {
        [IIO_ENERGY] = "energy",
        [IIO_DISTANCE] = "distance",
        [IIO_VELOCITY] = "velocity",
+       [IIO_CONCENTRATION] = "concentration",
+       [IIO_RESISTANCE] = "resistance",
 };
 
 static const char * const iio_modifier_names[] = {
@@ -111,6 +113,8 @@ static const char * const iio_modifier_names[] = {
        [IIO_MOD_ROOT_SUM_SQUARED_X_Y_Z] = "sqrt(x^2+y^2+z^2)",
        [IIO_MOD_I] = "i",
        [IIO_MOD_Q] = "q",
+       [IIO_MOD_CO2] = "co2",
+       [IIO_MOD_VOC] = "voc",
 };
 
 /* relies on pairs of these shared then separate */
@@ -962,7 +966,7 @@ static void iio_device_unregister_sysfs(struct iio_dev *indio_dev)
 static void iio_dev_release(struct device *device)
 {
        struct iio_dev *indio_dev = dev_to_iio_dev(device);
-       if (indio_dev->modes & INDIO_BUFFER_TRIGGERED)
+       if (indio_dev->modes & (INDIO_BUFFER_TRIGGERED | INDIO_EVENT_TRIGGERED))
                iio_device_unregister_trigger_consumer(indio_dev);
        iio_device_unregister_eventset(indio_dev);
        iio_device_unregister_sysfs(indio_dev);
@@ -1153,6 +1157,8 @@ static long iio_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
 
        if (cmd == IIO_GET_EVENT_FD_IOCTL) {
                fd = iio_event_getfd(indio_dev);
+               if (fd < 0)
+                       return fd;
                if (copy_to_user(ip, &fd, sizeof(fd)))
                        return -EFAULT;
                return 0;
@@ -1241,7 +1247,7 @@ int iio_device_register(struct iio_dev *indio_dev)
                        "Failed to register event set\n");
                goto error_free_sysfs;
        }
-       if (indio_dev->modes & INDIO_BUFFER_TRIGGERED)
+       if (indio_dev->modes & (INDIO_BUFFER_TRIGGERED | INDIO_EVENT_TRIGGERED))
                iio_device_register_trigger_consumer(indio_dev);
 
        if ((indio_dev->modes & INDIO_ALL_BUFFER_MODES) &&