From: Jonathan Cameron <jic23@kernel.org> To: Brian Masney <masneyb@onstation.org> Cc: devel@driverdev.osuosl.org, lars@metafoo.de, linux-iio@vger.kernel.org, gregkh@linuxfoundation.org, linux-kernel@vger.kernel.org, Jon.Brenner@ams.com, pmeerw@pmeerw.net, knaack.h@gmx.de Subject: Re: [PATCH 02/12] staging: iio: tsl2x7x: add common function for clearing interrupts Date: Sat, 10 Mar 2018 14:27:57 +0000 [thread overview] Message-ID: <20180310142757.1716947b@archlinux> (raw) In-Reply-To: <20180304014942.18727-3-masneyb@onstation.org> On Sat, 3 Mar 2018 20:49:32 -0500 Brian Masney <masneyb@onstation.org> wrote: > There were three places where the same chunk of code was used to clear > interrupts. This patch creates a common function > tsl2x7x_clear_interrupts() to reduce duplicate code. > > Signed-off-by: Brian Masney <masneyb@onstation.org> Hmm. This one wasn't immediately clear to me but having looked at the datasheet I see the logic in combining these into one function so fair enough. The odd addresses being set as bits within a register had me confused. Applied Thanks, Jonathan > --- > drivers/staging/iio/light/tsl2x7x.c | 52 +++++++++++++++++-------------------- > 1 file changed, 24 insertions(+), 28 deletions(-) > > diff --git a/drivers/staging/iio/light/tsl2x7x.c b/drivers/staging/iio/light/tsl2x7x.c > index b7e3f966c3a6..c02db03ef369 100644 > --- a/drivers/staging/iio/light/tsl2x7x.c > +++ b/drivers/staging/iio/light/tsl2x7x.c > @@ -279,6 +279,20 @@ static const u8 device_channel_config[] = { > ALSPRX2 > }; > > +static int tsl2x7x_clear_interrupts(struct tsl2X7X_chip *chip, int reg) > +{ > + int ret; > + > + ret = i2c_smbus_write_byte(chip->client, > + TSL2X7X_CMD_REG | TSL2X7X_CMD_SPL_FN | reg); > + if (ret < 0) > + dev_err(&chip->client->dev, > + "%s: failed to clear interrupt status %x: %d\n", > + __func__, reg, ret); > + > + return ret; > +} > + > /** > * tsl2x7x_get_lux() - Reads and calculates current lux value. > * @indio_dev: pointer to IIO device > @@ -346,16 +360,9 @@ static int tsl2x7x_get_lux(struct iio_dev *indio_dev) > buf[i] = ret; > } > > - /* clear any existing interrupt status */ > - ret = i2c_smbus_write_byte(chip->client, > - TSL2X7X_CMD_REG | > - TSL2X7X_CMD_SPL_FN | > - TSL2X7X_CMD_ALS_INT_CLR); > - if (ret < 0) { > - dev_err(&chip->client->dev, > - "i2c_write_command failed - err = %d\n", ret); > - goto out_unlock; /* have no data, so return failure */ > - } > + ret = tsl2x7x_clear_interrupts(chip, TSL2X7X_CMD_ALS_INT_CLR); > + if (ret < 0) > + goto out_unlock; > > /* extract ALS/lux data */ > ch0 = le16_to_cpup((const __le16 *)&buf[0]); > @@ -706,17 +713,10 @@ static int tsl2x7x_chip_on(struct iio_dev *indio_dev) > "%s: failed in tsl2x7x_IOCTL_INT_SET.\n", > __func__); > > - /* Clear out any initial interrupts */ > - ret = i2c_smbus_write_byte(chip->client, > - TSL2X7X_CMD_REG | > - TSL2X7X_CMD_SPL_FN | > - TSL2X7X_CMD_PROXALS_INT_CLR); > - if (ret < 0) { > - dev_err(&chip->client->dev, > - "%s: Failed to clear Int status\n", > - __func__); > - return ret; > - } > + ret = tsl2x7x_clear_interrupts(chip, > + TSL2X7X_CMD_PROXALS_INT_CLR); > + if (ret < 0) > + return ret; > } > > return ret; > @@ -1421,14 +1421,10 @@ static irqreturn_t tsl2x7x_event_handler(int irq, void *private) > IIO_EV_DIR_EITHER), > timestamp); > } > - /* Clear interrupt now that we have handled it. */ > - ret = i2c_smbus_write_byte(chip->client, > - TSL2X7X_CMD_REG | TSL2X7X_CMD_SPL_FN | > - TSL2X7X_CMD_PROXALS_INT_CLR); > + > + ret = tsl2x7x_clear_interrupts(chip, TSL2X7X_CMD_PROXALS_INT_CLR); > if (ret < 0) > - dev_err(&chip->client->dev, > - "Failed to clear irq from event handler. err = %d\n", > - ret); > + return ret; > > return IRQ_HANDLED; > } _______________________________________________ devel mailing list devel@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
WARNING: multiple messages have this Message-ID (diff)
From: Jonathan Cameron <jic23@kernel.org> To: Brian Masney <masneyb@onstation.org> Cc: linux-iio@vger.kernel.org, gregkh@linuxfoundation.org, devel@driverdev.osuosl.org, knaack.h@gmx.de, lars@metafoo.de, pmeerw@pmeerw.net, linux-kernel@vger.kernel.org, Jon.Brenner@ams.com Subject: Re: [PATCH 02/12] staging: iio: tsl2x7x: add common function for clearing interrupts Date: Sat, 10 Mar 2018 14:27:57 +0000 [thread overview] Message-ID: <20180310142757.1716947b@archlinux> (raw) In-Reply-To: <20180304014942.18727-3-masneyb@onstation.org> On Sat, 3 Mar 2018 20:49:32 -0500 Brian Masney <masneyb@onstation.org> wrote: > There were three places where the same chunk of code was used to clear > interrupts. This patch creates a common function > tsl2x7x_clear_interrupts() to reduce duplicate code. > > Signed-off-by: Brian Masney <masneyb@onstation.org> Hmm. This one wasn't immediately clear to me but having looked at the datasheet I see the logic in combining these into one function so fair enough. The odd addresses being set as bits within a register had me confused. Applied Thanks, Jonathan > --- > drivers/staging/iio/light/tsl2x7x.c | 52 +++++++++++++++++-------------------- > 1 file changed, 24 insertions(+), 28 deletions(-) > > diff --git a/drivers/staging/iio/light/tsl2x7x.c b/drivers/staging/iio/light/tsl2x7x.c > index b7e3f966c3a6..c02db03ef369 100644 > --- a/drivers/staging/iio/light/tsl2x7x.c > +++ b/drivers/staging/iio/light/tsl2x7x.c > @@ -279,6 +279,20 @@ static const u8 device_channel_config[] = { > ALSPRX2 > }; > > +static int tsl2x7x_clear_interrupts(struct tsl2X7X_chip *chip, int reg) > +{ > + int ret; > + > + ret = i2c_smbus_write_byte(chip->client, > + TSL2X7X_CMD_REG | TSL2X7X_CMD_SPL_FN | reg); > + if (ret < 0) > + dev_err(&chip->client->dev, > + "%s: failed to clear interrupt status %x: %d\n", > + __func__, reg, ret); > + > + return ret; > +} > + > /** > * tsl2x7x_get_lux() - Reads and calculates current lux value. > * @indio_dev: pointer to IIO device > @@ -346,16 +360,9 @@ static int tsl2x7x_get_lux(struct iio_dev *indio_dev) > buf[i] = ret; > } > > - /* clear any existing interrupt status */ > - ret = i2c_smbus_write_byte(chip->client, > - TSL2X7X_CMD_REG | > - TSL2X7X_CMD_SPL_FN | > - TSL2X7X_CMD_ALS_INT_CLR); > - if (ret < 0) { > - dev_err(&chip->client->dev, > - "i2c_write_command failed - err = %d\n", ret); > - goto out_unlock; /* have no data, so return failure */ > - } > + ret = tsl2x7x_clear_interrupts(chip, TSL2X7X_CMD_ALS_INT_CLR); > + if (ret < 0) > + goto out_unlock; > > /* extract ALS/lux data */ > ch0 = le16_to_cpup((const __le16 *)&buf[0]); > @@ -706,17 +713,10 @@ static int tsl2x7x_chip_on(struct iio_dev *indio_dev) > "%s: failed in tsl2x7x_IOCTL_INT_SET.\n", > __func__); > > - /* Clear out any initial interrupts */ > - ret = i2c_smbus_write_byte(chip->client, > - TSL2X7X_CMD_REG | > - TSL2X7X_CMD_SPL_FN | > - TSL2X7X_CMD_PROXALS_INT_CLR); > - if (ret < 0) { > - dev_err(&chip->client->dev, > - "%s: Failed to clear Int status\n", > - __func__); > - return ret; > - } > + ret = tsl2x7x_clear_interrupts(chip, > + TSL2X7X_CMD_PROXALS_INT_CLR); > + if (ret < 0) > + return ret; > } > > return ret; > @@ -1421,14 +1421,10 @@ static irqreturn_t tsl2x7x_event_handler(int irq, void *private) > IIO_EV_DIR_EITHER), > timestamp); > } > - /* Clear interrupt now that we have handled it. */ > - ret = i2c_smbus_write_byte(chip->client, > - TSL2X7X_CMD_REG | TSL2X7X_CMD_SPL_FN | > - TSL2X7X_CMD_PROXALS_INT_CLR); > + > + ret = tsl2x7x_clear_interrupts(chip, TSL2X7X_CMD_PROXALS_INT_CLR); > if (ret < 0) > - dev_err(&chip->client->dev, > - "Failed to clear irq from event handler. err = %d\n", > - ret); > + return ret; > > return IRQ_HANDLED; > }
next prev parent reply other threads:[~2018-03-10 14:27 UTC|newest] Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-03-04 1:49 [PATCH 00/12] staging cleanups Brian Masney 2018-03-04 1:49 ` [PATCH 01/12] staging: iio: tsl2x7x: remove power functions from tsl2X7X_platform_data Brian Masney 2018-03-10 14:20 ` Jonathan Cameron 2018-03-10 14:20 ` Jonathan Cameron 2018-03-04 1:49 ` [PATCH 02/12] staging: iio: tsl2x7x: add common function for clearing interrupts Brian Masney 2018-03-10 14:27 ` Jonathan Cameron [this message] 2018-03-10 14:27 ` Jonathan Cameron 2018-03-04 1:49 ` [PATCH 03/12] staging: iio: tsl2x7x: add common function for reading chip status Brian Masney 2018-03-10 14:34 ` Jonathan Cameron 2018-03-10 14:34 ` Jonathan Cameron 2018-03-04 1:49 ` [PATCH 04/12] staging: iio: tsl2x7x: add common function for writing to the control register Brian Masney 2018-03-10 14:36 ` Jonathan Cameron 2018-03-10 14:36 ` Jonathan Cameron 2018-03-04 1:49 ` [PATCH 05/12] staging: iio: tsl2x7x: convert mutex_trylock() to mutex_lock() Brian Masney 2018-03-10 14:39 ` Jonathan Cameron 2018-03-10 14:39 ` Jonathan Cameron 2018-03-04 1:49 ` [PATCH 06/12] staging: iio: tsl2x7x: correctly return errors in tsl2x7x_get_prox() Brian Masney 2018-03-10 14:42 ` Jonathan Cameron 2018-03-10 14:42 ` Jonathan Cameron 2018-03-04 1:49 ` [PATCH 07/12] staging: iio: tsl2x7x: correct 'Avoid CamelCase' warning from checkpatch Brian Masney 2018-03-10 14:43 ` Jonathan Cameron 2018-03-10 14:43 ` Jonathan Cameron 2018-03-04 1:49 ` [PATCH 08/12] staging: iio: tsl2x7x: add error handling to tsl2x7x_prox_cal() Brian Masney 2018-03-10 14:44 ` Jonathan Cameron 2018-03-10 14:44 ` Jonathan Cameron 2018-03-04 1:49 ` [PATCH 09/12] staging: iio: tsl2x7x: add missing error checks Brian Masney 2018-03-10 14:45 ` Jonathan Cameron 2018-03-10 14:45 ` Jonathan Cameron 2018-03-04 1:49 ` [PATCH 10/12] staging: iio: tsl2x7x: make logging consistent and correct newlines Brian Masney 2018-03-10 14:52 ` Jonathan Cameron 2018-03-10 14:52 ` Jonathan Cameron 2018-03-11 13:45 ` Jonathan Cameron 2018-03-04 1:49 ` [PATCH 11/12] staging: iio: tsl2x7x: remove unnecessary sysfs attribute Brian Masney 2018-03-10 14:54 ` Jonathan Cameron 2018-03-10 14:54 ` Jonathan Cameron 2018-03-04 1:49 ` [PATCH 12/12] staging: iio: tsl2x7x: make proximity sensor function correctly Brian Masney 2018-03-10 14:56 ` Jonathan Cameron
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20180310142757.1716947b@archlinux \ --to=jic23@kernel.org \ --cc=Jon.Brenner@ams.com \ --cc=devel@driverdev.osuosl.org \ --cc=gregkh@linuxfoundation.org \ --cc=knaack.h@gmx.de \ --cc=lars@metafoo.de \ --cc=linux-iio@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=masneyb@onstation.org \ --cc=pmeerw@pmeerw.net \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.