}
 }
 
-static int dps310_calculate_temp(struct dps310_data *data)
+static int dps310_calculate_temp(struct dps310_data *data, int *val)
 {
        s64 c0;
        s64 t;
        t = c0 + ((s64)data->temp_raw * (s64)data->c1);
 
        /* Convert to milliCelsius and scale the temperature */
-       return (int)div_s64(t * 1000LL, kt);
+       *val = (int)div_s64(t * 1000LL, kt);
+
+       return 0;
 }
 
 static int dps310_read_temp(struct dps310_data *data, int *val, int *val2,
                if (rc)
                        return rc;
 
-               rc = dps310_calculate_temp(data);
-               if (rc < 0)
+               rc = dps310_calculate_temp(data, val);
+               if (rc)
                        return rc;
 
-               *val = rc;
                return IIO_VAL_INT;
 
        case IIO_CHAN_INFO_OVERSAMPLING_RATIO: