GitHub/moto-9609/android_kernel_motorola_exynos9610.git
7 years agoiio: trigger: close race condition in acquiring trigger reference
Alison Schofield [Sun, 22 Jan 2017 03:28:52 +0000 (19:28 -0800)]
iio: trigger: close race condition in acquiring trigger reference

In iio_trigger_write_current() we find the trigger we want while
holding mutex on the list of triggers, but we don't actually do a
get on it while holding mutex.  We wait until further validations
are completed and we're sure it's the one we want.  Race condition
is that it could be freed by the time we do the get.

Solution is to grab the trigger (iio_trigger_get) as soon as we
find it while holding mutex on the list of triggers.  If later
we decide it's not the right one, put it back. (iio_trigger_put).

Signed-off-by: Alison Schofield <amsfield22@gmail.com>
Suggested-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agoiio: imu: st_lsm6dsx: fix typo in gyro sensitivity definition
Lorenzo Bianconi [Tue, 17 Jan 2017 18:38:23 +0000 (19:38 +0100)]
iio: imu: st_lsm6dsx: fix typo in gyro sensitivity definition

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@st.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agostaging: iio: isl29028: add runtime power management support
Brian Masney [Tue, 17 Jan 2017 09:25:02 +0000 (04:25 -0500)]
staging: iio: isl29028: add runtime power management support

This patch adds runtime power management support to the isl29028 driver.
It defaults to powering off the device after two seconds of inactivity.

isl29028_chip_init_and_power_on() currently only zeros the CONFIGURE
register on the chip, which will cause the chip to turn off. This patch
also renames that function to isl29028_clear_configure_reg() since it is
now used in several places.

Signed-off-by: Brian Masney <masneyb@onstation.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agostaging: iio: isl29028: only set ALS scale when ALS/IR sensing is enabled
Brian Masney [Tue, 17 Jan 2017 09:25:01 +0000 (04:25 -0500)]
staging: iio: isl29028: only set ALS scale when ALS/IR sensing is enabled

isl29028_chip_init_and_power_on() calls isl29028_set_als_scale() and
this is not needed until the user actually needs to take a reading from
the ALS/IR sensor. This patch moves the isl29028_set_als_scale() call
from isl29028_chip_init_and_power_on() to isl29028_set_als_ir_mode().
This sets the stage for faster resume times from runtime power
management if the user is only querying the proximity sensor.

Signed-off-by: Brian Masney <masneyb@onstation.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agostaging: iio: isl29028: only set proximity sampling rate when proximity is enabled
Brian Masney [Tue, 17 Jan 2017 09:25:00 +0000 (04:25 -0500)]
staging: iio: isl29028: only set proximity sampling rate when proximity is enabled

isl29028_chip_init_and_power_on() calls isl29028_set_proxim_sampling()
and this is not needed until the user actually needs to take a proximity
reading. This patch moves the isl29028_set_proxim_sampling() call from
isl29028_chip_init_and_power_on() to isl29028_enable_proximity().
This sets the stage for faster resume times from the runtime power
management if the user is only querying the ALS/IR sensor.

Signed-off-by: Brian Masney <masneyb@onstation.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agostaging: iio: isl29028: remove enable flag from isl29028_enable_proximity()
Brian Masney [Tue, 17 Jan 2017 09:24:59 +0000 (04:24 -0500)]
staging: iio: isl29028: remove enable flag from isl29028_enable_proximity()

isl29028_enable_proximity() has a boolean argument named enable. This
function is only called once and the enable flag is set to true in that
call. This patch removes the enable parameter from that function.

Signed-off-by: Brian Masney <masneyb@onstation.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agostaging: iio: isl29028: remove unnecessary parenthesis
Brian Masney [Tue, 17 Jan 2017 09:24:58 +0000 (04:24 -0500)]
staging: iio: isl29028: remove unnecessary parenthesis

isl29028_write_raw() contains unnecessary parenthesis when checking to
see if the passed in lux scale is valid. This patch removes the
unnecessary parenthesis.

Signed-off-by: Brian Masney <masneyb@onstation.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agostaging: iio: isl29028: remove out of memory log message
Brian Masney [Tue, 17 Jan 2017 09:24:57 +0000 (04:24 -0500)]
staging: iio: isl29028: remove out of memory log message

If the call to devm_iio_device_alloc() fails, then isl29028_probe()
logs a message saying that memory cannot be allocated. The user's system
most likely has larger issues at this point. This patch removes that
error message since the error code is passed on and the message is not
necessary.

Signed-off-by: Brian Masney <masneyb@onstation.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agostaging: iio: isl29028: remove unnecessary error logging in isl29028_chip_init_and_po...
Brian Masney [Tue, 17 Jan 2017 09:24:56 +0000 (04:24 -0500)]
staging: iio: isl29028: remove unnecessary error logging in isl29028_chip_init_and_power_on()

If the call to isl29028_chip_init_and_power_on() in isl29028_probe()
fails, then isl29028_probe() will log an error message. All of the
error paths in that call path already have error logging in place. This
patch removes the unnecessary logging.

Signed-off-by: Brian Masney <masneyb@onstation.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agostaging: iio: isl29028: made error messages consistent
Brian Masney [Tue, 17 Jan 2017 09:24:55 +0000 (04:24 -0500)]
staging: iio: isl29028: made error messages consistent

The wording and style of the different error messages was not
consistent. This patch makes the wording and style consistent
throughout the driver.

Signed-off-by: Brian Masney <masneyb@onstation.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agostaging: iio: isl29028: move failure logging into isl29028_set_als_scale()
Brian Masney [Tue, 17 Jan 2017 09:24:54 +0000 (04:24 -0500)]
staging: iio: isl29028: move failure logging into isl29028_set_als_scale()

When isl29028_set_als_scale() fails, it was up to both callers to log
the failure message. This patch moves the logging into
isl29028_set_als_scale() to reduce the overall amount of code in the
driver.

Signed-off-by: Brian Masney <masneyb@onstation.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agostaging: iio: isl29028: move failure logging into isl29028_set_proxim_sampling()
Brian Masney [Tue, 17 Jan 2017 09:24:53 +0000 (04:24 -0500)]
staging: iio: isl29028: move failure logging into isl29028_set_proxim_sampling()

When isl29028_set_proxim_sampling() fails, it was up to both callers to
log the failure message. This patch moves the logging into
isl29028_set_proxim_sampling() to reduce the overall amount of code in
the driver.

Signed-off-by: Brian Masney <masneyb@onstation.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agostaging: iio: isl29028: remove unused define ISL29028_DEV_ATTR
Brian Masney [Tue, 17 Jan 2017 09:24:52 +0000 (04:24 -0500)]
staging: iio: isl29028: remove unused define ISL29028_DEV_ATTR

