*val = tmp_val;
                mutex_unlock(&st->lock);
                iio_device_release_direct_mode(indio_dev);
+               if (ret > 0)
+                       ret = at91_adc_adjust_val_osr(st, val);
 
-               return at91_adc_adjust_val_osr(st, val);
+               return ret;
        }
        if (chan->type == IIO_PRESSURE) {
                ret = iio_device_claim_direct_mode(indio_dev);
                *val = tmp_val;
                mutex_unlock(&st->lock);
                iio_device_release_direct_mode(indio_dev);
+               if (ret > 0)
+                       ret = at91_adc_adjust_val_osr(st, val);
 
-               return at91_adc_adjust_val_osr(st, val);
+               return ret;
        }
 
        /* in this case we have a voltage channel */