lidar_i2c_xfer() function was never a non-positive value on error,
and this correct that with a -EIO return code.
Fixes: 366e65633c ("iio: proximity: lidar: optimize i2c transactions")
Signed-off-by: Matt Ranostay <mranostay@gmail.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
The big one here is the configfs support which has been a long time in the
works but should allow for cleaner ways to do instantiation of those elements
of IIO that aren't directly connected to specific hardware. Lots of cool new
stuff we can use this for in the works!
New core stuff (basically all configfs support related)
* Configfs support
- Core support (was waiting for a configfs patch that went in around 4.4rc2)
- A little fixlet to add a configfs.h to contain a reference to the
configfs_subsystem structure.
* Some infrastructure to simplify handling of software based triggers
(i.e. ones with no actual hardware associated with them)
* A high resolution timer based trigger. This has been around for years
but until the configfs support was ready we didn't have a sensible way
of instantiating instances of it (the method used for the sysfs_trigger
has never been really satisfactory)
New Device Support
* AMS iAQ Volatile Organic Compounds sensor support.
* Freescale imx7d ADC driver
* Maxim MAX30100 oximeter driver (note that for these devices most of the
smart stuff will be in userspace - effectively they are just light sensors
with some interesting led synchronization as far as the kernel is concerned).
* Microchip mcp3421 support added to the mcp3422 driver.
* TI adc124s021 support added to the adc128s052 driver.
* TI ina219, inda226 power monitors. Note that there is an existing hwmon driver
for these parts, the usecase is somewhat different so it is unclear at this
point if the hwmon driver will eventually be replaced by a bridge from
this driver. In the meantime the Kconfig dependencies should prevent both
from being built.
New driver functionality
* us8152d power management support.
Cleanups, fixups
* Use list_for_each_entry_safe instead of list_for_each_safe with the entry
bit coded longhand.
* Select IRQ_WORK for IIO_DUMMY_EVGEN. This is a fix that somehow got lost
when the driver was moved so lets do it again.
* st-accel - drop an unused define.
* vz89x, lidar - optimize i2c transactions by using a single i2c tranfers
instead of multiple calls where supported (fall back to smbus calls as
before if not).
* Use dev_get_platdata() in staging drivers: tsl2x7x, adcs and frequency
drivers instead of direct access to the structure element.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
iQIcBAABCAAGBQJWbX6IAAoJEFSFNJnE9BaI6E4QAIvGXHn4ew8ZH+IF3UP+n47C
WWtgeh7dEvhqpmXN3eWVo9bxA1JdwbE4/purWttszoJjzqowT0qAt6PuIUME+Md4
3jOQ41Sc99YjttIwkLpWTqq3H5c3Tn3q9guZ3Imiz9rmpgHRePQ8aatMGUpOp53m
AEY5JQHqCoWHLMEbEy/5w8RJdNf3cy3Re4kjtwrtp7CMynC4ob7dKE7kcZRvywEw
6m4hVOQusLvygg1j235czwBDnf79qYOo96z93Pk/auQlqKX3ce/7yQW3GXvWl97a
8FOmse3FNzX3jwWHELOdAZWIQSLBSqP9N4716qa4orVSihzqAZQ5CSEBPB0r2LS2
cgK4BL6+xjDkwXn9ui4FiyLdUeUjz/zRhvwFZdjwP63hGf5n9ggZO3RuVslc6/8z
DOHY5mLdg8CFlMlZUCnCc+1BjU8lgf90+a46Vx4ACJJiqIJrvNRxRKGQZyY/C9sO
O8h0Ep5mWovcK1+SWdQSsfxdcWcdb0nJFG/VQeJVxMeJR+5mD5lCYmIj5xFkOxJU
WP9xm+7rsCqSPW+vp8hlY3EWunIQB4gWROvLzWCTS2bKW7B12t1UapLZBrI1f6vK
JuqHrjKkK7RBRAEldKz6cWCToEaHE+I/k+uIRhlp0of2IPEvGpnm3NoPN1XH3RID
9boPy/eHuShq8EVg0WUt
=54PR
-----END PGP SIGNATURE-----
Merge tag 'iio-for-4.5b' of git://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio into staging-next
Jonathan writes:
Second set of IIO new drivers, functionality and cleanups for the 4.5 cycle.
The big one here is the configfs support which has been a long time in the
works but should allow for cleaner ways to do instantiation of those elements
of IIO that aren't directly connected to specific hardware. Lots of cool new
stuff we can use this for in the works!
New core stuff (basically all configfs support related)
* Configfs support
- Core support (was waiting for a configfs patch that went in around 4.4rc2)
- A little fixlet to add a configfs.h to contain a reference to the
configfs_subsystem structure.
* Some infrastructure to simplify handling of software based triggers
(i.e. ones with no actual hardware associated with them)
* A high resolution timer based trigger. This has been around for years
but until the configfs support was ready we didn't have a sensible way
of instantiating instances of it (the method used for the sysfs_trigger
has never been really satisfactory)
New Device Support
* AMS iAQ Volatile Organic Compounds sensor support.
* Freescale imx7d ADC driver
* Maxim MAX30100 oximeter driver (note that for these devices most of the
smart stuff will be in userspace - effectively they are just light sensors
with some interesting led synchronization as far as the kernel is concerned).
* Microchip mcp3421 support added to the mcp3422 driver.
* TI adc124s021 support added to the adc128s052 driver.
* TI ina219, inda226 power monitors. Note that there is an existing hwmon driver
for these parts, the usecase is somewhat different so it is unclear at this
point if the hwmon driver will eventually be replaced by a bridge from
this driver. In the meantime the Kconfig dependencies should prevent both
from being built.
New driver functionality
* us8152d power management support.
Cleanups, fixups
* Use list_for_each_entry_safe instead of list_for_each_safe with the entry
bit coded longhand.
* Select IRQ_WORK for IIO_DUMMY_EVGEN. This is a fix that somehow got lost
when the driver was moved so lets do it again.
* st-accel - drop an unused define.
* vz89x, lidar - optimize i2c transactions by using a single i2c tranfers
instead of multiple calls where supported (fall back to smbus calls as
before if not).
* Use dev_get_platdata() in staging drivers: tsl2x7x, adcs and frequency
drivers instead of direct access to the structure element.
Optimize device tranactions using i2c transfers versus multiple
possibly racey i2c_smbus_* function calls, and only one transaction
for distance measurement. Falls back to smbus method if i2c
functionality isn't available.
Signed-off-by: Matt Ranostay <mranostay@gmail.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Add runtime PM support for the lidar-lite module to enable low power
mode when last device requested reading is over a second.
Signed-off-by: Matt Ranostay <mranostay@gmail.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Returning zero from the measurment function has the side effect of
corrupting the triggered buffer readings, better to use -EINVAL than
a zero measurement reading.
The INVALID status happens even it isn't out of range
sometimes roughly once every second or two. This can be from an
invalid second signal return path. Hence there are spurious zero
readings from the triggered buffer, and warning messages in the kernel
log.
Signed-off-by: Matt Ranostay <mranostay@gmail.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
The device tree compatible strings weren't properly
registered for the pulsedlight-lidar-lite-v2 driver.
Signed-off-by: Matt Ranostay <mranostay@gmail.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Add support for the PulsedLight LIDAR rangefinder sensor which allows
high speed (over 300Hz) distance measurements using Barker Coding within
40 meter range.
Support only tested on the "blue label" rev 2, but may work using low
sample frequencies on the original version.
Signed-off-by: Matt Ranostay <mranostay@gmail.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>