Re: [PATCH v3 1/3] iio: adc: ti-ads112c14: add DRDY interrupt support
Andy Shevchenko <[email protected]>
| Newsgroups | org.kernel.vger.linux-iio,org.kernel.vger.linux-kernel |
|---|---|
| Organization | Intel Finland Oy - BIC 0357606-4 - c/o Alberga Business Park, 6 krs, Bertel Jungin Aukio 5, 02600 Espoo |
| Message-ID | <[email protected]> |
On Fri, Aug 07, 2026 at 04:19:46PM -0500, David Lechner (TI) wrote:
> Add handling for the DRDY interrupt to wait for data ready events rather
> than polling (only when it is wired up).
...
> +static irqreturn_t ads112c14_drdy_irq_handler(int irq, void *private)
> +{
> + struct iio_dev *indio_dev = private;
> + struct ads112c14_data *data = iio_priv(indio_dev);
I have seen some discussion about this, but what's the problem with the
struct ads112c14_data *data = iio_priv(private);
?
> + complete(&data->drdy_completion);
> +
> + return IRQ_HANDLED;
> +}
...
> + if (device_property_present(dev, "interrupts")) {
Unfortunately this is no-go for ACPI-enabled systems.
On ACPI we expect to have 'interrupt-names' but 'interrupts' is OF-only.
> + data->drdy_irq = fwnode_irq_get_byname(dev_fwnode(dev), "drdy");
> + if (data->drdy_irq < 0)
> + return dev_err_probe(dev, data->drdy_irq,
> + "failed to get drdy interrupt\n");
> +
> + /*
> + * REVISIT: would probably need to implement a pin controller in
> + * order to support open drain option here.
> + */
> + ret = regmap_update_bits(data->regmap, ADS112C14_REG_GPIO_CFG,
> + ADS112C14_GPIO_CFG_GPIO3_CFG,
> + FIELD_PREP(ADS112C14_GPIO_CFG_GPIO3_CFG,
> + ADS112C14_GPIO_CFG_GPIO_CFG_OUTPUT_PUSH_PULL));
> + if (ret)
> + return ret;
> +
> + ret = regmap_update_bits(data->regmap, ADS112C14_REG_GPIO_DATA_OUTPUT,
> + ADS112C14_GPIO_DATA_OUTPUT_GPIO3_SRC,
> + FIELD_PREP(ADS112C14_GPIO_DATA_OUTPUT_GPIO3_SRC,
> + ADS112C14_GPIO_DATA_OUTPUT_GPIO3_SRC_DRDY));
> + if (ret)
> + return ret;
> +
> + init_completion(&data->drdy_completion);
> +
> + ret = devm_request_irq(dev, data->drdy_irq, ads112c14_drdy_irq_handler,
> + 0, dev_name(dev), indio_dev);
> + if (ret)
> + return ret;
> + }
--
With Best Regards,
Andy Shevchenko