iio: pressure: dps310: simplify scale factor reading
Both functions `dps310_get_pres_precision` and `dps310_get_temp_precision` provide the oversampling rate by calling the `BIT()` macro. However, to look up the corresponding scale factor, we need the register value itself. Currently, this is achieved by undoing the calculation of the oversampling rate with `ilog2()`. Simplify the two functions for getting the scale factor and directly use the register content for the lookup. Signed-off-by: Thomas Haemmerle <thomas.haemmerle@leica-geosystems.com> Link: https://lore.kernel.org/r/20240415105030.1161770-5-thomas.haemmerle@leica-geosystems.com Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
This commit is contained in:
committed by
Jonathan Cameron
parent
c046bb5d95
commit
5826711e84
@@ -382,11 +382,11 @@ static int dps310_get_pres_k(struct dps310_data *data, int *val)
|
||||
{
|
||||
int reg_val, rc;
|
||||
|
||||
rc = dps310_get_pres_precision(data, ®_val);
|
||||
if (rc)
|
||||
rc = regmap_read(data->regmap, DPS310_PRS_CFG, ®_val);
|
||||
if (rc < 0)
|
||||
return rc;
|
||||
|
||||
*val = scale_factors[ilog2(reg_val)];
|
||||
*val = scale_factors[reg_val & GENMASK(2, 0)];
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -395,11 +395,11 @@ static int dps310_get_temp_k(struct dps310_data *data, int *val)
|
||||
{
|
||||
int reg_val, rc;
|
||||
|
||||
rc = dps310_get_temp_precision(data, ®_val);
|
||||
if (rc)
|
||||
rc = regmap_read(data->regmap, DPS310_TMP_CFG, ®_val);
|
||||
if (rc < 0)
|
||||
return rc;
|
||||
|
||||
*val = scale_factors[ilog2(reg_val)];
|
||||
*val = scale_factors[reg_val & GENMASK(2, 0)];
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user