···103103 * lis3l02dq_poll_func_th() top half interrupt handler called by trigger104104 * @private_data: iio_dev105105 **/106106-static void lis3l02dq_poll_func_th(struct iio_dev *indio_dev)106106+static void lis3l02dq_poll_func_th(struct iio_dev *indio_dev, s64 time)107107{108108- struct lis3l02dq_state *st = iio_dev_get_devdata(indio_dev);109109- st->last_timestamp = indio_dev->trig->timestamp;108108+ struct lis3l02dq_state *st = iio_dev_get_devdata(indio_dev);109109+ st->last_timestamp = time;110110 schedule_work(&st->work_trigger_to_ring);111111 /* Indicate that this interrupt is being handled */112112···128128 struct lis3l02dq_state *st = iio_dev_get_devdata(dev_info);129129 struct iio_trigger *trig = st->trig;130130131131- trig->timestamp = timestamp;132132- iio_trigger_poll(trig);131131+ iio_trigger_poll(trig, timestamp);133132134133 return IRQ_HANDLED;135134}
+1-1
drivers/staging/iio/adc/max1363_ring.c
···113113 * then. Some triggers will generate their own time stamp. Currently114114 * there is no way of notifying them when no one cares.115115 **/116116-static void max1363_poll_func_th(struct iio_dev *indio_dev)116116+static void max1363_poll_func_th(struct iio_dev *indio_dev, s64 time)117117{118118 struct max1363_state *st = indio_dev->dev_data;119119
···172172}173173EXPORT_SYMBOL(iio_trigger_find_by_name);174174175175-void iio_trigger_poll(struct iio_trigger *trig)175175+void iio_trigger_poll(struct iio_trigger *trig, s64 time)176176{177177 struct iio_poll_func *pf_cursor;178178···184184 }185185 list_for_each_entry(pf_cursor, &trig->pollfunc_list, list) {186186 if (pf_cursor->poll_func_main) {187187- pf_cursor->poll_func_main(pf_cursor->private_data);187187+ pf_cursor->poll_func_main(pf_cursor->private_data,188188+ time);188189 trig->use_count++;189190 }190191 }···198197 if (trig->use_count == 0 && trig->try_reenable)199198 if (trig->try_reenable(trig)) {200199 /* Missed and interrupt so launch new poll now */201201- trig->timestamp = 0;202202- iio_trigger_poll(trig);200200+ iio_trigger_poll(trig, 0);203201 }204202}205203EXPORT_SYMBOL(iio_trigger_notify_done);···400400401401int iio_alloc_pollfunc(struct iio_dev *indio_dev,402402 void (*immediate)(struct iio_dev *indio_dev),403403- void (*main)(struct iio_dev *private_data))403403+ void (*main)(struct iio_dev *private_data, s64 time))404404{405405 indio_dev->pollfunc = kzalloc(sizeof(*indio_dev->pollfunc), GFP_KERNEL);406406 if (indio_dev->pollfunc == NULL)
+7-5
drivers/staging/iio/trigger.h
···2121 * @pollfunc_list_lock: [INTERN] protection of the polling function list2222 * @pollfunc_list: [INTERN] list of functions to run on trigger.2323 * @control_attrs: [DRIVER] sysfs attributes relevant to trigger type2424- * @timestamp: [INTERN] timestamp usesd by some trigs (e.g. datardy)2524 * @owner: [DRIVER] used to monitor usage count of the trigger.2625 * @use_count: use count for the trigger2726 * @set_trigger_state: [DRIVER] switch on/off the trigger on demand···3839 spinlock_t pollfunc_list_lock;3940 struct list_head pollfunc_list;4041 const struct attribute_group *control_attrs;4141- s64 timestamp;4242 struct module *owner;4343 int use_count;4444···118120 *119121 * Typically called in relevant hardware interrupt handler.120122 **/121121-void iio_trigger_poll(struct iio_trigger *trig);123123+void iio_trigger_poll(struct iio_trigger *trig, s64 time);122124void iio_trigger_notify_done(struct iio_trigger *trig);123125124126/**···142144 struct list_head list;143145 void *private_data;144146 void (*poll_func_immediate)(struct iio_dev *indio_dev);145145- void (*poll_func_main)(struct iio_dev *private_data);147147+ void (*poll_func_main)(struct iio_dev *private_data, s64 time);146148147149};148150149151int iio_alloc_pollfunc(struct iio_dev *indio_dev,150152 void (*immediate)(struct iio_dev *indio_dev),151151- void (*main)(struct iio_dev *private_data));153153+ void (*main)(struct iio_dev *private_data, s64 time));152154153155/*154156 * Two functions for common case where all that happens is a pollfunc···161163162164void iio_free_trigger(struct iio_trigger *trig);163165166166+167167+struct iio_simple_trigger {168168+ struct iio_trigger trig;169169+};164170#endif /* _IIO_TRIGGER_H_ */
+2-1
drivers/staging/iio/trigger/iio-trig-gpio.c
···42424343static irqreturn_t iio_gpio_trigger_poll(int irq, void *private)4444{4545- iio_trigger_poll(private);4545+ /* Timestamp not currently provided */4646+ iio_trigger_poll(private, 0);4647 return IRQ_HANDLED;4748}4849
···98989999static void iio_prtc_trigger_poll(void *private_data)100100{101101- iio_trigger_poll(private_data);101101+ /* Timestamp is not provided currently */102102+ iio_trigger_poll(private_data, 0);102103}103104104105static int iio_trig_periodic_rtc_probe(struct platform_device *dev)