On Sat, Apr 29, 2017 at 10:49 AM, Eva Rachel Retuya <eraretuya@xxxxxxxxx> wrote: > Previously, the only way to capture data is to read the exposed sysfs > files in_accel_[x/y/z]_raw and applying the scale from in_accel_scale. > Provide a way for continuous data capture that allows multiple data > channels to be read at once by setting up buffer support. > > Initialize scan_type fields that describe the buffer and make sure to > claim and release direct mode in read_raw. The latter is done to ensure > no raw reads are attempted when utilizing the buffer and vice versa. > > Lastly, add triggered buffer support that allows utilization of any > given trigger such as DATA_READY, hrtimer, etc. to initiate capturing of > data and placing said data in the buffer. The trigger handler performs > an all-axes read with timestamp. One nit below. FWIW: Reviewed-by: Andy Shevchenko <andy.shevchenko@xxxxxxxxx> > +static irqreturn_t adxl345_trigger_handler(int irq, void *p) > +{ > + struct iio_poll_func *pf = p; > + struct iio_dev *indio_dev = pf->indio_dev; > + struct adxl345_data *data = iio_priv(indio_dev); > + int ret; > + > + mutex_lock(&data->lock); > + /* Make sure data is ready when using external trigger */ > + if (!data->data_ready_trig_on) { > + ret = adxl345_data_ready(data); > + if (ret < 0) > + goto error; > + } > + > + ret = regmap_bulk_read(data->regmap, ADXL345_REG_DATAX0, data->buffer, > + sizeof(__le16) * 3); > + if (ret < 0) > + goto error; > + > + iio_push_to_buffers_with_timestamp(indio_dev, data->buffer, > + pf->timestamp); > +error: I would call it 'err_unlock_notify'. > + mutex_unlock(&data->lock); > + iio_trigger_notify_done(indio_dev->trig); > + > + return IRQ_HANDLED; > +} -- With Best Regards, Andy Shevchenko -- To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html