mirror_ubuntu-kernels/drivers/iio/dac
Marc Ferland 279428df88 iio: dac: ad5592r: fix temperature channel scaling value
The scale value for the temperature channel is (assuming Vref=2.5 and
the datasheet):

    376.7897513

When calculating both val and val2 for the temperature scale we
use (3767897513/25) and multiply it by Vref (here I assume 2500mV) to
obtain:

  2500 * (3767897513/25) ==> 376789751300

Finally we divide with remainder by 10^9 to get:

    val = 376
    val2 = 789751300

However, we return IIO_VAL_INT_PLUS_MICRO (should have been NANO) as
the scale type. So when converting the raw temperature value to the
'processed' temperature value we will get (assuming raw=810,
offset=-753):

    processed = (raw + offset) * scale_val
              = (810 + -753) * 376
	      = 21432

    processed += div((raw + offset) * scale_val2, 10^6)
              += div((810 + -753) * 789751300, 10^6)
	      += 45015
    ==> 66447
    ==> 66.4 Celcius

instead of the expected 21.5 Celsius.

Fix this issue by changing IIO_VAL_INT_PLUS_MICRO to
IIO_VAL_INT_PLUS_NANO.

Fixes: 56ca9db862 ("iio: dac: Add support for the AD5592R/AD5593R ADCs/DACs")
Signed-off-by: Marc Ferland <marc.ferland@sonatest.com>
Link: https://lore.kernel.org/r/20240501150554.1871390-1-marc.ferland@sonatest.com
Cc: <Stable@vger.kernel.org>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
2024-05-27 09:49:20 +01:00
..
ad3552r.c iio: dac: ad3552: Use __free(fwnode_handle) to simplify error handling. 2024-04-06 11:29:06 +01:00
ad5064.c iio: Switch i2c drivers back to use .probe() 2023-05-21 18:54:53 +01:00
ad5360.c iio: dac: ad5360: Fix alignment for DMA safety 2022-06-14 11:53:15 +01:00
ad5380.c iio: Switch i2c drivers back to use .probe() 2023-05-21 18:54:53 +01:00
ad5421.c iio: dac: ad5421: Fix alignment for DMA safety 2022-06-14 11:53:15 +01:00
ad5446.c iio: Switch i2c drivers back to use .probe() 2023-05-21 18:54:53 +01:00
ad5449.c iio: dac: ad5449: Fix alignment for DMA safety 2022-06-14 11:53:15 +01:00
ad5504.c iio: dac: ad5504: Fix alignment for DMA safety 2022-06-14 11:53:16 +01:00
ad5592r-base.c iio: dac: ad5592r: fix temperature channel scaling value 2024-05-27 09:49:20 +01:00
ad5592r-base.h iio: dac: ad5592r: Fix alignment for DMA safety 2022-06-14 11:53:16 +01:00
ad5592r.c Char/Misc and other driver updates for 5.18-rc1 2022-03-28 12:27:35 -07:00
ad5593r.c iio: Switch i2c drivers back to use .probe() 2023-05-21 18:54:53 +01:00
ad5624r_spi.c iio: Replace strtobool() with kstrtobool() 2022-04-28 19:22:54 +01:00
ad5624r.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 177 2019-05-30 11:29:19 -07:00
ad5686-spi.c Char/Misc and other driver updates for 5.18-rc1 2022-03-28 12:27:35 -07:00
ad5686.c iio: dac: ad5686: Add support for AD5337 2022-12-28 17:19:45 +00:00
ad5686.h iio: dac: ad5686: Add support for AD5337 2022-12-28 17:19:45 +00:00
ad5696-i2c.c iio: Switch i2c drivers back to use .probe() 2023-05-21 18:54:53 +01:00
ad5755.c iio: dac: ad5755: make use of of_device_id table 2024-04-13 18:12:14 +01:00
ad5758.c iio:dac:ad5758: Drop unused of specific headers. 2021-12-12 17:12:34 +00:00
ad5761.c iio: dac: ad5761: Fix alignment for DMA safety 2022-06-14 11:53:16 +01:00
ad5764.c iio: dac: ad5764: Fix alignment for DMA safety 2022-06-14 11:53:16 +01:00
ad5766.c iio: dac: ad5766: Fix alignment for DMA safety 2022-06-14 11:53:16 +01:00
ad5770r.c iio: dac: ad5770r: Use device_for_each_child_node_scoped() 2024-04-06 11:18:51 +01:00
ad5791.c iio: dac: ad5791: Add support for controlling RBUF via devicetree 2023-12-04 13:19:48 +00:00
ad7293.c iio: dac: ad7293: Fix alignment for DMA safety 2022-06-14 11:53:16 +01:00
ad7303.c iio: dac: ad7303: Fix alignment for DMA safety 2022-06-14 11:53:16 +01:00
ad8801.c iio: dac: ad8801: Fix alignment for DMA safety 2022-06-14 11:53:17 +01:00
ad9739a.c iio: dac: ad9739a: write complete MU_CNT1 register during lock 2024-04-29 21:11:12 +01:00
adi-axi-dac.c iio: dac: adi-axi: fix a mistake in axi_dac_ext_info_set() 2024-04-29 20:53:25 +01:00
cio-dac.c 1st set of IIO new device support, features and cleanups for the 6.4 cycle. 2023-04-12 09:45:34 +02:00
dpot-dac.c iio: dac: dpot-dac: Convert to platform remove callback returning void 2023-09-23 15:06:55 +01:00
ds4424.c iio: Switch i2c drivers back to use .probe() 2023-05-21 18:54:53 +01:00
Kconfig iio: dac: support the ad9739a RF DAC 2024-04-20 15:41:32 +01:00
lpc18xx_dac.c iio: dac: lpc18xx_dac: Convert to platform remove callback returning void 2023-09-23 15:06:55 +01:00
ltc1660.c iio: dac: ltc1660: Switch to DEFINE_SIMPLE_DEV_PM_OPS() and pm_sleep_ptr() 2022-07-18 18:48:18 +01:00
ltc2632.c iio: dac: ltc2632: Make use of device properties 2022-04-28 19:34:10 +01:00
ltc2688.c iio: dac: ltc2688: Use device_for_each_child_node_scoped() 2024-03-25 19:50:09 +00:00
m62332.c iio: Switch i2c drivers back to use .probe() 2023-05-21 18:54:53 +01:00
Makefile iio: dac: support the ad9739a RF DAC 2024-04-20 15:41:32 +01:00
max517.c iio: Switch i2c drivers back to use .probe() 2023-05-21 18:54:53 +01:00
max5522.c iio: dac: set variable max5522_channels storage-class-specifier to static 2023-04-10 12:26:34 +01:00
max5821.c iio: Switch i2c drivers back to use .probe() 2023-05-21 18:54:53 +01:00
mcp4725.c iio: dac: mcp4725: Add dac_reg_offset to struct mcp4725_chip_info 2023-09-12 10:42:04 +01:00
mcp4728.c iio: add MCP4728 I2C DAC driver 2023-08-05 19:29:39 +01:00
mcp4821.c iio: dac: mcp4821: Switch to including mod_devicetable.h for struct of_device_id definition. 2024-02-28 19:26:35 +00:00
mcp4922.c iio: dac: mcp4922: add support to mcp4921 2022-07-01 11:19:08 +01:00
stm32-dac-core.c iio: Use device_get_match_data() 2023-10-14 17:18:36 +01:00
stm32-dac-core.h
stm32-dac.c iio: dac: stm32-dac: Convert to platform remove callback returning void 2023-09-23 15:06:55 +01:00
ti-dac082s085.c iio: dac: ti-dac082s085: Fix alignment for DMA safety 2022-06-14 11:53:17 +01:00
ti-dac5571.c iio: dac: ti-dac5571: Add DAC081C081 support 2024-03-28 13:22:15 +00:00
ti-dac7311.c iio: dac: ti-dac7311: Fix alignment for DMA safety 2022-06-14 11:53:17 +01:00
ti-dac7612.c iio: dac: ti-dac7612: Fix alignment for DMA safety 2022-06-14 11:53:17 +01:00
vf610_dac.c iio: dac: vf610: Convert to platform remove callback returning void 2023-09-23 15:06:55 +01:00