trig_info->owner = this_mod;
 
-       /* trig_info->ops is required for the module member */
-       if (!trig_info->ops)
-               return -EINVAL;
-
        trig_info->id = ida_simple_get(&iio_trigger_ida, 0, 0, GFP_KERNEL);
        if (trig_info->id < 0)
                return trig_info->id;
 
 void iio_trigger_notify_done(struct iio_trigger *trig)
 {
-       if (atomic_dec_and_test(&trig->use_count) && trig->ops->try_reenable)
+       if (atomic_dec_and_test(&trig->use_count) && trig->ops &&
+           trig->ops->try_reenable)
                if (trig->ops->try_reenable(trig))
                        /* Missed an interrupt so launch new poll now */
                        iio_trigger_poll(trig);
                goto out_put_irq;
 
        /* Enable trigger in driver */
-       if (trig->ops->set_trigger_state && notinuse) {
+       if (trig->ops && trig->ops->set_trigger_state && notinuse) {
                ret = trig->ops->set_trigger_state(trig, true);
                if (ret < 0)
                        goto out_free_irq;
                = (bitmap_weight(trig->pool,
                                 CONFIG_IIO_CONSUMERS_PER_TRIGGER)
                   == 1);
-       if (trig->ops->set_trigger_state && no_other_users) {
+       if (trig->ops && trig->ops->set_trigger_state && no_other_users) {
                ret = trig->ops->set_trigger_state(trig, false);
                if (ret)
                        return ret;
                        goto out_trigger_put;
        }
 
-       if (trig && trig->ops->validate_device) {
+       if (trig && trig->ops && trig->ops->validate_device) {
                ret = trig->ops->validate_device(trig, indio_dev);
                if (ret)
                        goto out_trigger_put;