#define BMG160_AUTO_SUSPEND_DELAY_MS   2000
 
 struct bmg160_data {
-       struct device *dev;
        struct regmap *regmap;
        struct iio_trigger *dready_trig;
        struct iio_trigger *motion_trig;
 
 static int bmg160_set_mode(struct bmg160_data *data, u8 mode)
 {
+       struct device *dev = regmap_get_device(data->regmap);
        int ret;
 
        ret = regmap_write(data->regmap, BMG160_REG_PMU_LPW, mode);
        if (ret < 0) {
-               dev_err(data->dev, "Error writing reg_pmu_lpw\n");
+               dev_err(dev, "Error writing reg_pmu_lpw\n");
                return ret;
        }
 
 
 static int bmg160_set_bw(struct bmg160_data *data, int val)
 {
+       struct device *dev = regmap_get_device(data->regmap);
        int ret;
        int bw_bits;
 
 
        ret = regmap_write(data->regmap, BMG160_REG_PMU_BW, bw_bits);
        if (ret < 0) {
-               dev_err(data->dev, "Error writing reg_pmu_bw\n");
+               dev_err(dev, "Error writing reg_pmu_bw\n");
                return ret;
        }
 
 
 static int bmg160_chip_init(struct bmg160_data *data)
 {
+       struct device *dev = regmap_get_device(data->regmap);
        int ret;
        unsigned int val;
 
        ret = regmap_read(data->regmap, BMG160_REG_CHIP_ID, &val);
        if (ret < 0) {
-               dev_err(data->dev, "Error reading reg_chip_id\n");
+               dev_err(dev, "Error reading reg_chip_id\n");
                return ret;
        }
 
-       dev_dbg(data->dev, "Chip Id %x\n", val);
+       dev_dbg(dev, "Chip Id %x\n", val);
        if (val != BMG160_CHIP_ID_VAL) {
-               dev_err(data->dev, "invalid chip %x\n", val);
+               dev_err(dev, "invalid chip %x\n", val);
                return -ENODEV;
        }
 
        /* Set Default Range */
        ret = regmap_write(data->regmap, BMG160_REG_RANGE, BMG160_RANGE_500DPS);
        if (ret < 0) {
-               dev_err(data->dev, "Error writing reg_range\n");
+               dev_err(dev, "Error writing reg_range\n");
                return ret;
        }
        data->dps_range = BMG160_RANGE_500DPS;
 
        ret = regmap_read(data->regmap, BMG160_REG_SLOPE_THRES, &val);
        if (ret < 0) {
-               dev_err(data->dev, "Error reading reg_slope_thres\n");
+               dev_err(dev, "Error reading reg_slope_thres\n");
                return ret;
        }
        data->slope_thres = val;
        ret = regmap_update_bits(data->regmap, BMG160_REG_INT_EN_1,
                                 BMG160_INT1_BIT_OD, 0);
        if (ret < 0) {
-               dev_err(data->dev, "Error updating bits in reg_int_en_1\n");
+               dev_err(dev, "Error updating bits in reg_int_en_1\n");
                return ret;
        }
 
                           BMG160_INT_MODE_LATCH_INT |
                           BMG160_INT_MODE_LATCH_RESET);
        if (ret < 0) {
-               dev_err(data->dev,
+               dev_err(dev,
                        "Error writing reg_motion_intr\n");
                return ret;
        }
 static int bmg160_set_power_state(struct bmg160_data *data, bool on)
 {
 #ifdef CONFIG_PM
+       struct device *dev = regmap_get_device(data->regmap);
        int ret;
 
        if (on)
-               ret = pm_runtime_get_sync(data->dev);
+               ret = pm_runtime_get_sync(dev);
        else {
-               pm_runtime_mark_last_busy(data->dev);
-               ret = pm_runtime_put_autosuspend(data->dev);
+               pm_runtime_mark_last_busy(dev);
+               ret = pm_runtime_put_autosuspend(dev);
        }
 
        if (ret < 0) {
-               dev_err(data->dev,
-                       "Failed: bmg160_set_power_state for %d\n", on);
+               dev_err(dev, "Failed: bmg160_set_power_state for %d\n", on);
+
                if (on)
-                       pm_runtime_put_noidle(data->dev);
+                       pm_runtime_put_noidle(dev);
 
                return ret;
        }
 static int bmg160_setup_any_motion_interrupt(struct bmg160_data *data,
                                             bool status)
 {
+       struct device *dev = regmap_get_device(data->regmap);
        int ret;
 
        /* Enable/Disable INT_MAP0 mapping */
                                 BMG160_INT_MAP_0_BIT_ANY,
                                 (status ? BMG160_INT_MAP_0_BIT_ANY : 0));
        if (ret < 0) {
-               dev_err(data->dev, "Error updating bits reg_int_map0\n");
+               dev_err(dev, "Error updating bits reg_int_map0\n");
                return ret;
        }
 
                ret = regmap_write(data->regmap, BMG160_REG_SLOPE_THRES,
                                   data->slope_thres);
                if (ret < 0) {
-                       dev_err(data->dev,
-                               "Error writing reg_slope_thres\n");
+                       dev_err(dev, "Error writing reg_slope_thres\n");
                        return ret;
                }
 
                                   BMG160_INT_MOTION_X | BMG160_INT_MOTION_Y |
                                   BMG160_INT_MOTION_Z);
                if (ret < 0) {
-                       dev_err(data->dev,
-                               "Error writing reg_motion_intr\n");
+                       dev_err(dev, "Error writing reg_motion_intr\n");
                        return ret;
                }
 
                                           BMG160_INT_MODE_LATCH_INT |
                                           BMG160_INT_MODE_LATCH_RESET);
                        if (ret < 0) {
-                               dev_err(data->dev,
-                                       "Error writing reg_rst_latch\n");
+                               dev_err(dev, "Error writing reg_rst_latch\n");
                                return ret;
                        }
                }
        }
 
        if (ret < 0) {
-               dev_err(data->dev, "Error writing reg_int_en0\n");
+               dev_err(dev, "Error writing reg_int_en0\n");
                return ret;
        }
 
 static int bmg160_setup_new_data_interrupt(struct bmg160_data *data,
                                           bool status)
 {
+       struct device *dev = regmap_get_device(data->regmap);
        int ret;
 
        /* Enable/Disable INT_MAP1 mapping */
                                 BMG160_INT_MAP_1_BIT_NEW_DATA,
                                 (status ? BMG160_INT_MAP_1_BIT_NEW_DATA : 0));
        if (ret < 0) {
-               dev_err(data->dev, "Error updating bits in reg_int_map1\n");
+               dev_err(dev, "Error updating bits in reg_int_map1\n");
                return ret;
        }
 
                                   BMG160_INT_MODE_NON_LATCH_INT |
                                   BMG160_INT_MODE_LATCH_RESET);
                if (ret < 0) {
-                       dev_err(data->dev,
-                               "Error writing reg_rst_latch\n");
-                               return ret;
+                       dev_err(dev, "Error writing reg_rst_latch\n");
+                       return ret;
                }
 
                ret = regmap_write(data->regmap, BMG160_REG_INT_EN_0,
                                   BMG160_INT_MODE_LATCH_INT |
                                   BMG160_INT_MODE_LATCH_RESET);
                if (ret < 0) {
-                       dev_err(data->dev,
-                               "Error writing reg_rst_latch\n");
-                               return ret;
+                       dev_err(dev, "Error writing reg_rst_latch\n");
+                       return ret;
                }
 
                ret = regmap_write(data->regmap, BMG160_REG_INT_EN_0, 0);
        }
 
        if (ret < 0) {
-               dev_err(data->dev, "Error writing reg_int_en0\n");
+               dev_err(dev, "Error writing reg_int_en0\n");
                return ret;
        }
 
 
 static int bmg160_set_scale(struct bmg160_data *data, int val)
 {
+       struct device *dev = regmap_get_device(data->regmap);
        int ret, i;
 
        for (i = 0; i < ARRAY_SIZE(bmg160_scale_table); ++i) {
                        ret = regmap_write(data->regmap, BMG160_REG_RANGE,
                                           bmg160_scale_table[i].dps_range);
                        if (ret < 0) {
-                               dev_err(data->dev,
-                                       "Error writing reg_range\n");
+                               dev_err(dev, "Error writing reg_range\n");
                                return ret;
                        }
                        data->dps_range = bmg160_scale_table[i].dps_range;
 
 static int bmg160_get_temp(struct bmg160_data *data, int *val)
 {
+       struct device *dev = regmap_get_device(data->regmap);
        int ret;
        unsigned int raw_val;
 
 
        ret = regmap_read(data->regmap, BMG160_REG_TEMP, &raw_val);
        if (ret < 0) {
-               dev_err(data->dev, "Error reading reg_temp\n");
+               dev_err(dev, "Error reading reg_temp\n");
                bmg160_set_power_state(data, false);
                mutex_unlock(&data->mutex);
                return ret;
 
 static int bmg160_get_axis(struct bmg160_data *data, int axis, int *val)
 {
+       struct device *dev = regmap_get_device(data->regmap);
        int ret;
        unsigned int raw_val;
 
        ret = regmap_bulk_read(data->regmap, BMG160_AXIS_TO_REG(axis), &raw_val,
                               2);
        if (ret < 0) {
-               dev_err(data->dev, "Error reading axis %d\n", axis);
+               dev_err(dev, "Error reading axis %d\n", axis);
                bmg160_set_power_state(data, false);
                mutex_unlock(&data->mutex);
                return ret;
 {
        struct iio_dev *indio_dev = iio_trigger_get_drvdata(trig);
        struct bmg160_data *data = iio_priv(indio_dev);
+       struct device *dev = regmap_get_device(data->regmap);
        int ret;
 
        /* new data interrupts don't need ack */
                           BMG160_INT_MODE_LATCH_INT |
                           BMG160_INT_MODE_LATCH_RESET);
        if (ret < 0) {
-               dev_err(data->dev, "Error writing reg_rst_latch\n");
+               dev_err(dev, "Error writing reg_rst_latch\n");
                return ret;
        }
 
 {
        struct iio_dev *indio_dev = private;
        struct bmg160_data *data = iio_priv(indio_dev);
+       struct device *dev = regmap_get_device(data->regmap);
        int ret;
        int dir;
        unsigned int val;
 
        ret = regmap_read(data->regmap, BMG160_REG_INT_STATUS_2, &val);
        if (ret < 0) {
-               dev_err(data->dev, "Error reading reg_int_status2\n");
+               dev_err(dev, "Error reading reg_int_status2\n");
                goto ack_intr_status;
        }
 
                                   BMG160_INT_MODE_LATCH_INT |
                                   BMG160_INT_MODE_LATCH_RESET);
                if (ret < 0)
-                       dev_err(data->dev,
-                               "Error writing reg_rst_latch\n");
+                       dev_err(dev, "Error writing reg_rst_latch\n");
        }
 
        return IRQ_HANDLED;
 
        data = iio_priv(indio_dev);
        dev_set_drvdata(dev, indio_dev);
-       data->dev = dev;
        data->irq = irq;
        data->regmap = regmap;
 
 
        ret = bmg160_set_mode(data, BMG160_MODE_SUSPEND);
        if (ret < 0) {
-               dev_err(data->dev, "set mode failed\n");
+               dev_err(dev, "set mode failed\n");
                return -EAGAIN;
        }