iio: adc: ti-ads1015: add helper to set conversion mode
authorAkinobu Mita <akinobu.mita@gmail.com>
Thu, 20 Jul 2017 15:24:24 +0000 (00:24 +0900)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Sun, 20 Aug 2017 14:41:15 +0000 (15:41 +0100)
This adds a helper function to set conversion mode as there are a fair
number of users.

Cc: Daniel Baluta <daniel.baluta@gmail.com>
Cc: Jonathan Cameron <jic23@kernel.org>
Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/adc/ti-ads1015.c

index 6f22f46000e2d0a587cc111ca47d0dde569a2dc2..92451faeb21437613a0f220f05758f655c79e4be 100644 (file)
@@ -570,6 +570,13 @@ static void ads1015_get_channels_config(struct i2c_client *client)
        }
 }
 
+static int ads1015_set_conv_mode(struct ads1015_data *data, int mode)
+{
+       return regmap_update_bits(data->regmap, ADS1015_CFG_REG,
+                                 ADS1015_CFG_MOD_MASK,
+                                 mode << ADS1015_CFG_MOD_SHIFT);
+}
+
 static int ads1015_probe(struct i2c_client *client,
                         const struct i2c_device_id *id)
 {
@@ -628,9 +635,7 @@ static int ads1015_probe(struct i2c_client *client,
                return ret;
        }
 
-       ret = regmap_update_bits(data->regmap, ADS1015_CFG_REG,
-                               ADS1015_CFG_MOD_MASK,
-                               ADS1015_CONTINUOUS << ADS1015_CFG_MOD_SHIFT);
+       ret = ads1015_set_conv_mode(data, ADS1015_CONTINUOUS);
        if (ret)
                return ret;
 
@@ -671,9 +676,7 @@ static int ads1015_remove(struct i2c_client *client)
        iio_triggered_buffer_cleanup(indio_dev);
 
        /* power down single shot mode */
-       return regmap_update_bits(data->regmap, ADS1015_CFG_REG,
-                                 ADS1015_CFG_MOD_MASK,
-                                 ADS1015_SINGLESHOT << ADS1015_CFG_MOD_SHIFT);
+       return ads1015_set_conv_mode(data, ADS1015_SINGLESHOT);
 }
 
 #ifdef CONFIG_PM
@@ -682,9 +685,7 @@ static int ads1015_runtime_suspend(struct device *dev)
        struct iio_dev *indio_dev = i2c_get_clientdata(to_i2c_client(dev));
        struct ads1015_data *data = iio_priv(indio_dev);
 
-       return regmap_update_bits(data->regmap, ADS1015_CFG_REG,
-                                 ADS1015_CFG_MOD_MASK,
-                                 ADS1015_SINGLESHOT << ADS1015_CFG_MOD_SHIFT);
+       return ads1015_set_conv_mode(data, ADS1015_SINGLESHOT);
 }
 
 static int ads1015_runtime_resume(struct device *dev)
@@ -693,9 +694,7 @@ static int ads1015_runtime_resume(struct device *dev)
        struct ads1015_data *data = iio_priv(indio_dev);
        int ret;
 
-       ret = regmap_update_bits(data->regmap, ADS1015_CFG_REG,
-                                 ADS1015_CFG_MOD_MASK,
-                                 ADS1015_CONTINUOUS << ADS1015_CFG_MOD_SHIFT);
+       ret = ads1015_set_conv_mode(data, ADS1015_CONTINUOUS);
        if (!ret)
                data->conv_invalid = true;