/* Set user supplied ambient light zone */
                mutex_lock(&data->lock);
-               adp8860_read(data->client, ADP8860_CFGR, ®_val);
-               reg_val &= ~(CFGR_BLV_MASK << CFGR_BLV_SHIFT);
-               reg_val |= (val - 1) << CFGR_BLV_SHIFT;
-               adp8860_write(data->client, ADP8860_CFGR, reg_val);
+               ret = adp8860_read(data->client, ADP8860_CFGR, ®_val);
+               if (!ret) {
+                       reg_val &= ~(CFGR_BLV_MASK << CFGR_BLV_SHIFT);
+                       reg_val |= (val - 1) << CFGR_BLV_SHIFT;
+                       adp8860_write(data->client, ADP8860_CFGR, reg_val);
+               }
                mutex_unlock(&data->lock);
        }
 
 
 
                /* Set user supplied ambient light zone */
                mutex_lock(&data->lock);
-               adp8870_read(data->client, ADP8870_CFGR, ®_val);
-               reg_val &= ~(CFGR_BLV_MASK << CFGR_BLV_SHIFT);
-               reg_val |= (val - 1) << CFGR_BLV_SHIFT;
-               adp8870_write(data->client, ADP8870_CFGR, reg_val);
+               ret = adp8870_read(data->client, ADP8870_CFGR, ®_val);
+               if (!ret) {
+                       reg_val &= ~(CFGR_BLV_MASK << CFGR_BLV_SHIFT);
+                       reg_val |= (val - 1) << CFGR_BLV_SHIFT;
+                       adp8870_write(data->client, ADP8870_CFGR, reg_val);
+               }
                mutex_unlock(&data->lock);
        }