The #define ISL29028_DEV_ATTR was not used so this patch removes the
unnecessary code.

Signed-off-by: Brian Masney <masneyb@onstation.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agostaging: iio: isl29028: change newlines to improve readability
Brian Masney [Tue, 17 Jan 2017 09:24:51 +0000 (04:24 -0500)]
staging: iio: isl29028: change newlines to improve readability

Add and remove newlines to improve code readability in preparation for
moving the driver out of staging.

Signed-off-by: Brian Masney <masneyb@onstation.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agostaging: iio: isl29028: made alignment of variables in struct isl29028_chip consistent
Brian Masney [Tue, 17 Jan 2017 09:24:48 +0000 (04:24 -0500)]
staging: iio: isl29028: made alignment of variables in struct isl29028_chip consistent

The alignment of the variables in the struct isl29028_chip is not
consistent. This changes all of the variables to use consistent
alignment to improve the code readability.

Signed-off-by: Brian Masney <masneyb@onstation.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agostaging: iio: isl29028: combine isl29028_proxim_get() and isl29028_read_proxim()
Brian Masney [Tue, 17 Jan 2017 09:24:50 +0000 (04:24 -0500)]
staging: iio: isl29028: combine isl29028_proxim_get() and isl29028_read_proxim()

isl29028_proxim_get() checks to see if the promixity needs to be
enabled on the chip and then calls isl29028_read_proxim(). There
are no other callers of isl29028_read_proxim(). The naming between
these two functions can be confusing so this patch combines the
two to avoid the confusion.

Signed-off-by: Brian Masney <masneyb@onstation.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agostaging: iio: isl29028: fix alignment of function arguments
Brian Masney [Tue, 17 Jan 2017 09:24:49 +0000 (04:24 -0500)]
staging: iio: isl29028: fix alignment of function arguments

Two separate calls to regmap_update_bits() in isl29028_set_als_scale()
and isl29028_set_als_ir_mode() did not have their function arguments
on the next line aligned correctly to the open parenthesis. This patch
corrects the alignment.

Signed-off-by: Brian Masney <masneyb@onstation.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agoiio: adc: max1363: Export OF device ID table as module aliases
Javier Martinez Canillas [Mon, 16 Jan 2017 15:50:45 +0000 (12:50 -0300)]
iio: adc: max1363: Export OF device ID table as module aliases

The I2C core always reports a MODALIAS of the form i2c:<foo> even if the
device was registered via OF, this means that exporting the OF device ID
table device aliases in the module is not needed. But in order to change
how the core reports modaliases to user-space, it's better to export it.

Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agoiio: potentiometer: mcp4531: Export OF device ID table as module aliases
Javier Martinez Canillas [Mon, 16 Jan 2017 15:50:44 +0000 (12:50 -0300)]
iio: potentiometer: mcp4531: Export OF device ID table as module aliases

The I2C core always reports a MODALIAS of the form i2c:<foo> even if the
device was registered via OF, this means that exporting the OF device ID
table device aliases in the module is not needed. But in order to change
how the core reports modaliases to user-space, it's better to export it.

Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agoiio: light: opt3001: Export OF device ID table as module aliases
Javier Martinez Canillas [Mon, 16 Jan 2017 15:50:43 +0000 (12:50 -0300)]
iio: light: opt3001: Export OF device ID table as module aliases

The I2C core always reports a MODALIAS of the form i2c:<foo> even if the
device was registered via OF, this means that exporting the OF device ID
table device aliases in the module is not needed. But in order to change
how the core reports modaliases to user-space, it's better to export it.

Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agoiio: health: max30100: use msleep() for long uncritical delays
Nicholas Mc Guire [Mon, 16 Jan 2017 15:35:53 +0000 (16:35 +0100)]
iio: health: max30100: use msleep() for long uncritical delays

ulseep_range() uses hrtimers and provides no advantage over msleep()
for larger delays. Fix up the 35ms delays here to use msleep() and
reduce the load on the hrtimer subsystem.

Fixes: commit 4d33615df58b ("iio: light: add MAX30100 oximeter driver support")
Link: http://lkml.org/lkml/2017/1/11/377
Signed-off-by: Nicholas Mc Guire <hofrat@osadl.org>
Reviewed-by: Matt Ranostay <matt.ranostay@konsulko.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agoiio: adc: tlc4541: add support for TI tlc4541 adc
Phil Reid [Mon, 16 Jan 2017 08:38:24 +0000 (16:38 +0800)]
iio: adc: tlc4541: add support for TI tlc4541 adc

This adds TI's tlc4541 16-bit ADC driver. Which is a single channel
ADC. Supports raw and trigger buffer access.
Also supports the tlc3541 14-bit device, which has not been tested.
Implementation of the tlc3541 is fairly straight forward thou.

Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Phil Reid <preid@electromag.com.au>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agodt-bindings: iio: document MAX11100 ADC
Jacopo Mondi [Wed, 18 Jan 2017 16:30:53 +0000 (17:30 +0100)]
dt-bindings: iio: document MAX11100 ADC

Add device tree bindings documentation for Maxim MAX11100 single-channel
ADC

Signed-off-by: Jacopo Mondi <jacopo+renesas@jmondi.org>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Acked-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agoiio: adc: Add Maxim MAX11100 driver
Jacopo Mondi [Wed, 18 Jan 2017 16:30:52 +0000 (17:30 +0100)]
iio: adc: Add Maxim MAX11100 driver

Add iio driver for Maxim MAX11100 single-channel ADC.

Signed-off-by: Jacopo Mondi <jacopo+renesas@jmondi.org>
Tested-by: Marek Vasut <marek.vasut@gmail.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agoiio: bmi160: use variable names for sizeof() operator
Alison Schofield [Mon, 16 Jan 2017 05:01:10 +0000 (21:01 -0800)]
iio: bmi160: use variable names for sizeof() operator

Replace the types with the actual variable names when using the
sizeof() operator.  This is kernel preferred style as it's
more obvious that it is correct.

Signed-off-by: Alison Schofield <amsfield22@gmail.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agoiio: light: cm3605: mark PM functions as __maybe_unused
Arnd Bergmann [Fri, 20 Jan 2017 16:25:15 +0000 (17:25 +0100)]
iio: light: cm3605: mark PM functions as __maybe_unused

When CONFIG_PM_SLEEP is disabled, we get a harmless warning

