iio: adis16475: make use of the new unmasked_drdy flag
authorNuno Sá <nuno.sa@analog.com>
Fri, 3 Sep 2021 14:14:21 +0000 (16:14 +0200)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Tue, 19 Oct 2021 07:27:34 +0000 (08:27 +0100)
The library can now handle enabling/disabling IRQs for devices that
cannot unmask the data ready pin. Hence there's no need to provide an
'enable_irq' callback anymore.

The library will also automatically request the IRQ with 'IRQF_NO_AUTOEN'
so that we can also remove that from the driver.

Signed-off-by: Nuno Sá <nuno.sa@analog.com>
Link: https://lore.kernel.org/r/20210903141423.517028-4-nuno.sa@analog.com
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/imu/adis16475.c

index eb48102..b76d848 100644 (file)
@@ -606,20 +606,6 @@ static const char * const adis16475_status_error_msgs[] = {
        [ADIS16475_DIAG_STAT_CLK] = "Clock error",
 };
 
-static int adis16475_enable_irq(struct adis *adis, bool enable)
-{
-       /*
-        * There is no way to gate the data-ready signal internally inside the
-        * ADIS16475. We can only control it's polarity...
-        */
-       if (enable)
-               enable_irq(adis->spi->irq);
-       else
-               disable_irq(adis->spi->irq);
-
-       return 0;
-}
-
 #define ADIS16475_DATA(_prod_id, _timeouts)                            \
 {                                                                      \
        .msc_ctrl_reg = ADIS16475_REG_MSG_CTRL,                         \
@@ -640,7 +626,7 @@ static int adis16475_enable_irq(struct adis *adis, bool enable)
                BIT(ADIS16475_DIAG_STAT_SENSOR) |                       \
                BIT(ADIS16475_DIAG_STAT_MEMORY) |                       \
                BIT(ADIS16475_DIAG_STAT_CLK),                           \
-       .enable_irq = adis16475_enable_irq,                             \
+       .unmasked_drdy = true,                                          \
        .timeouts = (_timeouts),                                        \
        .burst_reg_cmd = ADIS16475_REG_GLOB_CMD,                        \
        .burst_len = ADIS16475_BURST_MAX_DATA,                          \
@@ -1254,9 +1240,6 @@ static int adis16475_config_irq_pin(struct adis16475 *st)
                return -EINVAL;
        }
 
-       /* We cannot mask the interrupt so ensure it's not enabled at request */
-       st->adis.irq_flag |= IRQF_NO_AUTOEN;
-
        val = ADIS16475_MSG_CTRL_DR_POL(polarity);
        ret = __adis_update_bits(&st->adis, ADIS16475_REG_MSG_CTRL,
                                 ADIS16475_MSG_CTRL_DR_POL_MASK, val);