mirror of
https://git.proxmox.com/git/mirror_ubuntu-kernels.git
synced 2025-11-11 06:40:22 +00:00
The LIS3LV02 has a special bit that need to be set to get the
read values left aligned. Before this patch we get gibberish
like this:
iio_generic_buffer -a -c10 -n lis3lv02dl_accel
(...)
0.000000 -0.010042 -0.642688 19155832931907
0.000000 -0.010042 -0.642688 19155858751073
Which is because we read a raw value for 1g as 64 which is
the nominal 1024 for 1g shifted 4 bits to the left by being
right-aligned rather than left aligned.
Since all other sensors are left aligned, add some code to
set the special DAS (data alignment setting) bit to 1 so that
the right value is now read like this:
iio_generic_buffer -a -c10 -n lis3lv02dl_accel
(...)
0.000000 -0.147095 -10.120135 24761614364956
-0.029419 -0.176514 -10.120135 24761631624540
The scaling was weird as well: we have a gain of 1000 for 1g
and 3000 for 6g. I don't even remember how I came up with the
old values but they are wrong.
Fixes:
|
||
|---|---|---|
| .. | ||
| accel | ||
| adc | ||
| common | ||
| dac | ||
| frequency | ||
| gyro | ||
| imu | ||
| magnetometer | ||
| buffer-dma.h | ||
| buffer-dmaengine.h | ||
| buffer.h | ||
| configfs.h | ||
| consumer.h | ||
| driver.h | ||
| events.h | ||
| iio.h | ||
| kfifo_buf.h | ||
| machine.h | ||
| sw_device.h | ||
| sw_trigger.h | ||
| sysfs.h | ||
| trigger_consumer.h | ||
| trigger.h | ||
| triggered_buffer.h | ||
| triggered_event.h | ||
| types.h | ||