drivers/iio/light/cm3605.c:292:12: error: 'cm3605_pm_resume' defined but not used [-Werror=unused-function]
drivers/iio/light/cm3605.c:281:12: error: 'cm3605_pm_suspend' defined but not used [-Werror=unused-function]

Marking the functions as possibly unused avoids the warning without
needing to add an #ifdef.

Fixes: 8afa505c1230 ("iio: light: add driver for Capella CM3605")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agoiio: pressure: ms5611: claim direct mode during oversampling changes
Alison Schofield [Fri, 20 Jan 2017 20:22:58 +0000 (12:22 -0800)]
iio: pressure: ms5611: claim direct mode during oversampling changes

Driver was checking for direct mode before changing oversampling
ratios, but was not locking it.  Use the claim/release helper
functions to guarantee the device stays in direct mode while the
oversampling ratios are being updated.  Continue to use the drivers
private state lock to protect against conflicting direct mode access
of the state data.

Signed-off-by: Alison Schofield <amsfield22@gmail.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agoiio: proximity: sx9500: claim direct mode during raw proximity reads
Alison Schofield [Fri, 20 Jan 2017 22:11:30 +0000 (14:11 -0800)]
iio: proximity: sx9500: claim direct mode during raw proximity reads

Driver was checking for direct mode but not locking it.  Use the
claim/release helper functions to guarantee the device stays in
direct mode during raw reads of proximity data.

Signed-off-by: Alison Schofield <amsfield22@gmail.com>
Reviewed-by: Vlad Dogaru <ddvlad@gmail.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agoiio: magnetometer: mag3110: claim direct mode during raw writes
Alison Schofield [Fri, 20 Jan 2017 20:39:32 +0000 (12:39 -0800)]
iio: magnetometer: mag3110: claim direct mode during raw writes

Driver was checking for direct mode but not locking it.  Use
claim/release helper functions to guarantee the device stays
in direct mode during raw writes.

Signed-off-by: Alison Schofield <amsfield22@gmail.com>
Acked-by: Peter Meerwald-Stadler <pmeerw@pmeerw.net>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agoiio: adc: ti-ads7950: Change regulator matching string to "vref"
David Lechner [Wed, 11 Jan 2017 17:52:51 +0000 (11:52 -0600)]
iio: adc: ti-ads7950: Change regulator matching string to "vref"

This changes the reference voltage regulator matching string from "refin"
to "vref". This is to be consistent with other A/DC chips that also use
"vref-supply" in their device tree bindings.

Signed-off-by: David Lechner <david@lechnology.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agoiio: adc: ti-ads7950: Drop "ti-" prefix from module name
David Lechner [Wed, 11 Jan 2017 17:52:50 +0000 (11:52 -0600)]
iio: adc: ti-ads7950: Drop "ti-" prefix from module name

This drops the "ti-" prefix from the module name. It makes the module name
consistent with other iio ti-ads* drivers and it makes the driver work
with device tree (the spi subsystem drops the "ti," prefix when matching
compatible strings from device tree).

Tested working on LEGO MINDSTORMS EV3 with the following device tree node:

adc@3 {
compatible = "ti,ads7957";
reg = <3>;
#io-channel-cells = <1>;
spi-max-frequency = <10000000>;
vref-supply = <&adc_ref>;
};

Signed-off-by: David Lechner <david@lechnology.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agoDT/bindings: Add bindings for TI ADS7950 A/DC chips
David Lechner [Wed, 11 Jan 2017 17:52:49 +0000 (11:52 -0600)]
DT/bindings: Add bindings for TI ADS7950 A/DC chips

This adds device tree bindings for the TI ADS7950 family of A/DC chips.

Signed-off-by: David Lechner <david@lechnology.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agoiio: magnetometer: ak8974: remove redundant zero timeout check
Colin Ian King [Wed, 11 Jan 2017 17:49:33 +0000 (17:49 +0000)]
iio: magnetometer: ak8974: remove redundant zero timeout check

At the end of the delay loop timeout will always be zero
and hence the check for !timeout will always be true. Remove
the redundant check and the redundant return 0 at the end of
the function.

Fixes CoverityScan CID#1357168 ("Logically dead code")

Signed-off-by: Colin Ian King <colin.king@canonical.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agoiio: Documentation: Add proximity unit
Enric Balletbo i Serra [Wed, 11 Jan 2017 15:51:38 +0000 (16:51 +0100)]
iio: Documentation: Add proximity unit

To follow iio guidelines Where possible we stick to the raw SI unit, so
specify meters for proximity.

Signed-off-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agoDocumentation: dt: iio: add st_lsm6dsx sensor device binding
Lorenzo Bianconi [Tue, 10 Jan 2017 21:55:19 +0000 (22:55 +0100)]
Documentation: dt: iio: add st_lsm6dsx sensor device binding

Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@st.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agoiio: imu: add support to lsm6dsx driver
Lorenzo Bianconi [Tue, 10 Jan 2017 21:55:18 +0000 (22:55 +0100)]
iio: imu: add support to lsm6dsx driver

Add support to STM LSM6DS3-LSM6DSM 6-axis (acc + gyro) Mems sensor

http://www.st.com/resource/en/datasheet/lsm6ds3.pdf
http://www.st.com/resource/en/datasheet/lsm6dsm.pdf

- continuous mode support
- i2c support
- spi support
- sw fifo mode support
- supported devices: lsm6ds3, lsm6dsm

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@st.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agoiio: inkern: pass through raw values if no scaling
Linus Walleij [Wed, 11 Jan 2017 10:48:39 +0000 (11:48 +0100)]
iio: inkern: pass through raw values if no scaling

When a consumer calls iio_read_channel_processed() the IIO core
tries to apply scaling to the value, but if the channel only
supports reading raw values, we should return that raw value
to the cosumer instead of an error.

This is what userspace is expected to do with sensors only
providing raw values so the kernel should do the same, so as to
avoid adding scaling boilerplate to drivers for hardware that
actually return processed values from raw reads.

A sensor not providing a scale, but providing a _raw attribute
could be valid if for example the scale is the default of 1,
but an offset needs to be applied to convert to the _processed
form.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agoiio:temperature: Add support for TI TMP007 sensor
Manivannan Sadhasivam [Mon, 9 Jan 2017 02:55:26 +0000 (08:25 +0530)]
iio:temperature: Add support for TI TMP007 sensor

This patch adds support for TI TMP007 - 16 bit IR thermopile sensor with integrated Math engine.
Sensor takes care of calculating the object temperature with the help of calibrated constants stored in non-volatile memory,
thereby reducing the calculation overhead.

