iio: magnetometer: yas530: Change data type of calibration coefficients
authorJakob Hauser <jahau@rocketmail.com>
Fri, 12 Aug 2022 21:54:10 +0000 (23:54 +0200)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Mon, 15 Aug 2022 21:30:03 +0000 (22:30 +0100)
This is a preparation for adding YAS537 variant.

YAS537 uses other data types on the calibration coefficients [1] than YAS530 [2]
and YAS532 [3].

On YAS537, at least for a4 and a7 this could matter because 8-bit unsigned data
from the register gets stored into a signed data type, therefore this should be
8-bit as well.

For YAS530/532, on the other hand, it doesn't seem to matter. The size of a2-a9
and k is smaller than 8-bit at extraction, also the applied math is low. And
Cx/Cy1/Cy2, now being defined as signed 16-bit, are extracted as unsigned 8-bit
and undergo only minor math.

[1] https://github.com/msm8916-mainline/android_kernel_qcom_msm8916/blob/GT-I9195I/drivers/iio/magnetometer/yas_mag_drv-yas537.c#L76-L78
[2] https://github.com/NovaFusion/android_kernel_samsung_golden/blob/cm-12.1/drivers/sensor/compass/yas_mag_driver-yas530.c#L526-L527
[3] https://github.com/msm8916-mainline/android_kernel_qcom_msm8916/blob/GT-I9195I/drivers/iio/magnetometer/yas_mag_drv-yas532.c#L76-L77

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/f1e53bd6672aebe59f9b236b41374482edf888f8.1660337264.git.jahau@rocketmail.com
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/magnetometer/yamaha-yas530.c

index 6296ea3140ef4cda4580335b7b568b6c298cb484..a9d7cf3ad77faeead28daec3ab8bd80de96a416e 100644 (file)
@@ -103,9 +103,11 @@ struct yas5xx_calibration {
        s32 r[3];
        u32 f[3];
        /* Temperature compensation calibration */
-       s32 Cx, Cy1, Cy2;
+       s16 Cx, Cy1, Cy2;
        /* Misc calibration coefficients */
-       s32 a2, a3, a4, a5, a6, a7, a8, a9, k;
+       s8  a2, a3, a4, a6, a7, a8;
+       s16 a5, a9;
+       u8  k;
        /* clock divider */
        u8 dck;
 };