On 12/1/25 10:38, Javier Carrasco wrote:
The two provided max_scale_nano values must be multiplied by 100 and 10 respectively to achieve nano units. According to the comments:
Max scale for apds0306 is 16.326432 → the fractional part is 0.326432, which is 326432000 in NANO. The current value is 3264320.
Max scale for apds0306-065 is 14.09721 → the fractional part is 0.09712, which is 97120000 in NANO. The current value is 9712000.
Update max_scale_nano initialization to use the right NANO fractional parts.
Cc: stable@vger.kernel.org Fixes: 620d1e6c7a3f ("iio: light: Add support for APDS9306 Light Sensor") Signed-off-by: Javier Carrasco javier.carrasco.cruz@gmail.com
drivers/iio/light/apds9306.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/iio/light/apds9306.c b/drivers/iio/light/apds9306.c index 69a0d609cffc91cc3daba160f309f511270be385..5ed7e17f49e76206609aba83c85e8144c536d17d 100644 --- a/drivers/iio/light/apds9306.c +++ b/drivers/iio/light/apds9306.c @@ -108,11 +108,11 @@ static const struct part_id_gts_multiplier apds9306_gts_mul[] = { { .part_id = 0xB1, .max_scale_int = 16,
.max_scale_nano = 3264320,
}, { .part_id = 0xB3, .max_scale_int = 14,.max_scale_nano = 326432000,
.max_scale_nano = 9712000,
}, };.max_scale_nano = 97120000,
base-commit: 577a66e2e634f712384c57a98f504c44ea4b47da change-id: 20241218-apds9306_nano_vals-d880219a82f2
Best regards,
Hi Javier,
You are correct. From iio_gts_linearize() function in industrialio-gts-helper.c *lin_scale = (u64)scale_whole * (u64)scaler + (u64)(scale_nano / (NANO / scaler)); where "scaler" equals NANO (1000000000UL)
I tested it, no issues. The values did not deviate much as this is nano scale.
Tested-by: subhajit.ghosh@tweaklogic.com
Regards, Subhajit Ghosh