if (ret)
                return ret;
 
+       /* We cannot mask the interrupt, so ensure it isn't auto enabled */
+       st->adis.irq_flag |= IRQF_NO_AUTOEN;
        ret = devm_adis_setup_buffer_and_trigger(&st->adis, indio_dev, NULL);
        if (ret)
                return ret;
 
-       adis16460_enable_irq(&st->adis, 0);
-
        ret = __adis_initial_startup(&st->adis);
        if (ret)
                return ret;
 
                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);
        if (ret)
                return ret;
 
-       adis16475_enable_irq(&st->adis, false);
-
        ret = devm_iio_device_register(&spi->dev, indio_dev);
        if (ret)
                return ret;
 
 
 static int adis_validate_irq_flag(struct adis *adis)
 {
+       unsigned long direction = adis->irq_flag & IRQF_TRIGGER_MASK;
        /*
         * Typically this devices have data ready either on the rising edge or
         * on the falling edge of the data ready pin. This checks enforces that
         * one of those is set in the drivers... It defaults to
-        * IRQF_TRIGGER_RISING for backward compatibility wiht devices that
+        * IRQF_TRIGGER_RISING for backward compatibility with devices that
         * don't support changing the pin polarity.
         */
-       if (!adis->irq_flag) {
-               adis->irq_flag = IRQF_TRIGGER_RISING;
+       if (direction == IRQF_TRIGGER_NONE) {
+               adis->irq_flag |= IRQF_TRIGGER_RISING;
                return 0;
-       } else if (adis->irq_flag != IRQF_TRIGGER_RISING &&
-                  adis->irq_flag != IRQF_TRIGGER_FALLING) {
+       } else if (direction != IRQF_TRIGGER_RISING &&
+                  direction != IRQF_TRIGGER_FALLING) {
                dev_err(&adis->spi->dev, "Invalid IRQ mask: %08lx\n",
                        adis->irq_flag);
                return -EINVAL;