Messages in this thread | | | From | "Tirdea, Irina" <> | Subject | RE: [PATCH 4/6] iio: accel: bmg160: optimize transfers in trigger handler | Date | Mon, 28 Mar 2016 16:05:19 +0000 |
| |
> -----Original Message----- > From: Peter Meerwald-Stadler [mailto:pmeerw@pmeerw.net] > Sent: 28 March, 2016 13:09 > To: Jonathan Cameron > Cc: Tirdea, Irina; linux-iio@vger.kernel.org; linux-kernel@vger.kernel.org; Hartmut Knaack; Lars-Peter Clausen; Purdila, Octavian; > Markus Pargmann; Pandruvada, Srinivas > Subject: Re: [PATCH 4/6] iio: accel: bmg160: optimize transfers in trigger handler > >
Thanks for the review, Peter!
> > > Some i2c busses (e.g.: Synopsys DesignWare I2C adapter) need to > > > enable/disable the bus at each i2c transfer and must wait for > > > the enable/disable to happen before sending the data. > > > > > > When reading data in the trigger handler, the bmc150 accel driver does > > should refer to bmg160 > > > > one bus transfer for each axis. This has an impact on the frequency > > > of the accelerometer at high sample rates due to additional delays > > > introduced by the bus at each transfer. > > > > > > Reading all axis values in one bus transfer reduces the delays > > > introduced by the bus. > > > > > > Signed-off-by: Irina Tirdea <irina.tirdea@intel.com> > > I forgot to highlight on the earlier driver that there is also 'technically' > > a bit of an ABI change here because we are now exporting as LE rather than CPU > > order. However, I 'hope' anyone actually accessing the buffered data is either > > doing it through a nice library or hasn't hacked the endian unwinding out of > > the generic_buffer example! > > the patch takes away the possibility to do buffered reads on individual > channels (not sure if this is useful per se)
We can still read individual channels, but the demux is now handled by the iio core (through available_scan_masks, added in the previous patch).
As Jonathan mentioned in a previous patch, this will impact performance for reading only a subset of the available channels (since we will read all 3 axes regardless of how many axes the user actually requested and will receive). > > this optimizes for the common case, ok; > > wondering if adding > .endianness = IIO_LE > is actually an unrelated fix >
Thanks for catching this! I already covered this point in the reply to Jonathan.
Thanks, Irina
| |