[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20230405212233.4167986-4-risca@dalakolonin.se>
Date: Wed, 5 Apr 2023 23:22:29 +0200
From: Patrik Dahlström <risca@...akolonin.se>
To: linux-iio@...r.kernel.org
Cc: linux-kernel@...r.kernel.org, letux-kernel@...nphoenux.org,
kernel@...a-handheld.com, pgoudagunta@...dia.com,
hns@...delico.com, jic23@...nel.org, lars@...afoo.de,
linux-omap@...r.kernel.org,
Patrik Dahlström <risca@...akolonin.se>
Subject: [PATCH v3 3/7] iio: adc: palmas: use iio_event_direction for threshold polarity
Instead of having high_threshold > 0 as an indicator for upper threshold
event and lower threshold event otherwise, use enum iio_event_direction
instead. This is hopefully less ambiguous.
Signed-off-by: Patrik Dahlström <risca@...akolonin.se>
---
drivers/iio/adc/palmas_gpadc.c | 36 ++++++++++++++++++++++------------
1 file changed, 23 insertions(+), 13 deletions(-)
diff --git a/drivers/iio/adc/palmas_gpadc.c b/drivers/iio/adc/palmas_gpadc.c
index 55fdf59ef711..205a7628b235 100644
--- a/drivers/iio/adc/palmas_gpadc.c
+++ b/drivers/iio/adc/palmas_gpadc.c
@@ -77,9 +77,9 @@ static struct palmas_gpadc_info palmas_gpadc_info[] = {
};
struct palmas_adc_event {
- int adc_channel_number;
- int adc_high_threshold;
- int adc_low_threshold;
+ int channel;
+ int raw_thresh;
+ enum iio_event_direction direction;
};
/*
@@ -618,16 +618,21 @@ static int palmas_adc_configure_events(struct palmas_gpadc *adc)
conv = 0;
if (adc->event0_enable) {
+ struct palmas_adc_event *ev = &adc->event0;
int polarity;
- ch0 = adc->event0.adc_channel_number;
+ ch0 = ev->channel;
+ thres = ev->raw_thresh;
conv |= PALMAS_GPADC_AUTO_CTRL_AUTO_CONV0_EN;
- if (adc->event0.adc_high_threshold > 0) {
- thres = adc->event0.adc_high_threshold;
+ switch (ev->direction) {
+ case IIO_EV_DIR_RISING:
polarity = 0;
- } else {
- thres = adc->event0.adc_low_threshold;
+ break;
+ case IIO_EV_DIR_FALLING:
polarity = PALMAS_GPADC_THRES_CONV0_MSB_THRES_CONV0_POL;
+ break;
+ default:
+ return -EINVAL;
}
ret = palmas_write(adc->palmas, PALMAS_GPADC_BASE,
@@ -649,16 +654,21 @@ static int palmas_adc_configure_events(struct palmas_gpadc *adc)
}
if (adc->event1_enable) {
+ struct palmas_adc_event *ev = &adc->event1;
int polarity;
- ch1 = adc->event1.adc_channel_number;
+ ch1 = ev->channel;
+ thres = ev->raw_thresh;
conv |= PALMAS_GPADC_AUTO_CTRL_AUTO_CONV1_EN;
- if (adc->event1.adc_high_threshold > 0) {
- thres = adc->event1.adc_high_threshold;
+ switch (ev->direction) {
+ case IIO_EV_DIR_RISING:
polarity = 0;
- } else {
- thres = adc->event1.adc_low_threshold;
+ break;
+ case IIO_EV_DIR_FALLING:
polarity = PALMAS_GPADC_THRES_CONV1_MSB_THRES_CONV1_POL;
+ break;
+ default:
+ return -EINVAL;
}
ret = palmas_write(adc->palmas, PALMAS_GPADC_BASE,
--
2.25.1
Powered by blists - more mailing lists