forked from Minki/linux
iio: magnetometer: yas530: Correct scaling of magnetic axes
Looks like YAS530 raw values return picotesla and YAS532 nanotesla. Adapt comments and scaling. Signed-off-by: Jakob Hauser <jahau@rocketmail.com> Reviewed-by: Linus Walleij <linus.walleij@linaro.org> Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com> Link: https://lore.kernel.org/r/053ab05cb9a0f6b0536ab5e0de57009f513c6f81.1660337264.git.jahau@rocketmail.com Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
This commit is contained in:
parent
4efdfbc16c
commit
413cf69163
@ -310,8 +310,6 @@ static s32 yas5xx_linearize(struct yas5xx *yas5xx, u16 val, int axis)
|
||||
* @yo: Y axis out
|
||||
* @zo: Z axis out
|
||||
* @return: 0 on success or error code
|
||||
*
|
||||
* Returned values are in nanotesla according to some code.
|
||||
*/
|
||||
static int yas5xx_get_measure(struct yas5xx *yas5xx, s32 *to, s32 *xo, s32 *yo, s32 *zo)
|
||||
{
|
||||
@ -417,14 +415,27 @@ static int yas5xx_read_raw(struct iio_dev *indio_dev,
|
||||
*val = 1;
|
||||
return IIO_VAL_INT;
|
||||
}
|
||||
/*
|
||||
* The axis values are in nanotesla according to the vendor
|
||||
* drivers, but is clearly in microtesla according to
|
||||
* experiments. Since 1 uT = 0.01 Gauss, we need to divide
|
||||
* by 100000000 (10^8) to get to Gauss from the raw value.
|
||||
*/
|
||||
*val = 1;
|
||||
*val2 = 100000000;
|
||||
switch (yas5xx->devid) {
|
||||
case YAS530_DEVICE_ID:
|
||||
/*
|
||||
* Raw values of YAS530 are in picotesla. Divide by
|
||||
* 100000000 (10^8) to get Gauss.
|
||||
*/
|
||||
*val = 1;
|
||||
*val2 = 100000000;
|
||||
break;
|
||||
case YAS532_DEVICE_ID:
|
||||
/*
|
||||
* Raw values of YAS532 are in nanotesla. Divide by
|
||||
* 100000 (10^5) to get Gauss.
|
||||
*/
|
||||
*val = 1;
|
||||
*val2 = 100000;
|
||||
break;
|
||||
default:
|
||||
dev_err(yas5xx->dev, "unknown device type\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
return IIO_VAL_FRACTIONAL;
|
||||
default:
|
||||
/* Unknown request */
|
||||
|
Loading…
Reference in New Issue
Block a user