|
@@ -68,6 +68,10 @@ int iio_trigger_register(struct iio_trigger *trig_info)
|
|
|
{
|
|
|
int ret;
|
|
|
|
|
|
+ /* 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;
|
|
@@ -164,8 +168,7 @@ EXPORT_SYMBOL(iio_trigger_poll_chained);
|
|
|
|
|
|
void iio_trigger_notify_done(struct iio_trigger *trig)
|
|
|
{
|
|
|
- if (atomic_dec_and_test(&trig->use_count) && trig->ops &&
|
|
|
- trig->ops->try_reenable)
|
|
|
+ if (atomic_dec_and_test(&trig->use_count) && trig->ops->try_reenable)
|
|
|
if (trig->ops->try_reenable(trig))
|
|
|
/* Missed an interrupt so launch new poll now */
|
|
|
iio_trigger_poll(trig);
|
|
@@ -219,7 +222,7 @@ static int iio_trigger_attach_poll_func(struct iio_trigger *trig,
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
- if (trig->ops && trig->ops->set_trigger_state && notinuse) {
|
|
|
+ if (trig->ops->set_trigger_state && notinuse) {
|
|
|
ret = trig->ops->set_trigger_state(trig, true);
|
|
|
if (ret < 0)
|
|
|
module_put(pf->indio_dev->info->driver_module);
|
|
@@ -236,7 +239,7 @@ static int iio_trigger_detach_poll_func(struct iio_trigger *trig,
|
|
|
= (bitmap_weight(trig->pool,
|
|
|
CONFIG_IIO_CONSUMERS_PER_TRIGGER)
|
|
|
== 1);
|
|
|
- if (trig->ops && trig->ops->set_trigger_state && no_other_users) {
|
|
|
+ if (trig->ops->set_trigger_state && no_other_users) {
|
|
|
ret = trig->ops->set_trigger_state(trig, false);
|
|
|
if (ret)
|
|
|
return ret;
|
|
@@ -358,7 +361,7 @@ static ssize_t iio_trigger_write_current(struct device *dev,
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
- if (trig && trig->ops && trig->ops->validate_device) {
|
|
|
+ if (trig && trig->ops->validate_device) {
|
|
|
ret = trig->ops->validate_device(trig, indio_dev);
|
|
|
if (ret)
|
|
|
return ret;
|