[PATCH 0/5] iio: dac: ad5758: fix DMA alignment, raw range, offset and 4-20 mA

From: Arka Mondal

Date: Fri Sep 18 2026 - 08:58:53 EST


The first attempt to send this series on 2026-09-18 was rejected by
the kernel.org mail servers, so it did not reach the lists. The patches
are unchanged.

This series fixes four bugs in the AD5758 driver, all present since
commit 28d1a7ac2a0d ("iio: dac: Add AD5758 support"). The last bug
takes two patches, one for the binding and one for the driver.

Patch 1 marks the SPI receive buffer __aligned(IIO_DMA_MINALIGN), so
it no longer shares a cacheline with other driver state. The 2022
conversion of IIO drivers to IIO_DMA_MINALIGN only changed existing
____cacheline_aligned markings, and this driver had none.

Patch 2 rejects raw values outside 0 to U16_MAX. Writing -1 currently
gives full-scale output.

Patch 3 fixes the offset for every range that does not start at 0.
The +-20 mA range reports -32 instead of -32768.

Patches 4 and 5 fix the 4 mA to 20 mA range. The binding and the
driver give it as <4 24000>, which is 4 uA to 24 mA. The data sheet
(Rev. B, Table 32) and the original text binding say range code 1010
is 4 mA to 20 mA. The old value is still accepted: the binding marks
it deprecated and the driver maps it to the corrected range, so
existing device trees keep working.

Compile tested only; no relevant hardware available. The binding was
checked with make dt_binding_check and with test device trees:
<4000 20000> and <4 24000> are accepted; <4 20000> is rejected.

Arka Mondal (5):
iio: dac: ad5758: Fix alignment for DMA safety
iio: dac: ad5758: Reject out-of-range raw values
iio: dac: ad5758: Fix the offset calculation
dt-bindings: iio: dac: adi,ad5758: Fix the 4 mA to 20 mA current range
iio: dac: ad5758: Fix the 4 mA to 20 mA current range

.../bindings/iio/dac/adi,ad5758.yaml | 4 ++++
drivers/iio/dac/ad5758.c | 18 ++++++++++++++----
2 files changed, 18 insertions(+), 4 deletions(-)


base-commit: 08df884136f1c1197bab2a27814404fd329d9aac
--
2.55.0