Message ID | 20230408114825.824505-1-risca@dalakolonin.se (mailing list archive) |
---|---|
Headers | show |
Series | iio: adc: palmas_gpadc: add iio events | expand |
On Sat, 8 Apr 2023 13:48:16 +0200 Patrik Dahlström <risca@dalakolonin.se> 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