Signed-off-by: Manivannan Sadhasivam <manivannanece23@gmail.com>
Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agoiio:adc:qcom-spmi-vadc: use div64_s64 instead of direct 64 bit division.
Jonathan Cameron [Sun, 8 Jan 2017 19:52:25 +0000 (19:52 +0000)]
iio:adc:qcom-spmi-vadc: use div64_s64 instead of direct 64 bit division.

Another one of these that we missed previously which prevents test builds
of this driver on 32 bit platforms as it gives an undefined __divdi3 warning.

Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agoiio:adc:qcom-spmi-vadc silence a long constant warning.
Jonathan Cameron [Fri, 30 Dec 2016 18:25:50 +0000 (18:25 +0000)]
iio:adc:qcom-spmi-vadc silence a long constant warning.

It is meant to be long and is only added to an s64.

Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Cc: Rama Krishna Phani A <rphani@codeaurora.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agoiio:adc:qcom-spmi-vadc : fix undefined __divdi3
Jonathan Cameron [Fri, 30 Dec 2016 18:25:49 +0000 (18:25 +0000)]
iio:adc:qcom-spmi-vadc : fix undefined __divdi3

A simple do_div call works here as all the signed 64 bit is
actually small and unsigned at this point, and the numerator is
u32.

Introduce a temporary u64 variable to avoid type comparison warnings
on some architectures.

Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Reported-by: kbuild test robot <fengguang.wu@intel.com>
Cc: Rama Krishna Phani A <rphani@codeaurora.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agoiio: adc: hx711: Add IIO driver for AVIA HX711
Andreas Klinger [Thu, 5 Jan 2017 17:51:57 +0000 (18:51 +0100)]
iio: adc: hx711: Add IIO driver for AVIA HX711

This is the IIO driver for AVIA HX711 ADC which is mostly used in weighting
cells.

The protocol is quite simple and using GPIOs:
One GPIO is used as clock (SCK) while another GPIO is read (DOUT)

The raw value read from the chip is delivered.
To get a weight one needs to subtract the zero offset and scale it.

Signed-off-by: Andreas Klinger <ak@it-klinger.de>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agoiio: adc: hx711: Add DT binding for avia,hx711
Andreas Klinger [Thu, 5 Jan 2017 17:51:36 +0000 (18:51 +0100)]
iio: adc: hx711: Add DT binding for avia,hx711

Add DT bindings for avia,hx711
Add vendor avia to vendor list

Signed-off-by: Andreas Klinger <ak@it-klinger.de>
Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agoiio: adc: axp288: Drop bogus AXP288_ADC_TS_PIN_CTRL register modifications
Hans de Goede [Wed, 14 Dec 2016 13:55:25 +0000 (14:55 +0100)]
iio: adc: axp288: Drop bogus AXP288_ADC_TS_PIN_CTRL register modifications

For some reason the axp288_adc driver was modifying the
AXP288_ADC_TS_PIN_CTRL register, changing bits 0-1 depending on
whether the GP_ADC channel or another channel was written.

These bits control when a bias current is send to the TS_PIN, the
GP_ADC has its own pin and a separate bit in another register to
control the bias current.

Not only does changing when to enable the TS_PIN bias current
(always or only when sampling) when reading the GP_ADC make no sense
at all, the code is modifying these bits is writing the entire register,
assuming that all the other bits have their default value.

So if the firmware has configured a different bias-current for either
pin, then that change gets clobbered by the write, likewise if the
firmware has set bit 2 to indicate that the battery has no thermal sensor,
this will get clobbered by the write.

This commit fixes all this, by simply removing all writes to the
AXP288_ADC_TS_PIN_CTRL register, they are not needed to read the
GP_ADC pin, and can actually be harmful.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Acked-by: Chen-Yu Tsai <wens@csie.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agostaging:iio:addac:adt7316 Fixes Alignment should match open parenthesis
Scott Matheina [Wed, 4 Jan 2017 01:50:24 +0000 (19:50 -0600)]
staging:iio:addac:adt7316 Fixes Alignment should match open parenthesis

Fixes style issue where Alignment doesn't match open parenthesis

Signed-off-by: Scott Matheina <scott@matheina.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agoiio: adc: imx25-gcq: Fix module autoload
Javier Martinez Canillas [Mon, 2 Jan 2017 12:45:45 +0000 (09:45 -0300)]
iio: adc: imx25-gcq: Fix module autoload

If the driver is built as a module, autoload won't work because the module
alias information is not filled. So user-space can't match the registered
device with the corresponding module.

Export the module alias information using the MODULE_DEVICE_TABLE() macro.

Before this patch:

$ modinfo drivers/iio/adc/fsl-imx25-gcq.ko | grep alias
$

After this patch:

$ modinfo drivers/iio/adc/fsl-imx25-gcq.ko | grep alias
alias:          of:N*T*Cfsl,imx25-gcqC*
alias:          of:N*T*Cfsl,imx25-gcq

Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agoiio:buffer.h - split into buffer.h and buffer_impl.h
Jonathan Cameron [Mon, 2 Jan 2017 19:28:34 +0000 (19:28 +0000)]
iio:buffer.h - split into buffer.h and buffer_impl.h

buffer.h supplies everything needed for devices using buffers.
buffer_impl.h supplies access to the internals as needed to write
a buffer implementation.

This was really motivated by the mess that turned up in the
kernel-doc documentation pulled in by the new sphinx docs.
It made it clear that our logical separations in headers were
generally terrible.  The buffer case was easy to sort out without
greatly effecting drivers so here it is.

Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Reviewed-by: Lars-Peter Clausen <lars@metafoo.de>
7 years agoiio:dummy: Stop enabling timestamp by default.
Jonathan Cameron [Mon, 2 Jan 2017 19:28:33 +0000 (19:28 +0000)]
iio:dummy: Stop enabling timestamp by default.

It's bad practice and only done in this fake driver + it breaks my
attempt to take struct buffer opaque. Not worth an access function
as it shouldn't be done anyway.

Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Reviewed-by: Lars-Peter Clausen <lars@metafoo.de>
7 years agoiio:buffer: Push implementation of iio_device_attach_buffer into .c file
Jonathan Cameron [Mon, 2 Jan 2017 19:28:32 +0000 (19:28 +0000)]
iio:buffer: Push implementation of iio_device_attach_buffer into .c file

This is a precursor to the splitting of buffer.h into parts relevant
to buffer implementation vs those for devices using buffers.
struct buffer is about to become opaque as far as the header is
concerned.

Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Reviewed-by: Lars-Peter Clausen <lars@metafoo.de>
7 years agoiio:buffer.h include pushdown into buffer implementations
Jonathan Cameron [Mon, 2 Jan 2017 19:28:31 +0000 (19:28 +0000)]
iio:buffer.h include pushdown into buffer implementations

