mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH v2 0/6] iio: adc: ti-ads1298: fixes, and ADS1299 support
@ 2026-10-24 23:13 Stephan Costa Barros
  2026-10-24 23:13 ` [PATCH v2 1/6] iio: adc: ti-ads1298: fix the data read path Stephan Costa Barros
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: Stephan Costa Barros @ 2026-10-24 23:13 UTC (permalink / raw)
  To: Jonathan Cameron
  Cc: David Lechner, Nuno Sá,
	Andy Shevchenko, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	Mike Looijmans, Andy Shevchenko, Uwe Kleine-König,
	Krzysztof Kozlowski, linux-iio, devicetree, linux-kernel

This series adds the TI ADS1299 to the ti-ads1298 driver. On the way it
fixes twelve issues in ti-ads1298 itself. Five of them come from the
automated review of v1, which was a separate driver derived from
ti-ads1298; the others came up while reworking and testing.

Changes in v2:
- Extend ti-ads1298 instead of adding a new driver (Andy, Jonathan).
- Bindings: the ADS1299 goes into ti,ads1298.yaml, with no clock-names
  (Krzysztof). ti,ads1299 names the 8-channel part, as TI sells it as
  plain ADS1299 with no "-8"; ti,ads1299-4 and ti,ads1299-6 fall back to
  it, since the channel count is read from the ID register. Each ADS129x
  part also gets a compatible, with ti,ads1298 as the fallback.
- The issues the automated review found in v1 were inherited from
  ti-ads1298, so they are now fixed there, in patches 1 and 2.
- No <linux/mod_devicetable.h> is added (Uwe).
- The ABI that v1 added beyond ti-ads1298 (writable scale, _available
  lists, timestamp) is left for a follow-up; see the end.
- v1: https://lore.kernel.org/all/20261019001247.483005-1-stephanbrrs8@gmail.com/

The series:
- Patches 1 to 3 fix ti-ads1298 as it is in mainline today, grouped by
  area: the data read path, power-up and the device clock, and smaller
  issues (scale, ID check, regmap, Kconfig). Each has a Fixes: tag and
  none depends on the rest of the series, so they can be applied ahead
  of it.
- Patch 4 prepares the driver for more than one chip family, with a
  chip info structure, given as match data, that holds what differs
  between families. The ADS129x behaves as before.
- Patches 5 and 6 add the ADS1299 to the binding and to the driver,
  with a compatible for each ADS129x part and the optional DVDD supply
  and PWDN pin.

The ADS1299 shares the commands, the data format and most of the
register map of the ADS129x. It differs in:
- the PGA gains, 1 to 24;
- the data rates: no HR bit, and bit 7 of CONFIG1 is reserved;
- a fixed 4.5 V internal reference, and the reserved bits of CONFIG3;
- the ID layout (bit 3 alone tells the two families apart);
- the register map, which ends at CONFIG4;
- inputs that are shorted out of reset.
These are fields of the chip info and an ID decoding callback; the code
paths are the same for both families.

Testing:
- On real hardware: an ADS1299 with a Raspberry Pi 4, running the
  driver from the tip of the series. Probe, scale, data rates,
  single-shot reads, buffered capture, and buffer start and stop under
  stress all behave as expected. The clock fix in patch 2 was checked on
  the same board.
- With a KUnit test, kept out of this series, that runs the driver
  against an emulated ADS129x and ADS1299. It fails when most of the
  fixes are undone, and it found the command timing issue fixed in
  patch 2. I can post it if it is of interest.
- Three of the fixes in patch 1 were found by review and could not be
  reproduced; the commit message says which.
- Not tested: an ADS1298 or other ADS129x part. Mike, if you still have
  an ADS1298 board, a test of the series would be welcome.

Proposal for a follow-up: once this series is in, I would like to add
generic IIO ABI that serves both families in the same way: the PGA gain
of each channel through a writable scale, with
in_voltage_scale_available, sampling_frequency_available, and a
timestamp channel. Would that be acceptable as a follow-up series on
top of this one?

Stephan Costa Barros (6):
  iio: adc: ti-ads1298: fix the data read path
  iio: adc: ti-ads1298: fix power-up and clock handling
  iio: adc: ti-ads1298: fix scale, ID check, regmap and Kconfig
  iio: adc: ti-ads1298: prepare for more chip families
  dt-bindings: iio: adc: ti,ads1298: add ADS1299
  iio: adc: ti-ads1298: add ADS1299 support

 .../bindings/iio/adc/ti,ads1298.yaml          |  41 +-
 drivers/iio/adc/Kconfig                       |   7 +-
 drivers/iio/adc/ti-ads1298.c                  | 513 ++++++++++++++----
 3 files changed, 448 insertions(+), 113 deletions(-)


base-commit: c9dbe2a47f635465c9985b7af74d2ae310e98125
-- 
2.43.0


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2026-10-24 23:14 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-10-24 23:13 [PATCH v2 0/6] iio: adc: ti-ads1298: fixes, and ADS1299 support Stephan Costa Barros
2026-10-24 23:13 ` [PATCH v2 1/6] iio: adc: ti-ads1298: fix the data read path Stephan Costa Barros
2026-10-24 23:13 ` [PATCH v2 2/6] iio: adc: ti-ads1298: fix power-up and clock handling Stephan Costa Barros
2026-10-24 23:13 ` [PATCH v2 3/6] iio: adc: ti-ads1298: fix scale, ID check, regmap and Kconfig Stephan Costa Barros
2026-10-24 23:13 ` [PATCH v2 4/6] iio: adc: ti-ads1298: prepare for more chip families Stephan Costa Barros
2026-10-24 23:13 ` [PATCH v2 5/6] dt-bindings: iio: adc: ti,ads1298: add ADS1299 Stephan Costa Barros
2026-10-24 23:13 ` [PATCH v2 6/6] iio: adc: ti-ads1298: add ADS1299 support Stephan Costa Barros

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®