[PATCH v2 0/5] Support ROHM BD79124 ADC/GPO

From: Matti Vaittinen
Date: Wed Feb 05 2025 - 08:34:23 EST


Support ROHM BD79124 ADC.

Quite usual stuff. 12-bit, 8-channel ADC with threshold monitoring.

Except that:
- each ADC input pin can be configured as a general purpose output.
- manually starting an ADC conversion and reading the result would
require the I2C _master_ to do clock stretching(!) for the duration
of the conversion... Let's just say this is not well supported.
- IC supports 'autonomous measurement mode' and storing latest results
to the result registers. This mode is used by the driver due to the
"peculiar" I2C when doing manual reads.

Furthermore, the ADC uses this continuous autonomous measuring,
and the IC keeps producing new 'out of window' IRQs if measurements are
out of window - the driver disables the event for 1 seconds when sending
it to user. This prevents generating storm of events

Revision history:
RFC v1 => v2:
- Drop MFD and pinmux.
- Automatically re-enable events after 1 second.
- Export fwnode parsing helpers for finding the ADC channels.

---

Matti Vaittinen (5):
dt-bindings: ROHM BD79124 ADC/GPO
iio: adc: add helpers for parsing ADC nodes
iio: adc: Support ROHM BD79124 ADC
MAINTAINERS: Add IIO ADC helpers
MAINTAINERS: Add ROHM BD79124 ADC/GPO

.../bindings/iio/adc/rohm,bd79124.yaml | 114 ++
MAINTAINERS | 12 +
drivers/iio/adc/Kconfig | 15 +
drivers/iio/adc/Makefile | 2 +
drivers/iio/adc/industrialio-adc.c | 151 +++
drivers/iio/adc/rohm-bd79124.c | 1149 +++++++++++++++++
include/linux/iio/adc-helpers.h | 22 +
7 files changed, 1465 insertions(+)
create mode 100644 Documentation/devicetree/bindings/iio/adc/rohm,bd79124.yaml
create mode 100644 drivers/iio/adc/industrialio-adc.c
create mode 100644 drivers/iio/adc/rohm-bd79124.c
create mode 100644 include/linux/iio/adc-helpers.h


base-commit: 5bc55a333a2f7316b58edc7573e8e893f7acb532
--
2.48.1

Attachment: signature.asc
Description: PGP signature