These were only getting access to the internals of struct iio_dev via
the include of iio.h within buffer.h.  This should always have been
explicitly included by the buffer implementations themselves.

Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Reviewed-by: Lars-Peter Clausen <lars@metafoo.de>
7 years agoiio:kfifo_buf header include push down.
Jonathan Cameron [Mon, 2 Jan 2017 19:28:30 +0000 (19:28 +0000)]
iio:kfifo_buf header include push down.

As a precursor to splitting buffer.h, lets make sure all drivers
include the relevant headers rather than relying on picking them
up from kfifo_buf.h.

Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Reviewed-by: Lars-Peter Clausen <lars@metafoo.de>
7 years agoiio:buffer:iio_push_to_buffers_with_timestamp fix kernel-doc.
Jonathan Cameron [Mon, 2 Jan 2017 19:28:29 +0000 (19:28 +0000)]
iio:buffer:iio_push_to_buffers_with_timestamp fix kernel-doc.

Wrong start of kernel doc comment /* -> /**

Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Reviewed-by: Lars-Peter Clausen <lars@metafoo.de>
7 years agoiio:buffers: Push some docs down into the .c file.
Jonathan Cameron [Mon, 2 Jan 2017 19:28:28 +0000 (19:28 +0000)]
iio:buffers: Push some docs down into the .c file.

Ancient legacy of me doing it wrong which it is nice to clear
up whilst we are here.

Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Reviewed-by: Lars-Peter Clausen <lars@metafoo.de>
7 years agoiio:buffer: Stop exporting iio_scan_mask_query
Jonathan Cameron [Mon, 2 Jan 2017 19:28:27 +0000 (19:28 +0000)]
iio:buffer: Stop exporting iio_scan_mask_query

Nothing uses it outside of core code.

Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Reviewed-by: Lars-Peter Clausen <lars@metafoo.de>
7 years agoiio:buffer: Introduced a function to assign the buffer specific attrs.
Jonathan Cameron [Mon, 2 Jan 2017 19:28:26 +0000 (19:28 +0000)]
iio:buffer: Introduced a function to assign the buffer specific attrs.

This is a necessary step in taking the buffer implementation
opaque.

Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Reviewed-by: Lars-Peter Clausen <lars@metafoo.de>
7 years agoiio:buffer.h Reformat structure comments to be inline.
Jonathan Cameron [Mon, 2 Jan 2017 19:28:25 +0000 (19:28 +0000)]
iio:buffer.h Reformat structure comments to be inline.

This should make it easier to see how the structure is split into
public and private parts - reflected in the generated documentation.

Deliberately use /* instead of /** for the private elements to avoid
warnings when kernel-doc script runs.

Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Reviewed-by: Lars-Peter Clausen <lars@metafoo.de>
7 years agoiio:buffer: Stop exporting iio_update_demux
Jonathan Cameron [Mon, 2 Jan 2017 19:28:24 +0000 (19:28 +0000)]
iio:buffer: Stop exporting iio_update_demux

Nothing outside of indiustrialio-buffer.c should be using this.
Requires a large amount of juggling of functions to avoid a
forward definition.

Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Reviewed-by: Lars-Peter Clausen <lars@metafoo.de>
7 years agoiio: accel: st_accel: handle deprecated bindings
Linus Walleij [Thu, 5 Jan 2017 13:32:33 +0000 (14:32 +0100)]
iio: accel: st_accel: handle deprecated bindings

The earlier deployed LIS3LV02DL driver had already defined a few
DT bindings that need to be supported by the new more generic
driver and listed as compatible but deprecated bindings in the
documentation.

After this we can start to activate the new driver with the old
systems where applicable.

As part of this enablement: make us depend on the old drivers
not being in use so we don't get a kernel with two competing
drivers.

Cc: devicetree@vger.kernel.org
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agostaging: iio: ad7606: replace range/range_available with corresponding scale
Eva Rachel Retuya [Sat, 7 Jan 2017 11:10:23 +0000 (19:10 +0800)]
staging: iio: ad7606: replace range/range_available with corresponding scale

Eliminate the non-standard attributes in_voltage_range and
in_voltage_range_available. Implement in_voltage_scale_available in place
of these attributes and update the SCALE accordingly. The array
scale_avail is introduced to hold the available scale values.

Signed-off-by: Eva Rachel Retuya <eraretuya@gmail.com>
Acked-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agoiio:trigger: Fix coding style in iio-trig-bfin-timer.c by aligning parameters with...
rishabh hardas [Sat, 7 Jan 2017 10:51:36 +0000 (16:21 +0530)]
iio:trigger: Fix coding style in iio-trig-bfin-timer.c by aligning parameters with opening bracket.

Fixes a warning flagged by checkpatch.pl

Signed-off-by: rishabh hardas <rishabheudyptula@gmail.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agoiio: Add gravity sensor support
Song Hongyan [Thu, 5 Jan 2017 10:24:04 +0000 (18:24 +0800)]
iio: Add gravity sensor support

Gravity sensor is a soft sensor, which derives value from
standard accelerometer device by filtering out the acceleration
which is not caused by gravity.

Gravity sensor provides a three dimensional vector indicating
the direction and magnitude of gravity. Typically, this sensor
is used to determine the device's relative orientation in space.
The units and the coordinate system is the same as the one used by
the acceleration sensor.
When a device is at rest, the output of the gravity sensor should
be identical to that of the accelerometer.

More information can be found in:
http://www.usb.org/developers/hidpage/HUTRR59_-_Usages_for_Wearables.pdf

Gravity sensor and accelerometer have similar channels and
share channel usage ids. So the most of the code for accel_3d
can be reused.

Signed-off-by: Song Hongyan <hongyan.song@intel.com>
Acked-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agoiio: Add channel for Gravity
Song Hongyan [Thu, 5 Jan 2017 10:24:03 +0000 (18:24 +0800)]
iio: Add channel for Gravity

Add new channel types support for gravity sensor.

Gravity sensor provides an application-level or physical collection that
identifies a device that measures exclusively the force of Earth's
gravity along any number of axes.

More information can be found in:
http://www.usb.org/developers/hidpage/HUTRR59_-_Usages_for_Wearables.pdf

Signed-off-by: Song Hongyan <hongyan.song@intel.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agoiio: pulsedlight-lidar-lite-v2: add lidar-lite-v3 property
Matt Ranostay [Thu, 29 Dec 2016 05:13:06 +0000 (21:13 -0800)]
iio: pulsedlight-lidar-lite-v2: add lidar-lite-v3 property

Signed-off-by: Matt Ranostay <matt@ranostay.consulting>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agodevicetree: add Garmin vendor prefix
Matt Ranostay [Thu, 29 Dec 2016 05:13:05 +0000 (21:13 -0800)]
devicetree: add Garmin vendor prefix

Cc: Rob Herring <robh@kernel.org>
Signed-off-by: Matt Ranostay <matt@ranostay.consulting>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agoiio: Documentation: fix spelling mistake: "deactived" -> "deactivated"
Colin Ian King [Wed, 28 Dec 2016 17:40:23 +0000 (17:40 +0000)]
iio: Documentation: fix spelling mistake: "deactived" -> "deactivated"

trivial fix to spelling mistake in iio documentation

Signed-off-by: Colin Ian King <colin.king@canonical.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agostaging:iio:adt7316: Fix braces not present on all arms of if else statement
Scott Matheina [Sun, 25 Dec 2016 19:56:42 +0000 (13:56 -0600)]
staging:iio:adt7316: Fix braces not present on all arms of if else statement

Adds braces to second arm of if else statement.

Signed-off-by: Scott Matheina <scott@matheina.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agoiio: dummy: No semicolon at end of function definition
Peter Meerwald-Stadler [Tue, 20 Dec 2016 16:38:10 +0000 (17:38 +0100)]
iio: dummy: No semicolon at end of function definition

Signed-off-by: Peter Meerwald-Stadler <pmeerw@pmeerw.net>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agoiio: dac: ad5593r: Add ACPI support
Michael Hennerich [Mon, 19 Dec 2016 12:10:39 +0000 (13:10 +0100)]
iio: dac: ad5593r: Add ACPI support

This patch adds the ACPI/PNP ID. The AD5592/3 driver core is already
designed around the unified device property API.

Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agoiio: dac: ad5592r: Add ACPI support
Michael Hennerich [Mon, 19 Dec 2016 12:10:38 +0000 (13:10 +0100)]
iio: dac: ad5592r: Add ACPI support

This patch adds the ACPI/PNP ID. The AD5592/3 driver core is already
designed around the unified device property API.

Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agoiio: light: add driver for Capella CM3605
Linus Walleij [Sun, 18 Dec 2016 21:56:05 +0000 (22:56 +0100)]
iio: light: add driver for Capella CM3605

This adds a driver for the Capella Microsystems CM3605 Ambient
Light Sensor and proximity sensor. This is a pretty simple entirely
analog device that is interfaced with the target system using
the POUT (proximity out) and AOUT (ambient light out) signals.

The POUT signal is a simple high/low signal that indicates whether
an object is in proximity, most typically used to detect a face
in front of a mobile device. The signal requires that an infrared
LED is mounted next to the device, making IR light reflect off
the object in proximity and triggering the POUT signal. We grab
a GPIO pin to handle the POUT signal as an interrupt line and
register this as an event channel for the sensor.

Since the proximity sensor requires an IR LED, we add a LED trigger
named "cm3605" so that the infrared LED can just associate with
this trigger to be sure it is always on when the proximity sensor
needs it.

The AOUT is an analog voltage between 0 and 1550 mV that indicate
the LUX value in the ambient light: this is orthogonal to the
proximity sensor functionality. Since this analog voltage needs
to be converted into a digital value, the driver grabs an IIO
channel named "aout" associated with the device.

This patch created a combined ALS and proximity sensor driver.
The former supports raw reads of the LUX value and the latter
will generate proximity events.

To integrate this properly with Linux we also add a supply
regulator for the VDD pin (driving both functions) and add device
tree bindings to define the RSET resistor that in turn configures
the luminosity range of the ALS sensor.

Since the sensor needs to be on more or less constantly, we
restrict the power management to system suspend/resume: we
disable the IR LED and disable the regulator for VDD on suspend
and take them back up on resume.

Tests:
cd /sys/bus/iio/devices/iio:device1
cat in_illuminance_raw
304
(hold hand over sensor)
cat in_illuminance_raw
17
iio_event_monitor cm3605
Found IIO device with name cm3605 with device number 1
(hold hand over sensor)
Event: time: 2444842301447, type: proximity, channel: 0,
  evtype: thresh, direction: falling
(remove hand over sensor)
Event: time: 2445583440706, type: proximity, channel: 0,
  evtype: thresh, direction: rising

Cc: Capella Microsystems <capellamicro@gmail.com>
Cc: Kevin Tsai <ktsai@capellamicro.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agoiio: light: add DT bindings for Capella CM3605
Linus Walleij [Sun, 18 Dec 2016 21:55:55 +0000 (22:55 +0100)]
iio: light: add DT bindings for Capella CM3605

This adds device tree bindings for the Capella Microsystems CM3605
ambient light sensor and short range proximity sensor.

Cc: devicetree@vger.kernel.org
Cc: Capella Microsystems <capellamicro@gmail.com>
Cc: Kevin Tsai <ktsai@capellamicro.com>
Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agoiio: light: hid-sensor-als: Add duplicate IIO_LIGHT channel
Kweh, Hock Leong [Thu, 15 Dec 2016 21:48:21 +0000 (13:48 -0800)]
iio: light: hid-sensor-als: Add duplicate IIO_LIGHT channel

There is one light sensor type defined in the sensor hub specification,
which has one Illuminance field. It doesn't distinguish between ambient
light sensor or color sensor. Currently it is presented as IIO_INTENSITY
channel. There are some user spaces specifically looking for IIO_LIGHT
channel.
To satisfy such user spaces this change also add a duplicate IIO_LIGHT
channel. The units of measurement of Illuminance field is Lux, so it is
still compatible to IIO ABI.

Signed-off-by: Kweh, Hock Leong <hock.leong.kweh@intel.com>
Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agoiio: st_pressure: Export sampling frequency for lps25h and lps331ap
Marcin Niestroj [Mon, 12 Dec 2016 16:58:43 +0000 (17:58 +0100)]
iio: st_pressure: Export sampling frequency for lps25h and lps331ap

Both devices are using the same iio_chan_spec to define which settings
are exported with sysfs. Both are properly configured to set/get
sampling frequency for pressure and temperature. They also properly
export available sampling frequencies. The only missing thing is
sampling_frequency sysfs file, which allows to set/get this property
from userspace.

Add sampling frequency to iio channel info mask, so sampling_frequency
file is properly exported using sysfs.

Signed-off-by: Marcin Niestroj <m.niestroj@grinn-global.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agoiio: st_pressure: Fix data sign
Marcin Niestroj [Mon, 12 Dec 2016 16:58:42 +0000 (17:58 +0100)]
iio: st_pressure: Fix data sign

Datasheet of each device (lps331ap, lps25h, lps001wp, lps22hb) says that
the pressure and temperature data is a 2's complement.

I'm sending this the slow way, as negative pressures on these are pretty
unusual and the nature of the fixing of multiple device introduction patches
will make it hard to apply to older kernels - Jonathan.

Fixes: 217494e5b780 ("iio:pressure: Add STMicroelectronics pressures driver")
Fixes: 2f5effcbd097 ("iio: pressure-core: st: Expand and rename LPS331AP's channel descriptor")
Fixes: 7885a8ce6800 ("iio: pressure: st: Add support for new LPS001WP pressure sensor")
Fixes: e039e2f5b4da ("iio:st_pressure:initial lps22hb sensor support")
Signed-off-by: Marcin Niestroj <m.niestroj@grinn-global.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agoDocumentation: DT: Add bmi160 imu binding
Marcin Niestroj [Thu, 8 Dec 2016 14:22:56 +0000 (15:22 +0100)]
Documentation: DT: Add bmi160 imu binding

This adds documentation for Bosch BMI160 Inertial Measurement Unit
device-tree bindings.

Signed-off-by: Marcin Niestroj <m.niestroj@grinn-global.com>
Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agoiio: bmi160: Add of device table for spi
Marcin Niestroj [Thu, 8 Dec 2016 14:22:55 +0000 (15:22 +0100)]
iio: bmi160: Add of device table for spi

From now on we can add bmi160 device to device-tree by specifying
compatible string.

Signed-off-by: Marcin Niestroj <m.niestroj@grinn-global.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
7 years agoiio: bmi160: Add of device table for i2c
Marcin Niestroj [Thu, 8 Dec 2016 14:22:54 +0000 (15:22 +0100)]
iio: bmi160: Add of device table for i2c

From now on we can add bmi160 device to device-tree by specifying
compatible string.

Signed-off-by: Marcin Niestroj <m.niestroj@grinn-global.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
8 years agoStaging: iio: impedance-analyzer: ad5933: fix wrong comments
Nizam Haider [Wed, 7 Dec 2016 17:44:47 +0000 (23:14 +0530)]
Staging: iio: impedance-analyzer: ad5933: fix wrong comments

according to datasheet complete control register is of 2 bytes.
http://www.analog.com/media/en/technical-documentation/data-sheets/AD5933.pdf

Signed-off-by: Nizam Haider <nijam.h@hcl.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
8 years agoiio: adc: spmi-vadc: Changes to support different scaling
Rama Krishna Phani A [Fri, 9 Dec 2016 15:01:50 +0000 (20:31 +0530)]
iio: adc: spmi-vadc: Changes to support different scaling

Several ADC channels are supported in PMIC which can be used to
measure voltage, temperature, current etc. Different scaling can be
applied on the obtained voltage to report in physical units. Scaling
functionality can be different per channel. Add scaling support per
channel. Every channel present in adc has an unique conversion formula
for obtained voltage. Add support to report in Raw as well as in
processed format. Scaling is applied when processed read is requested
and is not applied when a Raw read is requested.

Signed-off-by: Rama Krishna Phani A <rphani@codeaurora.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
8 years agoiio: adc: spmi-vadc: Update function for generic voltage conversion
Rama Krishna Phani A [Fri, 9 Dec 2016 15:01:49 +0000 (20:31 +0530)]
iio: adc: spmi-vadc: Update function for generic voltage conversion

Several channels are supported in ADC of PMIC which can be used to
measure voltage, temperature, current etc., Hardware provides
readings for all channels in adc code. That adc code needs to be
converted to voltage. Logic for conversion of adc code to voltage
is common for all ADC channels(voltage, temperature, current
.,etc). Implement separate function for generic conversion logic.

Signed-off-by: Rama Krishna Phani A <rphani@codeaurora.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
8 years agostaging: iio: isl29028: made alignment of #defines consistent
Brian Masney [Sun, 4 Dec 2016 02:19:29 +0000 (21:19 -0500)]
staging: iio: isl29028: made alignment of #defines consistent

The alignment of the #defines at the top of the file is not consistent.
This changes all of the defines to use consistent alignment to improve
the code readability.

Signed-off-by: Brian Masney <masneyb@onstation.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
8 years agostaging: iio: isl29028: remove chip test and defaults from isl29028_chip_init()
Brian Masney [Sun, 4 Dec 2016 02:19:27 +0000 (21:19 -0500)]
staging: iio: isl29028: remove chip test and defaults from isl29028_chip_init()

isl29028_chip_init() contains the device driver defaults and
two I2C calls that detect the presence of the chip. This patch
moves these into isl29028_probe() so that this function can
be used by the power management runtinme in a followup patch. This
patch also renames isl29028_chip_init() to
isl29028_chip_init_and_power_on().

Signed-off-by: Brian Masney <masneyb@onstation.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
8 years agostaging: iio: isl29028: remove nested if statements
Brian Masney [Sun, 4 Dec 2016 02:19:25 +0000 (21:19 -0500)]
staging: iio: isl29028: remove nested if statements

There are two callers to the function isl29028_set_als_ir_mode() and
both instances use a nested if statement to only change the chip state
if it is not in the proper mode. This patch moves this check into the
isl29028_set_als_ir_mode() function to remove the nested if
statements.

Signed-off-by: Brian Masney <masneyb@onstation.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
8 years agostaging: iio: cdc: fix improper return value
Pan Bian [Sat, 3 Dec 2016 13:44:30 +0000 (21:44 +0800)]
staging: iio: cdc: fix improper return value

At the end of function ad7150_write_event_config(), directly returns 0.
As a result, the errors will be ignored by the callers. It may be better
to return variable "ret".

Signed-off-by: Pan Bian <bianpan2016@163.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
8 years agoiio: light: fix improper return value
Pan Bian [Sat, 3 Dec 2016 09:24:17 +0000 (17:24 +0800)]
iio: light: fix improper return value

In function cm3232_reg_init(), it returns 0 even if the last call to
i2c_smbus_write_byte_data() returns a negative value (indicates error).
As a result, the return value may be inconsistent with the execution
status, and the caller of cm3232_reg_init() will not be able to detect
the error. This patch fixes the bug.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=188641

Signed-off-by: Pan Bian <bianpan2016@163.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
8 years agostaging: iio: replace symbolic permission
Amit Kumar Kushwaha [Wed, 30 Nov 2016 15:24:10 +0000 (15:24 +0000)]
staging: iio: replace symbolic permission

This patch fixes the following checkpatch.pl warning in ad7150.c
WARNING: Symbolic permissions 'S_IRUGO | S_IWUSR' are not preferred
Occured during build.

Signed-off-by: Amit Kushwaha <kushwaha.a@samsung.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
8 years agoiio: accel: hid-sensor-accel-3d: Add timestamp
Srinivas Pandruvada [Mon, 28 Nov 2016 22:41:16 +0000 (14:41 -0800)]
iio: accel: hid-sensor-accel-3d: Add timestamp

Added timestamp channel. With this change, each sample has a timestamp.
This timestamp can be from the sensor hub when present or local kernel
timestamp. HID sensors can send timestamp with input data using usage id
HID_USAGE_SENSOR_TIME_TIMESTAMP. This timestamp value is converted to
nano seconds before pushing this sample to the iio core.

Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
8 years agoiio: adc: New driver for TI ADS7950 chips
David Lechner [Mon, 28 Nov 2016 16:58:15 +0000 (10:58 -0600)]
iio: adc: New driver for TI ADS7950 chips

This adds a new driver for the TI ADS7950 family of ADC chips. These
communicate using SPI and come in 8/10/12-bit and 4/8/12/16 channel
varieties.

Signed-off-by: David Lechner <david@lechnology.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
8 years agoIIO: Change msleep to usleep_range for small msecs
Aniroop Mathur [Sat, 26 Nov 2016 03:47:26 +0000 (09:17 +0530)]
IIO: Change msleep to usleep_range for small msecs

msleep(1~20) may not do what the caller intends, and will often sleep longer.
(~20 ms actual sleep for any value given in the 1~20ms range)
This is not the desired behaviour for many cases like device resume time,
device suspend time, device enable time, data reading time, etc.
Thus, change msleep to usleep_range for precise wakeups.

Signed-off-by: Aniroop Mathur <a.mathur@samsung.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
8 years agoiio: adis16203: Fix copyright year
Reto Schneider [Sun, 11 Oct 2015 23:44:51 +0000 (01:44 +0200)]
iio: adis16203: Fix copyright year

The copyright year can not be in the future.

Signed-off-by: Reto Schneider <code@reto-schneider.ch>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
8 years agoiio: adis1620x: Fix mixed up device descriptions
Reto Schneider [Sun, 20 Nov 2016 21:11:24 +0000 (22:11 +0100)]
iio: adis1620x: Fix mixed up device descriptions

The module descriptions for the ADIS 16201, 16203 and 16209 drivers do not
match the actual function of the devices. Update them accordingly to fix
this.

Signed-off-by: Reto Schneider <code@reto-schneider.ch>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
8 years agoiio: accel: mma8452: define unsigned return values where appropriate
Martin Kepplinger [Mon, 21 Nov 2016 19:53:54 +0000 (20:53 +0100)]
iio: accel: mma8452: define unsigned return values where appropriate

smatch warned:
sval_binop_signed: invalid divide LLONG_MIN/-1

and this fixes it. It's actually good to have, in order to avoid accidental
checking for negative return values here.

Signed-off-by: Martin Kepplinger <martink@posteo.de>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
8 years agoiio: humidity: Support acpi probe for hts211
Shrirang Bagul [Thu, 24 Nov 2016 09:07:54 +0000 (17:07 +0800)]
iio: humidity: Support acpi probe for hts211

Support driver probe by reading unique HID on systems based on ACPI instead
of DT compatible strings.

Signed-off-by: Shrirang Bagul <shrirang.bagul@canonical.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
8 years agoiio: st_pressure: Support i2c probe using acpi
Shrirang Bagul [Thu, 24 Nov 2016 05:33:45 +0000 (13:33 +0800)]
iio: st_pressure: Support i2c probe using acpi

Compatible strings are not available on ACPI based systems. This patch adds
support to use DSDT information read from platform BIOS instead for probing
st pressure sensors.

Signed-off-by: Shrirang Bagul <shrirang.bagul@canonical.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
8 years agoiio: st_accel: Support sensor i2c probe using acpi
Shrirang Bagul [Thu, 24 Nov 2016 05:33:44 +0000 (13:33 +0800)]
iio: st_accel: Support sensor i2c probe using acpi

Add support to probe st_accel sensors on i2c bus using ACPI. Compatible
strings are not avaialable on ACPI based systems.

Signed-off-by: Shrirang Bagul <shrirang.bagul@canonical.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
8 years agoiio: st_sensors: match sensors using ACPI handle
Shrirang Bagul [Thu, 24 Nov 2016 05:33:43 +0000 (13:33 +0800)]
iio: st_sensors: match sensors using ACPI handle

Add support to match st sensors using information passed from ACPI DST
tables.

Signed-off-by: Shrirang Bagul <shrirang.bagul@canonical.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
8 years agostaging: unisys: visorbus: Remove two passthrough postcode macros
Bryan Thompson [Thu, 1 Dec 2016 06:31:14 +0000 (01:31 -0500)]
staging: unisys: visorbus: Remove two passthrough postcode macros

Remove two passthrough macros that are only called from a single
location and make the resultant vmcall directly.

Signed-off-by: Bryan Thompson <bryan.thompson@unisys.com>
Signed-off-by: David Kershner <david.kershner@unisys.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
8 years agostaging: unisys: visorbus: Remove POSTCODE_SEVERITY levels
Bryan Thompson [Thu, 1 Dec 2016 06:31:13 +0000 (01:31 -0500)]
staging: unisys: visorbus: Remove POSTCODE_SEVERITY levels

Use the already defined DIAG_SEVERITY values directly instead of special
postcode macro names.

Signed-off-by: Bryan Thompson <bryan.thompson@unisys.com>
Signed-off-by: David Kershner <david.kershner@unisys.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
8 years agostaging: unisys: visorbus: Fix spelling error (FAIULRE to FAILURE)
Bryan Thompson [Thu, 1 Dec 2016 06:31:12 +0000 (01:31 -0500)]
staging: unisys: visorbus: Fix spelling error (FAIULRE to FAILURE)

There were two instances of FAILURE being misspelled in the s-Par
firmware postcode event enum that are fixed.

Signed-off-by: Bryan Thompson <bryan.thompson@unisys.com>
Signed-off-by: David Kershner <david.kershner@unisys.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
8 years agostaging: unisys: visorbus: Remove unused values from guestlinuxdebug
Bryan Thompson [Thu, 1 Dec 2016 06:31:11 +0000 (01:31 -0500)]
staging: unisys: visorbus: Remove unused values from guestlinuxdebug

Remove guestlinuxdebug enum values that are no longer being used and
renumber remaining values accordingly.

Signed-off-by: Bryan Thompson <bryan.thompson@unisys.com>
Signed-off-by: David Kershner <david.kershner@unisys.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>