These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / drivers / staging / iio / iio_simple_dummy.c
index b47bf9f..43fe4ba 100644 (file)
@@ -30,7 +30,7 @@
  * dummy devices are registered.
  */
 static unsigned instances = 1;
-module_param(instances, int, 0);
+module_param(instances, uint, 0);
 
 /* Pointer array used to fake bus elements */
 static struct iio_dev **iio_dummy_devs;
@@ -137,7 +137,7 @@ static const struct iio_chan_spec iio_dummy_channels[] = {
                 */
                .info_mask_shared_by_dir = BIT(IIO_CHAN_INFO_SAMP_FREQ),
                /* The ordering of elements in the buffer via an enum */
-               .scan_index = voltage0,
+               .scan_index = DUMMY_INDEX_VOLTAGE_0,
                .scan_type = { /* Description of storage in buffer */
                        .sign = 'u', /* unsigned */
                        .realbits = 13, /* 13 bits */
@@ -176,7 +176,7 @@ static const struct iio_chan_spec iio_dummy_channels[] = {
                 * sampling_frequency
                 * The frequency in Hz at which the channels are sampled
                 */
-               .scan_index = diffvoltage1m2,
+               .scan_index = DUMMY_INDEX_DIFFVOLTAGE_1M2,
                .scan_type = { /* Description of storage in buffer */
                        .sign = 's', /* signed */
                        .realbits = 12, /* 12 bits */
@@ -194,7 +194,7 @@ static const struct iio_chan_spec iio_dummy_channels[] = {
                .info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
                .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE),
                .info_mask_shared_by_dir = BIT(IIO_CHAN_INFO_SAMP_FREQ),
-               .scan_index = diffvoltage3m4,
+               .scan_index = DUMMY_INDEX_DIFFVOLTAGE_3M4,
                .scan_type = {
                        .sign = 's',
                        .realbits = 11,
@@ -221,7 +221,7 @@ static const struct iio_chan_spec iio_dummy_channels[] = {
                BIT(IIO_CHAN_INFO_CALIBSCALE) |
                BIT(IIO_CHAN_INFO_CALIBBIAS),
                .info_mask_shared_by_dir = BIT(IIO_CHAN_INFO_SAMP_FREQ),
-               .scan_index = accelx,
+               .scan_index = DUMMY_INDEX_ACCELX,
                .scan_type = { /* Description of storage in buffer */
                        .sign = 's', /* signed */
                        .realbits = 16, /* 16 bits */
@@ -364,8 +364,7 @@ static int iio_dummy_read_raw(struct iio_dev *indio_dev,
                                ret = IIO_VAL_INT_PLUS_MICRO;
                                break;
                        case 1:
-                               /* all differential adc channels ->
-                                * 0.000001344 */
+                               /* all differential adc -> 0.000001344 */
                                *val = 0;
                                *val2 = 1344;
                                ret = IIO_VAL_INT_PLUS_NANO;
@@ -611,7 +610,6 @@ static int iio_dummy_probe(int index)
         */
        iio_dummy_devs[index] = indio_dev;
 
-
        /*
         * Set the device name.
         *
@@ -665,9 +663,8 @@ error_ret:
  *
  * Parameters follow those of iio_dummy_probe for buses.
  */
-static int iio_dummy_remove(int index)
+static void iio_dummy_remove(int index)
 {
-       int ret;
        /*
         * Get a pointer to the device instance iio_dev structure
         * from the bus subsystem. E.g.
@@ -676,7 +673,6 @@ static int iio_dummy_remove(int index)
         */
        struct iio_dev *indio_dev = iio_dummy_devs[index];
 
-
        /* Unregister the device */
        iio_device_unregister(indio_dev);
 
@@ -685,15 +681,10 @@ static int iio_dummy_remove(int index)
        /* Buffered capture related cleanup */
        iio_simple_dummy_unconfigure_buffer(indio_dev);
 
-       ret = iio_simple_dummy_events_unregister(indio_dev);
-       if (ret)
-               goto error_ret;
+       iio_simple_dummy_events_unregister(indio_dev);
 
        /* Free all structures */
        iio_device_free(indio_dev);
-
-error_ret:
-       return ret;
 }
 
 /**
@@ -722,9 +713,16 @@ static __init int iio_dummy_init(void)
        for (i = 0; i < instances; i++) {
                ret = iio_dummy_probe(i);
                if (ret < 0)
-                       return ret;
+                       goto error_remove_devs;
        }
        return 0;
+
+error_remove_devs:
+       while (i--)
+               iio_dummy_remove(i);
+
+       kfree(iio_dummy_devs);
+       return ret;
 }
 module_init(iio_dummy_init);