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

Arka Mondal posted 5 patches 6 days, 10 hours ago
.../bindings/iio/dac/adi,ad5758.yaml           |  4 ++++
drivers/iio/dac/ad5758.c                       | 18 ++++++++++++++----
2 files changed, 18 insertions(+), 4 deletions(-)
[PATCH 0/5] iio: dac: ad5758: fix DMA alignment, raw range, offset and 4-20 mA
Posted by Arka Mondal 6 days, 10 hours ago
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
Re: [PATCH 0/5] iio: dac: ad5758: fix DMA alignment, raw range, offset and 4-20 mA
Posted by Nuno Sá 6 days, 7 hours ago
On Fri, 2026-09-18 at 21:20 +0900, Arka Mondal wrote:
> 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

LGTM,

Reviewed-by: Nuno Sá <nuno.sa@analog.com>
Re: [PATCH 0/5] iio: dac: ad5758: fix DMA alignment, raw range, offset and 4-20 mA
Posted by Jonathan Cameron 4 days, 4 hours ago
On Fri, 18 Sep 2026 16:22:27 +0100
Nuno Sá <noname.nuno@gmail.com> wrote:

> On Fri, 2026-09-18 at 21:20 +0900, Arka Mondal wrote:
> > 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  
> 
> LGTM,
> 
> Reviewed-by: Nuno Sá <nuno.sa@analog.com>
Other than the one thing on the dt-binding that is more policy than anything
else these all look good to me.  I'll wait for that to resolve though before
picking these up.

Thanks,

Jonathan