[PATCH v3 0/8] Support ROHM BD79104 ADC

Matti Vaittinen
2025-04-07T10:44:57Z

[-- Attachment #1: Type: text/plain, Size: 2377 bytes --]

The ROHM BD79104 ADC is a 12 bit, 8-channel ADC controlled via SPI.

The communication over SPI uses similar protocol as the ti-adc128s052.
In order to avoid code duplication, the support for the ROHM IC is
added in the same driver.

The driver side differencies between the ti-adc128s052 and the ROHM
BD79104 are related to the supply regulator handling. The BD79104
requires supplies for the VDD and IOVDD. The ti-adc128s052 driver
handles only the reference voltage supply, even though the TI data-sheet
indicates it can also have separate supplies.

Hardware vise the ROHM BD79104 requires SPI MODE 3, and has also some SPI
frequency limitations.

I decided to add own binding document for the ROHM BD79104 so it is
easier to document the SPI limitations. It also allows using the supply
names from the data sheet. And finally, it gives users of this IC a
better hint that it is supported.

I added myself as a maintainer for the driver, so I can stay on track of
the changes to it. If anyone with experience with (and acces to) the
TI's ICs has the energy ... feel free to add more maintainers.

This series was based on the v6.15-rc1

Revision history:

v2 = v3:
- Rebase on v6.15-rc1
- Minor improvements to the Vref handling
- Add MAINTAINERS entry
v1 => v2:
- Drop the claim that original driver is broken for BE and rename the
patch 0001 accordingly
- Fix race when filling the SPI message
- Check return value for the devm_mutex_init()
- Add a RFC patch for dropping the support for variable Vref.

---

Matti Vaittinen (8):
dt-bindings: ROHM BD79104 ADC
iio: adc: ti-adc128s052: Simplify using be16_to_cpu()
iio: adc: ti-adc128s052: Be consistent with arrays
iio: adc: ti-adc128s052: Use devm_mutex_init()
iio: adc: ti-adc128s052: Simplify using guard(mutex)
iio: adc: ti-adc128s052: Support ROHM BD79104
MAINTAINERS: A driver for TI/ROHM ADCs
iio: ti-adc128s052: Drop variable vref

.../bindings/iio/adc/rohm,bd79104.yaml | 69 +++++++++++++
MAINTAINERS | 6 ++
drivers/iio/adc/Kconfig | 2 +-
drivers/iio/adc/ti-adc128s052.c | 96 ++++++++++++-------
4 files changed, 135 insertions(+), 38 deletions(-)
create mode 100644 Documentation/devicetree/bindings/iio/adc/rohm,bd79104.yaml