From: Jonathan Cameron <jic23@kernel.org>
To: Vasileios Amoiridis <vassilisamir@gmail.com>
Cc: lars@metafoo.de, robh@kernel.org, krzk+dt@kernel.org,
conor+dt@kernel.org, andriy.shevchenko@linux.intel.com,
ang.iglesiasg@gmail.com, linus.walleij@linaro.org,
biju.das.jz@bp.renesas.com, javier.carrasco.cruz@gmail.com,
semen.protsenko@linaro.org, 579lpy@gmail.com, ak@it-klinger.de,
linux-iio@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v1 09/10] iio: pressure: bmp280: Add data ready trigger support
Date: Sat, 20 Jul 2024 12:37:27 +0100 [thread overview]
Message-ID: <20240720123727.7598111b@jic23-huawei> (raw)
In-Reply-To: <20240711211558.106327-10-vassilisamir@gmail.com>
On Thu, 11 Jul 2024 23:15:57 +0200
Vasileios Amoiridis <vassilisamir@gmail.com> wrote:
> The BMP3xx and BMP5xx sensors have an interrupt pin which can be used as
> a trigger for when there are data ready in the sensor for pick up.
>
> This use case is used along with NORMAL_MODE in the sensor, which allows
> the sensor to do consecutive measurements depending on the ODR rate value.
>
> The trigger pin can be configured to be open-drain or push-pull and either
> rising or falling edge.
>
> No support is added yet for interrupts for FIFO, WATERMARK and out of range
> values.
>
> Signed-off-by: Vasileios Amoiridis <vassilisamir@gmail.com>
A few minor things inline.
It might be worth thinking a bit about future fifo support as that can
get a little messy in a driver that already supports a dataready trigger.
We end up with no trigger being set meaning use the fifo. Sometimes
it makes more sense to not support triggers at all.
What you have here is fine though as we have a bunch of drivers
that grew dataready trigger support before adding fifos later
particularly as often it's a 'new chip' that brings the fifo
support but maintains backwards compatibility if you don't use it.
> +
> +static int bmp380_trigger_probe(struct iio_dev *indio_dev)
> +{
> + struct bmp280_data *data = iio_priv(indio_dev);
> + struct fwnode_handle *fwnode;
> + int ret, irq, irq_type;
> + struct irq_data *desc;
> +
> + fwnode = dev_fwnode(data->dev);
> + if (!fwnode)
> + return -ENODEV;
> +
> + irq = fwnode_irq_get_byname(fwnode, "DRDY");
> + if (!irq) {
> + dev_err(data->dev, "No DRDY interrupt found\n");
> + return -ENODEV;
As below. return dev_err_probe() for anything that is only
called from probe()
> + }
> +
> + desc = irq_get_irq_data(irq);
> + if (!desc)
> + return -EINVAL;
> +
> + irq_type = irqd_get_trigger_type(desc);
> + switch (irq_type) {
> + case IRQF_TRIGGER_RISING:
> + data->trig_active_high = true;
> + break;
> + case IRQF_TRIGGER_FALLING:
> + data->trig_active_high = false;
> + break;
> + default:
> + dev_err(data->dev, "Invalid interrupt type specified\n");
> + return -EINVAL;
> + }
> +
> + data->trig_open_drain = fwnode_property_read_bool(fwnode,
> + "int-open-drain");
> +
> + ret = bmp380_int_config(data);
> + if (ret)
> + return ret;
> +
> + data->trig = devm_iio_trigger_alloc(data->dev, "%s-dev%d",
> + indio_dev->name,
> + iio_device_id(indio_dev));
> + if (!data->trig)
> + return -ENOMEM;
> +
> + data->trig->ops = &bmp380_trigger_ops;
> + iio_trigger_set_drvdata(data->trig, data);
> +
> + ret = devm_request_irq(data->dev, irq,
> + &iio_trigger_generic_data_rdy_poll,
> + IRQF_ONESHOT, indio_dev->name, data->trig);
> + if (ret) {
> + dev_err(data->dev, "request irq failed\n");
> + return ret;
> + }
> +
> + ret = devm_iio_trigger_register(data->dev, data->trig);
> + if (ret) {
> + dev_err(data->dev, "iio trigger register failed\n");
> + return ret;
> + }
> +
> + indio_dev->trig = iio_trigger_get(data->trig);
> +
> + return 0;
> +}
> +
> +
One blank line only.
> static irqreturn_t bmp380_trigger_handler(int irq, void *p)
> +
> +static int bmp580_trigger_probe(struct iio_dev *indio_dev)
> +{
> + struct bmp280_data *data = iio_priv(indio_dev);
> + struct fwnode_handle *fwnode;
> + int ret, irq, irq_type;
> + struct irq_data *desc;
> +
> + fwnode = dev_fwnode(data->dev);
> + if (!fwnode)
> + return -ENODEV;
> +
> + irq = fwnode_irq_get_byname(fwnode, "DRDY");
> + if (!irq) {
> + dev_err(data->dev, "No DRDY interrupt found\n");
As this only gets called from probe(), use return dev_err_probe() throughout.
> + return -ENODEV;
> + }
> +
> + desc = irq_get_irq_data(irq);
> + if (!desc)
> + return -EINVAL;
> +
> + irq_type = irqd_get_trigger_type(desc);
> + switch (irq_type) {
> + case IRQF_TRIGGER_RISING:
> + data->trig_active_high = true;
> + break;
> + case IRQF_TRIGGER_FALLING:
> + data->trig_active_high = false;
> + break;
> + default:
> + dev_err(data->dev, "Invalid interrupt type specified\n");
> + return -EINVAL;
> + }
> +
> + data->trig_open_drain = fwnode_property_read_bool(fwnode,
> + "int-open-drain");
> +
> + ret = bmp580_int_config(data);
> + if (ret)
> + return ret;
> +
> + data->trig = devm_iio_trigger_alloc(data->dev, "%s-dev%d",
> + indio_dev->name,
> + iio_device_id(indio_dev));
> + if (!data->trig)
> + return -ENOMEM;
> +
> + data->trig->ops = &bmp580_trigger_ops;
> + iio_trigger_set_drvdata(data->trig, data);
> +
> + ret = devm_request_irq(data->dev, irq,
> + &iio_trigger_generic_data_rdy_poll,
> + IRQF_ONESHOT, indio_dev->name, data->trig);
> + if (ret) {
> + dev_err(data->dev, "request irq failed\n");
> + return ret;
> + }
> +
> + ret = devm_iio_trigger_register(data->dev, data->trig);
> + if (ret) {
> + dev_err(data->dev, "iio trigger register failed\n");
> + return ret;
> + }
> +
> + indio_dev->trig = iio_trigger_get(data->trig);
> +
> + return 0;
> +}
>
>
next prev parent reply other threads:[~2024-07-20 11:37 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-11 21:15 [PATCH v1 00/10] BMP280: Minor cleanup and interrupt support Vasileios Amoiridis
2024-07-11 21:15 ` [PATCH v1 01/10] iio: pressure: bmp280: Fix regmap for BMP280 device Vasileios Amoiridis
2024-07-20 11:04 ` Jonathan Cameron
2024-07-21 19:51 ` Vasileios Amoiridis
2024-07-11 21:15 ` [PATCH v1 02/10] iio: pressure: bmp280: Fix waiting time for BMP3xx configuration Vasileios Amoiridis
2024-07-20 11:06 ` Jonathan Cameron
2024-07-21 19:53 ` Vasileios Amoiridis
2024-07-11 21:15 ` [PATCH v1 03/10] iio: pressure: bmp280: Sort headers alphabetically Vasileios Amoiridis
2024-07-20 11:07 ` Jonathan Cameron
2024-07-11 21:15 ` [PATCH v1 04/10] iio: pressure: bmp280: Use bulk read for humidity calibration data Vasileios Amoiridis
2024-07-20 11:16 ` Jonathan Cameron
2024-07-21 21:22 ` Vasileios Amoiridis
2024-07-11 21:15 ` [PATCH v1 05/10] iio: pressure: bmp280: Add support for bmp280 soft reset Vasileios Amoiridis
2024-07-11 21:15 ` [PATCH v1 06/10] iio: pressure: bmp280: Remove config error check for IIR filter updates Vasileios Amoiridis
2024-07-11 21:15 ` [PATCH v1 07/10] iio: pressure: bmp280: Use sleep and forced mode for oneshot captures Vasileios Amoiridis
2024-07-20 11:28 ` Jonathan Cameron
2024-07-21 22:11 ` Vasileios Amoiridis
2024-07-22 19:15 ` Jonathan Cameron
2024-07-11 21:15 ` [PATCH v1 08/10] dt-bindings: iio: pressure: bmp085: Add interrupts for BMP3xx and BMP5xx devices Vasileios Amoiridis
2024-07-11 22:33 ` Rob Herring (Arm)
2024-07-12 12:48 ` Rob Herring
2024-07-21 22:12 ` Vasileios Amoiridis
2024-07-11 21:15 ` [PATCH v1 09/10] iio: pressure: bmp280: Add data ready trigger support Vasileios Amoiridis
2024-07-20 11:37 ` Jonathan Cameron [this message]
2024-07-21 23:51 ` Vasileios Amoiridis
2024-07-22 19:31 ` Jonathan Cameron
2024-07-22 20:38 ` Vasileios Amoiridis
2024-07-27 12:15 ` Jonathan Cameron
2024-07-11 21:15 ` [PATCH v1 10/10] iio: pressure bmp280: Move bmp085 interrupt to new configuration Vasileios Amoiridis
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=20240720123727.7598111b@jic23-huawei \
--to=jic23@kernel.org \
--cc=579lpy@gmail.com \
--cc=ak@it-klinger.de \
--cc=andriy.shevchenko@linux.intel.com \
--cc=ang.iglesiasg@gmail.com \
--cc=biju.das.jz@bp.renesas.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=javier.carrasco.cruz@gmail.com \
--cc=krzk+dt@kernel.org \
--cc=lars@metafoo.de \
--cc=linus.walleij@linaro.org \
--cc=linux-iio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=robh@kernel.org \
--cc=semen.protsenko@linaro.org \
--cc=vassilisamir@gmail.com \
/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: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).