};
 
 struct isl29028_chip {
-       struct device           *dev;
        struct mutex            lock;
        struct regmap           *regmap;
 
 
 static int isl29028_read_als_ir(struct isl29028_chip *chip, int *als_ir)
 {
+       struct device *dev = regmap_get_device(chip->regmap);
        unsigned int lsb;
        unsigned int msb;
        int ret;
 
        ret = regmap_read(chip->regmap, ISL29028_REG_ALSIR_L, &lsb);
        if (ret < 0) {
-               dev_err(chip->dev,
+               dev_err(dev,
                        "Error in reading register ALSIR_L err %d\n", ret);
                return ret;
        }
 
        ret = regmap_read(chip->regmap, ISL29028_REG_ALSIR_U, &msb);
        if (ret < 0) {
-               dev_err(chip->dev,
+               dev_err(dev,
                        "Error in reading register ALSIR_U err %d\n", ret);
                return ret;
        }
 
 static int isl29028_read_proxim(struct isl29028_chip *chip, int *prox)
 {
+       struct device *dev = regmap_get_device(chip->regmap);
        unsigned int data;
        int ret;
 
        ret = regmap_read(chip->regmap, ISL29028_REG_PROX_DATA, &data);
        if (ret < 0) {
-               dev_err(chip->dev, "Error in reading register %d, error %d\n",
+               dev_err(dev, "Error in reading register %d, error %d\n",
                        ISL29028_REG_PROX_DATA, ret);
                return ret;
        }
 
 static int isl29028_als_get(struct isl29028_chip *chip, int *als_data)
 {
+       struct device *dev = regmap_get_device(chip->regmap);
        int ret;
        int als_ir_data;
 
        if (chip->als_ir_mode != MODE_ALS) {
                ret = isl29028_set_als_ir_mode(chip, MODE_ALS);
                if (ret < 0) {
-                       dev_err(chip->dev,
+                       dev_err(dev,
                                "Error in enabling ALS mode err %d\n", ret);
                        return ret;
                }
 
 static int isl29028_ir_get(struct isl29028_chip *chip, int *ir_data)
 {
+       struct device *dev = regmap_get_device(chip->regmap);
        int ret;
 
        if (chip->als_ir_mode != MODE_IR) {
                ret = isl29028_set_als_ir_mode(chip, MODE_IR);
                if (ret < 0) {
-                       dev_err(chip->dev,
+                       dev_err(dev,
                                "Error in enabling IR mode err %d\n", ret);
                        return ret;
                }
                              int val, int val2, long mask)
 {
        struct isl29028_chip *chip = iio_priv(indio_dev);
+       struct device *dev = regmap_get_device(chip->regmap);
        int ret = -EINVAL;
 
        mutex_lock(&chip->lock);
        switch (chan->type) {
        case IIO_PROXIMITY:
                if (mask != IIO_CHAN_INFO_SAMP_FREQ) {
-                       dev_err(chip->dev,
+                       dev_err(dev,
                                "proximity: mask value 0x%08lx not supported\n",
                                mask);
                        break;
                }
                if (val < 1 || val > 100) {
-                       dev_err(chip->dev,
+                       dev_err(dev,
                                "Samp_freq %d is not in range[1:100]\n", val);
                        break;
                }
                ret = isl29028_set_proxim_sampling(chip, val);
                if (ret < 0) {
-                       dev_err(chip->dev,
+                       dev_err(dev,
                                "Setting proximity samp_freq fail, err %d\n",
                                ret);
                        break;
 
        case IIO_LIGHT:
                if (mask != IIO_CHAN_INFO_SCALE) {
-                       dev_err(chip->dev,
+                       dev_err(dev,
                                "light: mask value 0x%08lx not supported\n",
                                mask);
                        break;
                }
                if ((val != 125) && (val != 2000)) {
-                       dev_err(chip->dev,
+                       dev_err(dev,
                                "lux scale %d is invalid [125, 2000]\n", val);
                        break;
                }
                ret = isl29028_set_als_scale(chip, val);
                if (ret < 0) {
-                       dev_err(chip->dev,
+                       dev_err(dev,
                                "Setting lux scale fail with error %d\n", ret);
                        break;
                }
                break;
 
        default:
-               dev_err(chip->dev, "Unsupported channel type\n");
+               dev_err(dev, "Unsupported channel type\n");
                break;
        }
        mutex_unlock(&chip->lock);
                             int *val, int *val2, long mask)
 {
        struct isl29028_chip *chip = iio_priv(indio_dev);
+       struct device *dev = regmap_get_device(chip->regmap);
        int ret = -EINVAL;
 
        mutex_lock(&chip->lock);
                break;
 
        default:
-               dev_err(chip->dev, "mask value 0x%08lx not supported\n", mask);
+               dev_err(dev, "mask value 0x%08lx not supported\n", mask);
                break;
        }
        mutex_unlock(&chip->lock);
 
 static int isl29028_chip_init(struct isl29028_chip *chip)
 {
+       struct device *dev = regmap_get_device(chip->regmap);
        int ret;
 
        chip->enable_prox  = false;
 
        ret = regmap_write(chip->regmap, ISL29028_REG_TEST1_MODE, 0x0);
        if (ret < 0) {
-               dev_err(chip->dev, "%s(): write to reg %d failed, err = %d\n",
+               dev_err(dev, "%s(): write to reg %d failed, err = %d\n",
                        __func__, ISL29028_REG_TEST1_MODE, ret);
                return ret;
        }
        ret = regmap_write(chip->regmap, ISL29028_REG_TEST2_MODE, 0x0);
        if (ret < 0) {
-               dev_err(chip->dev, "%s(): write to reg %d failed, err = %d\n",
+               dev_err(dev, "%s(): write to reg %d failed, err = %d\n",
                        __func__, ISL29028_REG_TEST2_MODE, ret);
                return ret;
        }
 
        ret = regmap_write(chip->regmap, ISL29028_REG_CONFIGURE, 0x0);
        if (ret < 0) {
-               dev_err(chip->dev, "%s(): write to reg %d failed, err = %d\n",
+               dev_err(dev, "%s(): write to reg %d failed, err = %d\n",
                        __func__, ISL29028_REG_CONFIGURE, ret);
                return ret;
        }
 
        ret = isl29028_set_proxim_sampling(chip, chip->prox_sampling);
        if (ret < 0) {
-               dev_err(chip->dev, "setting the proximity, err = %d\n",
-                       ret);
+               dev_err(dev, "setting the proximity, err = %d\n", ret);
                return ret;
        }
 
        ret = isl29028_set_als_scale(chip, chip->lux_scale);
        if (ret < 0)
-               dev_err(chip->dev,
-                       "setting als scale failed, err = %d\n", ret);
+               dev_err(dev, "setting als scale failed, err = %d\n", ret);
        return ret;
 }
 
        chip = iio_priv(indio_dev);
 
        i2c_set_clientdata(client, indio_dev);
-       chip->dev = &client->dev;
        mutex_init(&chip->lock);
 
        chip->regmap = devm_regmap_init_i2c(client, &isl29028_regmap_config);
        if (IS_ERR(chip->regmap)) {
                ret = PTR_ERR(chip->regmap);
-               dev_err(chip->dev, "regmap initialization failed: %d\n", ret);
+               dev_err(&client->dev, "regmap initialization failed: %d\n",
+                       ret);
                return ret;
        }
 
        ret = isl29028_chip_init(chip);
        if (ret < 0) {
-               dev_err(chip->dev, "chip initialization failed: %d\n", ret);
+               dev_err(&client->dev, "chip initialization failed: %d\n", ret);
                return ret;
        }
 
        indio_dev->modes = INDIO_DIRECT_MODE;
        ret = devm_iio_device_register(indio_dev->dev.parent, indio_dev);
        if (ret < 0) {
-               dev_err(chip->dev, "iio registration fails with error %d\n",
+               dev_err(&client->dev,
+                       "iio registration fails with error %d\n",
                        ret);
                return ret;
        }