Re: [PATCH v4 0/9] iio: adc: palmas_gpadc: add iio events

From: Jonathan Cameron
Date: Wed Apr 12 2023 - 16:22:22 EST


On Sat, 8 Apr 2023 13:48:16 +0200
Patrik Dahlström <risca@xxxxxxxxxxxxxx> wrote:

Hi Patrik,

Patches 3-9 applied from this posting to the togreg branch of iio.git
which will initially be pushed out as testing so 0-day can poke at it
tomorrow.

Thanks,

Jonathan


> This series is based on iio/togreg [1] and includes one patch ("fix NULL
> dereference on rmmod") which is already in linux-next and another patch
> from Jonathan Cameron ("Take probe fully device managed") to make the
> rest of the patches apply cleanly to iio/togreg.
>
> The palmas gpadc block has support for monitoring up to 2 ADC channels
> and issue an interrupt if they reach past a set threshold. This can be
> configured statically with device tree today, but it only gets enabled
> when reaching sleep mode. Also, it doesn't look like anyone is using it.
>
> Instead of this one special case, change the code so userspace can
> configure the ADC channels to their own needs through the iio events
> subsystem. The high and low threshold values can be set for every
> channel, but only 2 thresholds can be enabled at a time. Trying to
> enable more than 2 thresholds will result in an error.
>
> The configured thresholds will wake up the system from sleep mode if
> wakeup is enabled in /sys/devices/.../power/wakeup.
>
> The old platform data was removed.
>
> Thresholds, events, and wakeup were tested on omap5-uevm board. It wakes
> up from sleep mode when wakeup is enabled and a threshold is passed. A
> userspace tool for monitoring events and adjusting thresholds can be
> found at [2].
>
> For more background and the use case for these patches, see [3].
>
> V3 -> V4:
> * Reabased to iio/togreg and included required patches.
> * Avoid initializing variables unnecessarily.
> * Minor cosmetic fixes to comments.
> V2 -> V3:
> * Rebased to linux-next.
> * Avoid reconfiguring events on error and when old == new value.
> V1 -> V2:
> * Begin by removing adc_wakeupX_data instead of doing it last.
> * Split changes in smaller patches
>
> [1] git://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio.git
> [2] https://github.com/Risca/pyra_vol_mon
> [3] https://pyra-handheld.com/boards/threads/improve-volume-wheel-daemon-bounty.99430/post-1711410
>
> Jonathan Cameron (1):
> iio: adc: palmas: Take probe fully device managed.
>
> Patrik Dahlström (8):
> iio: adc: palmas_gpadc: fix NULL dereference on rmmod
> iio: adc: palmas: remove adc_wakeupX_data
> iio: adc: palmas: replace "wakeup" with "event"
> iio: adc: palmas: use iio_event_direction for threshold polarity
> iio: adc: palmas: move eventX_enable into palmas_adc_event
> iio: adc: palmas: always reset events on unload
> iio: adc: palmas: add support for iio threshold events
> iio: adc: palmas: don't alter event config on suspend/resume
>
> drivers/iio/adc/palmas_gpadc.c | 616 +++++++++++++++++++++++++--------
> include/linux/mfd/palmas.h | 8 -
> 2 files changed, 478 insertions(+), 146 deletions(-)
>
>
> base-commit: f73df43e957a6fc705a9bd6d143585bdf1b13365