From 59bfeaba3b62089f98952fe689d44a093275b1a0 Mon Sep 17 00:00:00 2001 From: Srinivas Pandruvada Date: Thu, 17 Jul 2014 01:42:00 +0100 Subject: [PATCH] iio: accel: kxcjk-1013: Use try_reenable to ack intr This chip needs explicit interrupt ack, introducing try_reenable callback. Also removed separate function to ack interrupt as this doesn't add any value. Signed-off-by: Srinivas Pandruvada Signed-off-by: Jonathan Cameron --- drivers/iio/accel/kxcjk-1013.c | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/drivers/iio/accel/kxcjk-1013.c b/drivers/iio/accel/kxcjk-1013.c index 4702aebf67f7..bff5161a36ce 100644 --- a/drivers/iio/accel/kxcjk-1013.c +++ b/drivers/iio/accel/kxcjk-1013.c @@ -138,19 +138,6 @@ static int kxcjk1013_set_mode(struct kxcjk1013_data *data, return 0; } -static int kxcjk1013_chip_ack_intr(struct kxcjk1013_data *data) -{ - int ret; - - ret = i2c_smbus_read_byte_data(data->client, KXCJK1013_REG_INT_REL); - if (ret < 0) { - dev_err(&data->client->dev, "Error writing reg_int_rel\n"); - return ret; - } - - return ret; -} - static int kxcjk1013_chip_init(struct kxcjk1013_data *data) { int ret; @@ -498,15 +485,11 @@ static irqreturn_t kxcjk1013_trigger_handler(int irq, void *p) indio_dev->masklength) { ret = kxcjk1013_get_acc_reg(data, bit); if (ret < 0) { - kxcjk1013_chip_ack_intr(data); mutex_unlock(&data->mutex); goto err; } data->buffer[i++] = ret; } - - kxcjk1013_chip_ack_intr(data); - mutex_unlock(&data->mutex); iio_push_to_buffers_with_timestamp(indio_dev, data->buffer, @@ -517,6 +500,21 @@ static irqreturn_t kxcjk1013_trigger_handler(int irq, void *p) return IRQ_HANDLED; } +static int kxcjk1013_trig_try_reen(struct iio_trigger *trig) +{ + struct iio_dev *indio_dev = iio_trigger_get_drvdata(trig); + struct kxcjk1013_data *data = iio_priv(indio_dev); + int ret; + + ret = i2c_smbus_read_byte_data(data->client, KXCJK1013_REG_INT_REL); + if (ret < 0) { + dev_err(&data->client->dev, "Error reading reg_int_rel\n"); + return ret; + } + + return 0; +} + static int kxcjk1013_data_rdy_trigger_set_state(struct iio_trigger *trig, bool state) { @@ -543,6 +541,7 @@ static int kxcjk1013_data_rdy_trigger_set_state(struct iio_trigger *trig, static const struct iio_trigger_ops kxcjk1013_trigger_ops = { .set_trigger_state = kxcjk1013_data_rdy_trigger_set_state, + .try_reenable = kxcjk1013_trig_try_reen, .owner = THIS_MODULE, }; -- 2.45.2