Commit Graph

202 Commits

Author SHA1 Message Date
Philipp Zabel a1b509dfc1 iio: dac: stm32-dac-core: explicitly request exclusive reset control
Commit a53e35db70 ("reset: Ensure drivers are explicit when requesting
reset lines") started to transition the reset control request API calls
to explicitly state whether the driver needs exclusive or shared reset
control behavior. Convert all drivers requesting exclusive resets to the
explicit API call so the temporary transition helpers can be removed.

No functional changes.

Cc: Jonathan Cameron <jic23@kernel.org>
Cc: Hartmut Knaack <knaack.h@gmx.de>
Cc: Lars-Peter Clausen <lars@metafoo.de>
Cc: Peter Meerwald-Stadler <pmeerw@pmeerw.net>
Cc: Maxime Coquelin <mcoquelin.stm32@gmail.com>
Cc: Alexandre Torgue <alexandre.torgue@st.com>
Cc: linux-iio@vger.kernel.org
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
2017-08-20 15:41:18 +01:00
Fabrice Gasnier 9d9ebe64dc iio: dac: stm32: add support for stm32f4
This adds support for STM32F4 Digital-To-Analog converter.
Add compatible configuration data to handle hfsel (not present
in stm32f4).

Signed-off-by: Fabrice Gasnier <fabrice.gasnier@st.com>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
2017-07-15 12:26:26 +01:00
Fabrice Gasnier 0c1a1b6cba iio: dac: stm32: fix error message
Fix error message, there's no 'st,dac-channel' property, but 'reg'
(see https://lkml.org/lkml/2017/4/3/567).

Signed-off-by: Fabrice Gasnier <fabrice.gasnier@st.com>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
2017-07-15 12:26:23 +01:00
Greg Kroah-Hartman ca9280d1f8 First set of new device support, features and cleanups for IIO in the 4.13 cycle
Two entirely new drivers in here plus the usual range of cleanups and features.
 
 New device support
 * ad5064
   - add ltc2631, ltc2633 and ltc2635 support.
 * bma180
   - trivial support for bma250e (new id)
 * hid-sensor-rotation
   - add relative orientation and geometric orientation support.
 * isl29028
   - add isl29030 support (its effectively the same part from a driver point of
   view)
 * maxim_thermocouple
   - add max31856 id.
 * meson-saradc
   - add meson8b SoC adc support.
 * ti-adc084s021
   - new driver and bindings.
 * ti-adc108s102
   - new driver and bindings.
 
 Staging graduations
 * isl29028
 
 Features
 * bma180
   - ACPI enumeration for BMA250E which is used in various x86 tablets.
 * hi8453
   - add raw access rather than only events.
 * hid-sensor-hub
   - Implement batch mode in which we can set a threshold on the amount of time
   between data coming from the fifos.  This is the first device to do this
   rather than use a watershed on the number of samples.
 * hts221
   - power management support
 * lsm6dsx
   - add system power management support.
 * rpr0521
   - sampling frequency read / write
 * stm32-trigger
   - add support for TRG02 triggers.
 * tsl2583
   - runtime power management support.
 
 Cleanups
 * core
   - inkern: fix a double unlock in iio_read_available_channel_raw when raw
   value doesn't appear to be raw (error path).
   - fixup accidental sizeof pointer in iio_device_add_mask_type.
 * docs
   - fix an accidental duplicated line in sysfs-bus-iio-meas-spec.
 * tools
   - use local include/uapi headers to ensure always up to date.
   - increase length of allowed trigger names.
 * ad9834
   - symbolic to octal permissions.
 * ade7753
   - symbolic to octal permissions.
   - fix indentation
 * ade7754
   - symbolic to octal permissions.
 * ade7758
   - symbolic to octal permissions.
 - ade7854
   - symbolic to octal permissions.
 * as3935
   - move out of storm check to given consistent results for raw and processed
   values.
 * bmp280
   - fix bme280 naming in Kconfig help.
 * hi8435
   - avoid garbage on event after enable.
   - add missing in_voltage_sensing_mode_available to list possible enum options.
   - handle the reset gpio with the obvious polarity rather than relying on
   DT to provide it correctly.
 * hid-sensors
   - fix a wrong error path scrubbing of return values.
 * hid-sensors-accel
   - drop static on a local variable
 * hid-sensors-rotation
   - Add missing scale and offset property parsing support.
 * ina2xx
   - Fix a bad use of GENMASK and some typos and whitespace issues.
 * isl29018
   - only declare the ACPI table when ACPI is enabled.
 * isl29028
   - fix proximity sleep times.
 * lsm6dsx
   - replace ifdef CONFIG_PM with __maybe_unused to avoid the complexity of
   dealing with the various PM config variables.
 * meson-saradc
   - mark meson_sar_adc_data static and const.
 * rcar-gyroadc
   - derive the interface clock speed from the fck clock on the basis they are
   the same actual clock.
   - drop the now unused if clock from the bindings.
 * rpr0521
   - disable sensor when marked as such rather than always enabling it.
   - poweroff if probe fails and we can talk to device.
   - make sure device powered off when it doesn't need to be on.
   - use sizeof rather than hardcoded size on value read.
   - whitespace fixup.
   - reorder channel numbers ready for buffered support which didn't quite
   make this pull request.
 * st-accel
   - fix platform data initialization to allow remove and reprobe.
 * st-pressure
   - fix platform data initialization to allow remove and reprobe.
 * tsl2x7x
   - S_IRUGO, S_IWUSR to octal values
   - rename driver for consistency with more recent drivers
   - drop FSF mailing address
   - replace DEVICE_ATTR macros with the shorter DEVICE_ATTR_RW form and
   relevant function renames.
 * zpa2326
   - report an error for consistency with other error paths.
 -----BEGIN PGP SIGNATURE-----
 
 iQJFBAABCAAvFiEEbilms4eEBlKRJoGxVIU0mcT0FogFAlkjSHkRHGppYzIzQGtl
 cm5lbC5vcmcACgkQVIU0mcT0FojDqQ//TVibBBZ0GgA+MwjIMDCpYL6CW4l+Et5v
 bD1EThc+qf3jv9kWbBz6WgySj9koZeF/hc0GN7x8XF57TeF/8sXhtbZKQ0za0Ouf
 uKAfYNi7jtdA4UEFawYrFUGIZtgQlbll/DKj7x2yDZtwIge9QF61fzPehGpq0u3b
 IiNlNFQSTKXOHi5tobMXXdBFL90m6kqDZM5ZwAWtQoSu1xQTjCsxu/LMJAJ3H7rU
 KEptEhc80kAvGqflOvw/HMaU7O7SXAhW3sQnXM2ksnDScGZ+zNzLcoca1YfM73rv
 x3vM/XL93A6CcRQkzFUC5vbtVVl00BMI7G3PQTGDOWWPgUPksLVIzfJR9GOqNmIJ
 W3HVwQbDZPvAbubvFHlUBa9ys4cbcmwU9214S57DvzVEt+cvpdujjIZ2Ulw3sVqN
 3xB1P9kNlcYvmBBu6LbP5GTDEu+VEETTjwj3osyimi56Zt44pJhoT68D46SD34Zw
 i3LCMFbbdJzEK4UWsvoBKFsTPipXgOntYDXaMZbULjtmJ6PEw0feubQIpMwtF5iw
 4fGk/1Q6l//rItJlXZE9PPiEBbXZ856lk/KQn+9vRABCrFni+7HWf6aDvkjf14o0
 8W+P/kAcXOPrToN2+NnAbIh7c9PLYmFWJa7DvDnQ5Guy0GStlxG18QEMNAhf39/0
 j/xopB1g8MI=
 =XLVY
 -----END PGP SIGNATURE-----

Merge tag 'iio-for-4.13a' of git://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio into staging-next

Jonathan writes:

First set of new device support, features and cleanups for IIO in the 4.13 cycle

Two entirely new drivers in here plus the usual range of cleanups and features.

New device support
* ad5064
  - add ltc2631, ltc2633 and ltc2635 support.
* bma180
  - trivial support for bma250e (new id)
* hid-sensor-rotation
  - add relative orientation and geometric orientation support.
* isl29028
  - add isl29030 support (its effectively the same part from a driver point of
  view)
* maxim_thermocouple
  - add max31856 id.
* meson-saradc
  - add meson8b SoC adc support.
* ti-adc084s021
  - new driver and bindings.
* ti-adc108s102
  - new driver and bindings.

Staging graduations
* isl29028

Features
* bma180
  - ACPI enumeration for BMA250E which is used in various x86 tablets.
* hi8453
  - add raw access rather than only events.
* hid-sensor-hub
  - Implement batch mode in which we can set a threshold on the amount of time
  between data coming from the fifos.  This is the first device to do this
  rather than use a watershed on the number of samples.
* hts221
  - power management support
* lsm6dsx
  - add system power management support.
* rpr0521
  - sampling frequency read / write
* stm32-trigger
  - add support for TRG02 triggers.
* tsl2583
  - runtime power management support.

Cleanups
* core
  - inkern: fix a double unlock in iio_read_available_channel_raw when raw
  value doesn't appear to be raw (error path).
  - fixup accidental sizeof pointer in iio_device_add_mask_type.
* docs
  - fix an accidental duplicated line in sysfs-bus-iio-meas-spec.
* tools
  - use local include/uapi headers to ensure always up to date.
  - increase length of allowed trigger names.
* ad9834
  - symbolic to octal permissions.
* ade7753
  - symbolic to octal permissions.
  - fix indentation
* ade7754
  - symbolic to octal permissions.
* ade7758
  - symbolic to octal permissions.
- ade7854
  - symbolic to octal permissions.
* as3935
  - move out of storm check to given consistent results for raw and processed
  values.
* bmp280
  - fix bme280 naming in Kconfig help.
* hi8435
  - avoid garbage on event after enable.
  - add missing in_voltage_sensing_mode_available to list possible enum options.
  - handle the reset gpio with the obvious polarity rather than relying on
  DT to provide it correctly.
* hid-sensors
  - fix a wrong error path scrubbing of return values.
* hid-sensors-accel
  - drop static on a local variable
* hid-sensors-rotation
  - Add missing scale and offset property parsing support.
* ina2xx
  - Fix a bad use of GENMASK and some typos and whitespace issues.
* isl29018
  - only declare the ACPI table when ACPI is enabled.
* isl29028
  - fix proximity sleep times.
* lsm6dsx
  - replace ifdef CONFIG_PM with __maybe_unused to avoid the complexity of
  dealing with the various PM config variables.
* meson-saradc
  - mark meson_sar_adc_data static and const.
* rcar-gyroadc
  - derive the interface clock speed from the fck clock on the basis they are
  the same actual clock.
  - drop the now unused if clock from the bindings.
* rpr0521
  - disable sensor when marked as such rather than always enabling it.
  - poweroff if probe fails and we can talk to device.
  - make sure device powered off when it doesn't need to be on.
  - use sizeof rather than hardcoded size on value read.
  - whitespace fixup.
  - reorder channel numbers ready for buffered support which didn't quite
  make this pull request.
* st-accel
  - fix platform data initialization to allow remove and reprobe.
* st-pressure
  - fix platform data initialization to allow remove and reprobe.
* tsl2x7x
  - S_IRUGO, S_IWUSR to octal values
  - rename driver for consistency with more recent drivers
  - drop FSF mailing address
  - replace DEVICE_ATTR macros with the shorter DEVICE_ATTR_RW form and
  relevant function renames.
* zpa2326
  - report an error for consistency with other error paths.
2017-05-29 15:53:42 +02:00
Mike Looijmans b2d2d2bfca iio:ad5064: Add support for ltc2633 and similar devices
The Linear Technology LTC2631, LTC2633 and LTC2635 are very similar
to the AD5064 device, in particular the LTC2627.

This patch adds support for those devices. Only the LTC2633 has been
tested, which is the 2-channel variant. The LTC2631 is the 1-channel,
and the LTC2635 the 4-channel version. The actual DAC resolution depends
on the exact chip type and can be 12, 10 or 8 bits, using the upper bits
so this has no effect on the register map. The internal reference is set
to 2.5V on "L" versions, and it's 4.096V for "H" versions.

Datasheets:
    LTC2631: http://www.linear.com/docs/26553
    LTC2633: http://www.linear.com/docs/39529
    LTC2635: http://www.linear.com/docs/28754

Signed-off-by: Mike Looijmans <mike.looijmans@topic.nl>
Reviewed-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
2017-05-14 16:16:57 +01:00
Linus Torvalds 291b38a756 Annotation of module parameters that specify device settings
-----BEGIN PGP SIGNATURE-----
 
 iQIVAwUAWPiW6vSw1s6N8H32AQLOrw/+NTqGf7bjq+64YKS6NfR0XDgE+wNJltGO
 ck7zJW3NHIg76RNu8s0I9xg5aVmwizz3Z5DGROZquaolnezux4tQihZ3AFyxIzLc
 +Y3WHYagcML7yFfjl/WznCLRD5EW3yPln4lCvQO0nW/xICRYeRI057JaIbi2Dtek
 BhcXt3c4AjXDLdYJkgtHV3p2R2mt8hcdFdWqqx6s7JaIThZNRGNzxAgtbcB9k5IW
 HVG9ZEIL73VBYWHrYivzjHYF5rBnNCPt87eOwDQeTOSkhv8te+u9k+bH8vxZw1T0
 XUtDrLBndKiuVo2GUfLkkF8LItx3Q9eLCJYy0joaIliyPqTEsPx9KjQ+Af0cxS9s
 ZPCZ5SYf96stKmDeL5xaMfrAmeyVHJ4lc4JTOqdzbIT8blsOSfYO/03p0ALShSDv
 /RQLaKGlf8Bjoy8PwKFcXb4sIDufcd/U1Av/EMFXxOfgN/u2JUkGKq6EaIM5B68L
 fHPje+aR9VNELPmPjwNOWtmN4I79EH3EItQf7zv0KG+UeKhcHLx/EAcSJ3ZRKEkH
 Lathg7pPOEJGArPiVO79TZzBG01ADn1aiwv65XObMzNZ+54xI/mN/Y1DNF/kL5jU
 XzvNzEjFt8mwMIZGVNdAt4+pDyMfIZGZSyUkSRKFnaQZMIvQrfQIU9RLBYLX5eOx
 +/p0VkIwDpg=
 =lbS7
 -----END PGP SIGNATURE-----

Merge tag 'hwparam-20170420' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs

Pull hw lockdown support from David Howells:
 "Annotation of module parameters that configure hardware resources
  including ioports, iomem addresses, irq lines and dma channels.

  This allows a future patch to prohibit the use of such module
  parameters to prevent that hardware from being abused to gain access
  to the running kernel image as part of locking the kernel down under
  UEFI secure boot conditions.

  Annotations are made by changing:

        module_param(n, t, p)
        module_param_named(n, v, t, p)
        module_param_array(n, t, m, p)

  to:

        module_param_hw(n, t, hwtype, p)
        module_param_hw_named(n, v, t, hwtype, p)
        module_param_hw_array(n, t, hwtype, m, p)

  where the module parameter refers to a hardware setting

  hwtype specifies the type of the resource being configured. This can
  be one of:

        ioport          Module parameter configures an I/O port
        iomem           Module parameter configures an I/O mem address
        ioport_or_iomem Module parameter could be either (runtime set)
        irq             Module parameter configures an I/O port
        dma             Module parameter configures a DMA channel
        dma_addr        Module parameter configures a DMA buffer address
        other           Module parameter configures some other value

  Note that the hwtype is compile checked, but not currently stored (the
  lockdown code probably won't require it). It is, however, there for
  future use.

  A bonus is that the hwtype can also be used for grepping.

  The intention is for the kernel to ignore or reject attempts to set
  annotated module parameters if lockdown is enabled. This applies to
  options passed on the boot command line, passed to insmod/modprobe or
  direct twiddling in /sys/module/ parameter files.

  The module initialisation then needs to handle the parameter not being
  set, by (1) giving an error, (2) probing for a value or (3) using a
  reasonable default.

  What I can't do is just reject a module out of hand because it may
  take a hardware setting in the module parameters. Some important
  modules, some ipmi stuff for instance, both probe for hardware and
  allow hardware to be manually specified; if the driver is aborts with
  any error, you don't get any ipmi hardware.

  Further, trying to do this entirely in the module initialisation code
  doesn't protect against sysfs twiddling.

  [!] Note that in and of itself, this series of patches should have no
      effect on the the size of the kernel or code execution - that is
      left to a patch in the next series to effect. It does mark
      annotated kernel parameters with a KERNEL_PARAM_FL_HWPARAM flag in
      an already existing field"

* tag 'hwparam-20170420' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs: (38 commits)
  Annotate hardware config module parameters in sound/pci/
  Annotate hardware config module parameters in sound/oss/
  Annotate hardware config module parameters in sound/isa/
  Annotate hardware config module parameters in sound/drivers/
  Annotate hardware config module parameters in fs/pstore/
  Annotate hardware config module parameters in drivers/watchdog/
  Annotate hardware config module parameters in drivers/video/
  Annotate hardware config module parameters in drivers/tty/
  Annotate hardware config module parameters in drivers/staging/vme/
  Annotate hardware config module parameters in drivers/staging/speakup/
  Annotate hardware config module parameters in drivers/staging/media/
  Annotate hardware config module parameters in drivers/scsi/
  Annotate hardware config module parameters in drivers/pcmcia/
  Annotate hardware config module parameters in drivers/pci/hotplug/
  Annotate hardware config module parameters in drivers/parport/
  Annotate hardware config module parameters in drivers/net/wireless/
  Annotate hardware config module parameters in drivers/net/wan/
  Annotate hardware config module parameters in drivers/net/irda/
  Annotate hardware config module parameters in drivers/net/hamradio/
  Annotate hardware config module parameters in drivers/net/ethernet/
  ...
2017-05-10 19:13:03 -07:00
David Howells 8863b3e785 Annotate hardware config module parameters in drivers/iio/
When the kernel is running in secure boot mode, we lock down the kernel to
prevent userspace from modifying the running kernel image.  Whilst this
includes prohibiting access to things like /dev/mem, it must also prevent
access by means of configuring driver modules in such a way as to cause a
device to access or modify the kernel image.

To this end, annotate module_param* statements that refer to hardware
configuration and indicate for future reference what type of parameter they
specify.  The parameter parser in the core sees this information and can
skip such parameters with an error message if the kernel is locked down.
The module initialisation then runs as normal, but just sees whatever the
default values for those parameters is.

Note that we do still need to do the module initialisation because some
drivers have viable defaults set in case parameters aren't specified and
some drivers support automatic configuration (e.g. PNP or PCI) in addition
to manually coded parameters.

This patch annotates drivers in drivers/iio/.

Suggested-by: Alan Cox <gnomes@lxorguk.ukuu.org.uk>
Signed-off-by: David Howells <dhowells@redhat.com>
Acked-by: William Breathitt Gray <vilhelm.gray@gmail.com>
Acked-by: Jonathan Cameron <jic23@kernel.org>
cc: linux-iio@vger.kernel.org
2017-04-20 12:02:32 +01:00
Greg Kroah-Hartman df47c0a638 Fifth set of IIO fixes for the 4.11 cycle.
As these are rather late in the cycle, they may sneak over into 4.12.
 There is a fix for a regression caused by another fix (hid sensors
 hardware seems to vary a lot in how various corner cases are handled).
 
 * ad7303
   - fix channel description. Numeric values were being passed as characters
   presumably leading to garbage from the userspace interface.
 * as3935
   - the write data macro was wrong so fix it.
 * bmp280
   - incorrect handling of negative values as being unsigned broke humidity
   calculation.
 * hid-sensor
   - Restore the poll and hysteresis values after resume as some hardware
   doesn't do it.
 * stm32-trigger
   - buglet in reading the sampling frequency
 -----BEGIN PGP SIGNATURE-----
 
 iQJFBAABCAAvFiEEbilms4eEBlKRJoGxVIU0mcT0FogFAljw8ScRHGppYzIzQGtl
 cm5lbC5vcmcACgkQVIU0mcT0FojZvBAAh8K9e+3ObpS6/0wj26/XsakiFn4v2ah0
 xKUnafxAVVxU3AU01IJ3CtNdIMyqMwpnB+PvnpgDzZw749QrYKPsBIzheK64eabe
 fzA34X5MWGLwUdOXpfEB0xvsylWjJrqsf1rahgZjiUKkPeZe9EwzPM/fP1sEl5gu
 p+vfSMckboFaKheoQwnWMUTBp0HK+nbFpcSBzljX68u+epiXpDGrjuZC8NJ3JuBn
 Bloz9AhDliIn477H7mIUTXBbt3ixLIDiJ7haQuTNlagosPoUtCBpwY2O9mZ7VRVs
 wM62h7/F170077ReQJRjlfck+7uHoIgDeS46w5UYTzA1HJLxs+veO5xv3VOtHIUg
 BZ+mibQyIUBrFeyYDVbeUpBTffiU6rA+yiM4WFwUFabl7t7rlG0NhLEx7OIQcFMm
 l8u/5JUoJcoykaO8c9Jx5XtrgkXq+rCWVAmhjHqUDAlvsMa6pJWEyqgaVcQeIbdw
 ns9ppJRlOmEst7lMab9TI7BJp3oCIH6uRmctbme42Rw8XgDFdltxqkxmjB8d+cDC
 Q0INhNJN1jRgz6rT6lkxVhAYKtaP5T8qZeliT4MO1E59ggOVSSf8zuhjrEMUK397
 Tu/k7fmATtiKSG+blwYZVRC3+ixh/oKZsvfwZ4O+mFJyhQ616nKMYAywoaZcM8WT
 Z1ABipUDwsE=
 =H5KS
 -----END PGP SIGNATURE-----

Merge tag 'iio-fixes-for-4.11e' of git://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio into staging-next

Jonathan writes:

Fifth set of IIO fixes for the 4.11 cycle.

As these are rather late in the cycle, they may sneak over into 4.12.
There is a fix for a regression caused by another fix (hid sensors
hardware seems to vary a lot in how various corner cases are handled).

* ad7303
  - fix channel description. Numeric values were being passed as characters
  presumably leading to garbage from the userspace interface.
* as3935
  - the write data macro was wrong so fix it.
* bmp280
  - incorrect handling of negative values as being unsigned broke humidity
  calculation.
* hid-sensor
  - Restore the poll and hysteresis values after resume as some hardware
  doesn't do it.
* stm32-trigger
  - buglet in reading the sampling frequency
2017-04-18 19:38:38 +02:00
Fabrice Gasnier 4d4b30526e iio: dac: add support for stm32 DAC
Add support for STMicroelectronics STM32 DAC. It's a 12-bit, voltage
output digital-to-analog converter. It has two output channels, each
with its own converter.
It supports 8 bits or 12bits left/right aligned data format. Only
12bits right-aligned is used here. It has built-in noise or
triangle waveform generator, and supports external triggers for
conversions.
Each channel can be used independently, with separate trigger, then
separate IIO devices are used to handle this. Core driver is intended
to share common resources such as clock, reset, reference voltage and
registers.

Signed-off-by: Fabrice Gasnier <fabrice.gasnier@st.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
2017-04-14 16:36:16 +01:00
Pavel Roskin ce420fd425 iio: dac: ad7303: fix channel description
realbits, storagebits and shift should be numbers, not ASCII characters.

Signed-off-by: Pavel Roskin <plroskin@gmail.com>
Reviewed-by: Lars-Peter Clausen <lars@metafoo.de>
Cc: <Stable@vger.kernel.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
2017-04-14 14:44:29 +01:00
simran singhal 4d925083e8 iio: dac: ad5504: Remove unnecessary cast on void pointer
The following Coccinelle script was used to detect this:
@r@
expression x;
void* e;
type T;
identifier f;
@@
(
  *((T *)e)
|
  ((T *)x)[...]
|
  ((T*)x)->f
|
- (T*)
  e
)

Signed-off-by: simran singhal <singhalsimran0@gmail.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
2017-04-02 09:48:50 +01:00
simran singhal e36020fd69 iio: dac: ad5504: constify attribute_group structures
Check for attribute_group structures that are only stored in the
event_attrs filed of iio_info structure. As the event_attrs field of
iio_info structures is constant, so these attribute_group structures can
also be declared constant. Done using coccinelle:

@r1 disable optional_qualifier @
identifier i;
position p;
@@
static struct attribute_group i@p = {...};

@ok1@
identifier r1.i;
position p;
struct iio_info x;
@@
x.event_attrs=&i@p;

@bad@
position p!={r1.p,ok1.p};
identifier r1.i;
@@
i@p

@depends on !bad disable optional_qualifier@
identifier r1.i;
@@
static
+const
struct attribute_group i={...};

@depends on !bad disable optional_qualifier@
identifier r1.i;
@@
+const
struct attribute_group i;

File size before:
   text    data     bss     dec     hex filename
   3046     360       0    3406     d4e drivers/iio/dac/ad5504.o

File size after:
   text	   data	    bss	    dec	    hex	filename
   3110	    296	      0	   3406	    d4e	drivers/iio/dac/ad5504.o

Signed-off-by: simran singhal <singhalsimran0@gmail.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
2017-03-29 22:08:51 +01:00
Maxime Roussin-Belanger 02b829f9e1 iio: dac: Add support for ltc2632 DACs
Add support for Linear Technology LTC2632 (SPI) family of·
dual 12- 10-, and 8-bits output DACs.

Signed-off-by: Maxime Roussin-Belanger <maxime.roussinbelanger@gmail.com>
Signed-off-by: Jean-Francois Dagenais <jeff.dagenais@gmail.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
2017-03-21 18:43:56 +00:00
Javier Martinez Canillas 7373340367 iio: dac: max5821: Set .of_match_table to OF device ID table
The driver has a OF device ID table but the struct i2c_driver
.of_match_table field is not set.

Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
2017-03-19 10:56:26 +00:00
Javier Martinez Canillas 8414af1ed1 iio: dac: mcp4725: Add OF device ID table
The driver doesn't have a struct of_device_id table but supported devices
are registered via Device Trees. This is working on the assumption that a
I2C device registered via OF will always match a legacy I2C device ID and
that the MODALIAS reported will always be of the form i2c:<device>.

But this could change in the future so the correct approach is to have an
OF device ID table if the devices are registered via OF.

Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
2017-03-19 10:51:04 +00:00
Lars-Peter Clausen 83535359c4 iio: cio-dac: Set parent device
Initialize the parent of the IIO device to the device that registered it.
This makes sure that the IIO device appears the right level in the device
hierarchy.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Acked-by: William Breathitt Gray <vilhelm.gray@gmail.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
2017-02-19 11:58:19 +00:00
Michael Hennerich 2cc5b0df86 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>
2016-12-30 17:20:14 +00:00
Michael Hennerich b0570bcee3 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>
2016-12-30 17:19:36 +00:00
Peter Rosin 7fde1484af iio: dpot-dac: DAC driver based on a digital potentiometer
It is assumed that the dpot is used as a voltage divider between the
current dpot wiper setting and the maximum resistance of the dpot. The
divided voltage is provided by a vref regulator.

                  .------.
   .-----------.  |      |
   | vref      |--'    .---.
   | regulator |--.    |   |
   '-----------'  |    | d |
                  |    | p |
                  |    | o |  wiper
                  |    | t |<---------+
                  |    |   |
                  |    '---'       dac output voltage
                  |      |
                  '------+------------+

Signed-off-by: Peter Rosin <peda@axentia.se>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
2016-11-13 13:07:15 +00:00
Julia Lawall 30df2d1879 iio: dac: mcp4725: fix odd_ptr_err.cocci warnings
PTR_ERR should access the value just tested by IS_ERR

Generated by: scripts/coccinelle/tests/odd_ptr_err.cocci

CC: Tomas Novotny <tomas@novotny.cz>
Signed-off-by: Julia Lawall <julia.lawall@lip6.fr>
Signed-off-by: Fengguang Wu <fengguang.wu@intel.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
2016-10-23 19:34:27 +01:00
Tomas Novotny 88e39a88b7 iio: dac: mcp4725: add devicetree support
Signed-off-by: Tomas Novotny <tomas@novotny.cz>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
2016-10-23 19:34:24 +01:00
Tomas Novotny 29157c6d60 iio: dac: mcp4725: support voltage reference selection
MCP47x6 chip supports selection of a voltage reference (VDD, VREF buffered
or unbuffered). MCP4725 doesn't have this feature thus the eventual setting
is ignored and user is warned.

The setting is stored only in the volatile memory of the chip. You need to
manually store it to the EEPROM of the chip via 'store_eeprom' sysfs entry.

Signed-off-by: Tomas Novotny <tomas@novotny.cz>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
2016-10-23 19:34:23 +01:00
Tomas Novotny 6a31c225f5 iio: dac: mcp4725: fix incorrect comment
Number 2 is referencing to the settings with the largest available
resistor.

No functional change.

Signed-off-by: Tomas Novotny <tomas@novotny.cz>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
2016-10-23 19:34:20 +01:00
Tomas Novotny b440f1d90e iio: dac: mcp4725: use regulator framework
Use a standard framework to get the reference voltage. It is done that way
in the iio subsystem and it will simplify extending of the driver.

Structure mcp4725_platform_data is left undeleted because it used in the
next patch.

This change breaks the current users of the driver, but there is no
mainline user of struct mcp4725_platform_data.

Signed-off-by: Tomas Novotny <tomas@novotny.cz>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
2016-10-23 19:33:51 +01:00
Sandhya Bankar 38e442fc8b drivers: iio: dac: Fix sparse warning
Fixing below warnings:

drivers/iio/dac/ad5592r.c:58:41: warning: incorrect type in argument 2 (different base types)
drivers/iio/dac/ad5592r.c:58:41:    expected unsigned short [usertype] *buf
drivers/iio/dac/ad5592r.c:58:41:    got restricted __be16 *<noident>
drivers/iio/dac/ad5592r.c:62:41: warning: incorrect type in argument 2 (different base types)
drivers/iio/dac/ad5592r.c:62:41:    expected unsigned short [usertype] *buf
drivers/iio/dac/ad5592r.c:62:41:    got restricted __be16 *<noident>
drivers/iio/dac/ad5592r.c:92:41: warning: incorrect type in argument 2 (different base types)
drivers/iio/dac/ad5592r.c:92:41:    expected unsigned short [usertype] *buf
drivers/iio/dac/ad5592r.c:92:41:    got restricted __be16 *<noident>
drivers/iio/dac/ad5592r.c:110:41: warning: incorrect type in argument 2 (different base types)
drivers/iio/dac/ad5592r.c:110:41:    expected unsigned short [usertype] *buf
drivers/iio/dac/ad5592r.c:110:41:    got restricted __be16 *<noident>

Signed-off-by: Sandhya Bankar <bankarsandhya512@gmail.com>
Acked-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
2016-09-27 20:25:32 +01:00
William Breathitt Gray 4075a283ae iio: stx104: Add IIO support for the ADC channels
The Apex Embedded Systems STX104 features 16 channels of single-ended (8
channels of true differential) 16-bit analog input. Differential input
configuration may be selected via a physical jumper on the device.
Similarly, input polarity (unipolar/bipolar) is configured via a
physical jumper on the device.

Input gain selection is available to the user via software, thus
allowing eight possible input ranges: +-10V, +-5V, +-2.5V, +-1.25V,
0 to 10V, 0 to 5V, 0 to 2.5V, and 0 to 1.25V. Four input gain
configurations are supported: x1, x2, x4, and x8.

This ADC resolution is 16-bits (1/65536 of full scale). Analog input
samples are taken on software trigger; neither FIFO sampling nor
interrupt triggering is supported by this driver.

The Apex Embedded Systems STX104 is primarily an analog-to-digital
converter device. The STX104 IIO driver was initially placed in the DAC
directory because only the DAC portion of the STX104 was supported at
the time. Now that ADC support has been added to the STX104 IIO driver,
the driver should be moved to the more appropriate ADC directory.

Signed-off-by: William Breathitt Gray <vilhelm.gray@gmail.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
2016-09-03 17:25:53 +01:00
Gwenhael Goavec-Merou 7f270bc9a2 iio: dac: AD8801: add Analog Devices AD8801/AD8803 support
Add support for Analog Devices AD8801/AD8803, 8 channels 8bits, Digital to
Analog converters.

Signed-off-by: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
2016-08-29 18:20:01 +01:00
Colin Ian King 9d47964bfd iio: ad5755: fix off-by-one on devnr limit check
The comparison for devnr limits is off-by-one, the current check
allows 0 to AD5755_NUM_CHANNELS and the limit should be in fact
0 to AD5755_NUM_CHANNELS - 1.  This can lead to an out of bounds
write to pdata->dac[devnr]. Fix this by replacing > with >= on the
comparison.

Signed-off-by: Colin Ian King <colin.king@canonical.com>
Fixes: c947459979 ("iio: ad5755: add support for dt bindings")
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
2016-08-29 16:15:24 +01:00
William Breathitt Gray 3b8df5fd52 iio: Add IIO support for the Measurement Computing CIO-DAC family
The Measurement Computing CIO-DAC is a family of 16-bit and 12-bit
analog output devices. The analog outputs are from AD660BN/AD7237
converters with each output buffered by an OP-27. Voltage ranges are
configured via physical jumpers on the device.

This driver does not support the devices' simulataneous update mode; the
XFER jumper option should be deselected for all analog output channels.

This driver provides IIO support for the Measurement Computing CIO-DAC
family: CIO-DAC16, CIO-DAC08, and PC104-DAC06. The base port addresses
for the devices may be configured via the base array module parameter.

Signed-off-by: William Breathitt Gray <vilhelm.gray@gmail.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
2016-07-24 19:58:43 +01:00
Gregor Boirie bc2b7dab62 iio:core: timestamping clock selection support
Adds a new per-device sysfs attribute "current_timestamp_clock" to allow
userspace to select a particular POSIX clock for buffered samples and
events timestamping.

Following clocks, as listed in clock_gettime(2), are supported:
CLOCK_REALTIME, CLOCK_MONOTONIC, CLOCK_MONOTONIC_RAW,
CLOCK_REALTIME_COARSE, CLOCK_MONOTONIC_COARSE, CLOCK_BOOTTIME and
CLOCK_TAI.

Signed-off-by: Gregor Boirie <gregor.boirie@parrot.com>
Acked-by: Sanchayan Maity <maitysanchayan@gmail.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
2016-06-30 19:41:38 +01:00
Greg Kroah-Hartman 3c9a6793bd Second round of new iio device support, features and cleanups in the 4.8 cycle
Firstly some contact detail updates:
 * NXP took over freescale. Update the mma8452 header to reflect this.
 * Martin Kepplinger email address change in mma8452 header.
 * Adriana Reus has changed email address. Update .mailmap.
 * Matt Ranostay has changed email address. Update .mailmap.
 
 New Device Support
 * max1363
   - add the missing i2c_device_ids for a couple of parts so they can actually
     be used.
 * ms5867
   - add device ids for ms5805 and ms5837 parts.
 
 New Features
 * ad5755
   - DT support.  This one was a bit controversial and under review for a long
     time.  Still no one could come up with a better solution.
 * stx104
   - add gpio support
 * ti-adc081c
   - Add ACPI device ID matching.
 
 Core changes
 * Refuse to register triggers with duplicate names.  There is no way to
   distinguish between them so this makes no sense.  A few drivers do not
   generate unique names for each instance of the device present.  We can't
   fix this without changing ABI so leave them and wait for someone to
   actually take the rare step of two identical accelerometers on the same
   board.
 * buffer-dma
   - use ARRAY_SIZE in a few appropriate locations.
 
 Tools
 * Fix the fact that the --trigger-num option in generic_buffer didn't allow
   0 which is perfectly valid in the ABI.
 
 Cleanups
 * as3935
   - improve error reporting.
   - remove redundant zeroing of a field in iio_priv.
 * gp2ap020a00f
   - use the iio_device_claim_*_mode helpers rather than open coding locking
   around mode changes.
 * isl29125
   - use the iio_device_claim_*_mode helpers rather than open coding locking.
 * lidar
   - use the iio_device_claim_*_mode helpers rather than open coding locking.
 * mma8452
   - more detail in devices supported description in comments (addresses and
   similar)
 * sca3000
   - add a missing error check.
 * tcs3414
   - use the iio_device_claim_*_mode helpers rather than open coding locking.
 * tcs3472
   - use the iio_device_claim_*_mode helpers rather than open coding locking.
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2
 
 iQIcBAABCAAGBQJXdAT2AAoJEFSFNJnE9BaIq68P/3Z0q1lc1cb+K8HV5jgukEKw
 eoxZa5lFIOuHAGeXo9GAdJiH5oT/yAIhadf3gzuuQLaTJwWYKD51aPVwgpT5M2+x
 Bnu2XiYcaoIm/Foat70ycjeYaGxO/xO2vbLp5v0BJV2ujvjm/oCKw5pxYeU4Jm63
 iKaZo9jn/HoshOMpZBrcPZ7Q1TogRdopBNe2fsc8nXFFsv8ODjOZ9Nebs2lk36e+
 PWLUWfSkv2LMBSE2LOFyjSW8E4ItBBngBcyqBTFiiln7mpXU5Vv2QSvUhpP2YjUZ
 rxKvDiG7ADuxMr901whASxyCO180yCxTRIcBsN8oP73gTGHrJnMT0Sptfz7AUUVN
 gJneiy+iy3TecJ/R6w/DnNzqmZMiEVqlYGkdXVGu8SXrKWilvzcTp5iTmDVM5zLb
 1fDZxjbLdNJuHzoSYNiCBcnfzIixOAyKTGFi3jUaPPQ/Lc1qfmgerWWlOzKeUgCZ
 5Bzak8MvWuxcO7jkMG8mbARufy3Nu6eh8a39JXFhViGtTtySydMa8eXdYPjqoAtv
 vgwJNh9U53yYui8i7vU90dM3gJaGg5a4R6EjEKCYcEJf6kM9Go8xCvjU8YWPtIKk
 rfykpPkKcQzbax07YKvb4f015x7r0V6WCGJjPn0Fi14ugNGJJ6M88l+2UcXcx1zS
 RRtVRD49Le7pIDCs1Rqn
 =6Lja
 -----END PGP SIGNATURE-----

Merge tag 'iio-for-4.8b' of git://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio into staging-next

Jonathan writes:

Second round of new iio device support, features and cleanups in the 4.8 cycle

Firstly some contact detail updates:
* NXP took over freescale. Update the mma8452 header to reflect this.
* Martin Kepplinger email address change in mma8452 header.
* Adriana Reus has changed email address. Update .mailmap.
* Matt Ranostay has changed email address. Update .mailmap.

New Device Support
* max1363
  - add the missing i2c_device_ids for a couple of parts so they can actually
    be used.
* ms5867
  - add device ids for ms5805 and ms5837 parts.

New Features
* ad5755
  - DT support.  This one was a bit controversial and under review for a long
    time.  Still no one could come up with a better solution.
* stx104
  - add gpio support
* ti-adc081c
  - Add ACPI device ID matching.

Core changes
* Refuse to register triggers with duplicate names.  There is no way to
  distinguish between them so this makes no sense.  A few drivers do not
  generate unique names for each instance of the device present.  We can't
  fix this without changing ABI so leave them and wait for someone to
  actually take the rare step of two identical accelerometers on the same
  board.
* buffer-dma
  - use ARRAY_SIZE in a few appropriate locations.

Tools
* Fix the fact that the --trigger-num option in generic_buffer didn't allow
  0 which is perfectly valid in the ABI.

Cleanups
* as3935
  - improve error reporting.
  - remove redundant zeroing of a field in iio_priv.
* gp2ap020a00f
  - use the iio_device_claim_*_mode helpers rather than open coding locking
  around mode changes.
* isl29125
  - use the iio_device_claim_*_mode helpers rather than open coding locking.
* lidar
  - use the iio_device_claim_*_mode helpers rather than open coding locking.
* mma8452
  - more detail in devices supported description in comments (addresses and
  similar)
* sca3000
  - add a missing error check.
* tcs3414
  - use the iio_device_claim_*_mode helpers rather than open coding locking.
* tcs3472
  - use the iio_device_claim_*_mode helpers rather than open coding locking.
2016-06-29 15:35:01 -07:00
Sean Nyekjaer c947459979 iio: ad5755: add support for dt bindings
Devicetree can provide platform data

Signed-off-by: Sean Nyekjaer <sean.nyekjaer@prevas.dk>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
2016-06-27 21:09:00 +01:00
William Breathitt Gray 765550e4d9 iio: stx104: Add GPIO support for the Apex Embedded Systems STX104
The Apex Embedded Systems STX104 device features eight lines of digital
I/O (four digital inputs and four digital outputs). This patch adds GPIO
support for these eight lines of digital I/O via GPIOLIB.

Cc: Alexandre Courbot <gnurou@gmail.com>
Signed-off-by: William Breathitt Gray <vilhelm.gray@gmail.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
2016-06-27 20:59:11 +01:00
Linus Torvalds a50094a481 Staging fixes for 4.7-rc4
Here are a number of IIO and Staging bugfixes for 4.7-rc4.
 
 Nothing huge, the normal amount of iio driver fixes, and some small
 staging driver bugfixes for some reported problems (2 are reverts of
 patches that went into 4.7-rc1).  All have been in linux-next with no
 reported issues.
 
 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2
 
 iEYEABECAAYFAldlbB4ACgkQMUfUDdst+ykpkACggRrmGzuiDe1hQHbq1J+jaokX
 V2kAoK0WiQ66uv4nd1FbLx2CcUb0xgI5
 =c2n1
 -----END PGP SIGNATURE-----

Merge tag 'staging-4.7-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging

Pull IIO and staging fixes from Greg KH:
 "Here are a number of IIO and staging bugfixes for 4.7-rc4.

  Nothing huge, the normal amount of iio driver fixes, and some small
  staging driver bugfixes for some reported problems (2 are reverts of
  patches that went into 4.7-rc1).  All have been in linux-next with no
  reported issues"

* tag 'staging-4.7-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging: (24 commits)
  Revert "Staging: rtl8188eu: rtw_efuse: Use sizeof type *pointer instead of sizeof type."
  Revert "Staging: drivers: rtl8188eu: use sizeof(*ptr) instead of sizeof(struct)"
  staging: lustre: lnet: Don't access NULL NI on failure path
  iio: hudmidity: hdc100x: fix incorrect shifting and scaling
  iio: light apds9960: Add the missing dev.parent
  iio: Fix error handling in iio_trigger_attach_poll_func
  iio: st_sensors: Disable DRDY at init time
  iio: st_sensors: Init trigger before irq request
  iio: st_sensors: switch to a threaded interrupt
  iio: light: bh1780: assign a static name
  iio: bh1780: dereference the client properly
  iio: humidity: hdc100x: fix IIO_TEMP channel reporting
  iio:st_pressure: fix sampling gains (bring inline with ABI)
  iio: proximity: as3935: fix buffer stack trashing
  iio: proximity: as3935: remove triggered buffer processing
  iio: proximity: as3935: correct IIO_CHAN_INFO_RAW output
  max44000: Remove scale from proximity
  iio: humidity: am2315: Remove a stray unlock
  iio: humidity: hdc100x: correct humidity integration time mask
  iio: pressure: bmp280: fix error message for wrong chip id
  ...
2016-06-18 06:05:28 -10:00
William Breathitt Gray 75897b7c5e iio: stx104: Allow build for X86_64
With the introduction of the ISA_BUS_API Kconfig option, ISA-style
drivers may be built for X86_64 architectures. This patch changes the
ISA Kconfig option dependency of the Apex Embedded Systems STX104 DAC
driver to ISA_BUS_API, thus allowing it to build for X86_64 as it is
expected to.

Cc: Hartmut Knaack <knaack.h@gmx.de>
Cc: Lars-Peter Clausen <lars@metafoo.de>
Cc: Peter Meerwald-Stadler <pmeerw@pmeerw.net>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: William Breathitt Gray <vilhelm.gray@gmail.com>
Acked-by: Jonathan Cameron <jic23@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2016-06-17 20:21:12 -07:00
Greg Kroah-Hartman 03cce00b4b First round of iio fixes for the 4.7 cycle.
A slightly bumper set due to travel delaying the pull request and a fair few
 issues with the recent merge window patches.  Patches all over the place.
 The st-sensors one is probably the most involved, but definitly solves the
 issues seen.  Note there are some other issues around that handler
 (and the fact that a lot of boards tie a level interrupt chip to an
 edge interrupt only irq chip).  These are not regressions however, so
 will turn up the slow route.
 
 * core
   - iio_trigger_attach_pollfunc had some really badly wrong error handling.
   Another nasty triggered whilst chasing down issues with the st sensors
   rework below.
 * ad5592r
   - fix an off by one error when allocating channels.
 * am2315
   - a stray mutex unlock before we ever take the lock.
 * apds9960
   - missing a parent in the driver model (which should be the i2c device).
   Result is it doesn't turn up under /sys/bus/i2c/devices which some
   userspace code uses for repeatable device identification.
 * as3935
   - ABI usage bug which meant a processed value was reported as raw. Now
     reporting scale as well to ensure userspace has the info it needs.
   - Don't return processed value via the buffer - it doesn't conform to
     the ABI and will overflow in some cases.
   - Fix a wrongly sized buffer which would overflow trashing part of the
     stack.  Also move it onto the heap as part of the fix.
 * bh1780
   - a missing return after write in debugfs lead to an incorrect read and
     a null pointer dereference.
   - dereferencing the wrong pointer in suspend and resume leading to
     unpredictable results.
   - assign a static name to avoid accidentally ending up with no name if
     loaded via device tree.
 * bmi160
   - output data rate for the accelerometer was incorrectly reported. Fix it.
   - writing the output data rate was also wrong due to reverse parameters.
 * bmp280
   - error message for wrong chip ID gave the wrong expected value.
 * hdc100x
   - mask for writing the integration time was wrong allowin g us to get
   'stuck' in a particular value with no way back.
   - temperature reported in celsius rather than millicelsius as per the
   ABI.
   - Get rid of some incorrect data shifting which lead to readings being
   rather incorrect.
 * max44000
   - drop scale attribute for proximity as it is an unscaled value (depends
     on what is in range rather than anything knowable at the detector).
 * st-pressure
   - ABI compliance fixes - units were wrong.
 * st-sensors
   - We introduced some nasty issues with the recent switch over to a
   a somewhat threaded handler in that we broke using a software trigger
   with these devices.  Now do it properly.  It's a larger patch than ideal
   for a fix, but the logic is straight forward.
   - Make sure the trigger is initialized before requesting the interrupt.
   This matters now the interrupt can be shared. Before it was ugly and wrong
   but short of flakey hardware could not be triggered.
   - Hammer down the dataready pin at boot - otherwise with really
   unlucky timing things could get interestingly wedged requiring a hard power
   down of the chip.
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2
 
 iQIcBAABCAAGBQJXVxMzAAoJEFSFNJnE9BaI3QUP/2TLXJ4S+jNFSGslMmq9Ztqm
 fPGoyPf2nfJCzwgPFK7Yku8mFhqaRbbZrM0m1IA7hYbuZMXZjjQnSrIiDqsDuvXy
 1mK3mieCu8hPFTcvVUp1q9HwrrEFIke52LIH6urSDpr1IIbhJQ2ZwXjZIJGhlukc
 yFwMuA7gz/akc3war+OlS1bbEOe4OuikWMP3Fc3QGKPR7C92M0S8oRyZwBmB2vqu
 1lqCzS0JxL3Lz3TqDXkBd+77My7S4af/F7l8JfeCDBoE4zycASP1LUgiSD2aB3Rq
 hi7hrQjPCFk6rxZ+wFIyC8V0AGeGdEDpQ4JW9rgzDC/KO9Z3Wyq/h5UrQqsnZW0G
 xbJgLF3Wa0noh/bT0yIGZGcenM57QIJ0vTEymmikbWCNQfzqSG9a0SM7zMukB6Lr
 IAvMbF3Q3n/d4rzVOE5C9vRPRnG2jICxmA3EKp7blV0hRdd197J7UfN8ExG+9zC7
 JxqQh5LLu76Ql7TJqQh7sZl/6Xi0DnUm+wqaxyCgtaZjmsVZ58S6G6E2eefO5Hma
 r3VUfthe7N0wnWwCs2RMBkBynhb7+4G11m2jp1a4PMYCYg4FhYP7QdDkeDiOSXbG
 s9Y1ILLI7ufzCyKf5GID7/FtAjdJahVR2ldIy7MwUqw7zAyjsm+ujIpTGZ8iYUvb
 whHwMtLLTnyB8Zj81LRD
 =EEPO
 -----END PGP SIGNATURE-----

Merge tag 'iio-fixes-for-4.7a' of git://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio into staging-linus

Jonathan writes:

First round of iio fixes for the 4.7 cycle.

A slightly bumper set due to travel delaying the pull request and a fair few
issues with the recent merge window patches.  Patches all over the place.
The st-sensors one is probably the most involved, but definitly solves the
issues seen.  Note there are some other issues around that handler
(and the fact that a lot of boards tie a level interrupt chip to an
edge interrupt only irq chip).  These are not regressions however, so
will turn up the slow route.

* core
  - iio_trigger_attach_pollfunc had some really badly wrong error handling.
  Another nasty triggered whilst chasing down issues with the st sensors
  rework below.
* ad5592r
  - fix an off by one error when allocating channels.
* am2315
  - a stray mutex unlock before we ever take the lock.
* apds9960
  - missing a parent in the driver model (which should be the i2c device).
  Result is it doesn't turn up under /sys/bus/i2c/devices which some
  userspace code uses for repeatable device identification.
* as3935
  - ABI usage bug which meant a processed value was reported as raw. Now
    reporting scale as well to ensure userspace has the info it needs.
  - Don't return processed value via the buffer - it doesn't conform to
    the ABI and will overflow in some cases.
  - Fix a wrongly sized buffer which would overflow trashing part of the
    stack.  Also move it onto the heap as part of the fix.
* bh1780
  - a missing return after write in debugfs lead to an incorrect read and
    a null pointer dereference.
  - dereferencing the wrong pointer in suspend and resume leading to
    unpredictable results.
  - assign a static name to avoid accidentally ending up with no name if
    loaded via device tree.
* bmi160
  - output data rate for the accelerometer was incorrectly reported. Fix it.
  - writing the output data rate was also wrong due to reverse parameters.
* bmp280
  - error message for wrong chip ID gave the wrong expected value.
* hdc100x
  - mask for writing the integration time was wrong allowin g us to get
  'stuck' in a particular value with no way back.
  - temperature reported in celsius rather than millicelsius as per the
  ABI.
  - Get rid of some incorrect data shifting which lead to readings being
  rather incorrect.
* max44000
  - drop scale attribute for proximity as it is an unscaled value (depends
    on what is in range rather than anything knowable at the detector).
* st-pressure
  - ABI compliance fixes - units were wrong.
* st-sensors
  - We introduced some nasty issues with the recent switch over to a
  a somewhat threaded handler in that we broke using a software trigger
  with these devices.  Now do it properly.  It's a larger patch than ideal
  for a fix, but the logic is straight forward.
  - Make sure the trigger is initialized before requesting the interrupt.
  This matters now the interrupt can be shared. Before it was ugly and wrong
  but short of flakey hardware could not be triggered.
  - Hammer down the dataready pin at boot - otherwise with really
  unlucky timing things could get interestingly wedged requiring a hard power
  down of the chip.
2016-06-07 22:26:20 -07:00
Linus Torvalds 2f37dd131c Staging and IIO driver update for 4.7-rc1
Here's the big staging and iio driver update for 4.7-rc1.
 
 I think we almost broke even with this release, only adding a few more
 lines than we removed, which isn't bad overall given that there's a
 bunch of new iio drivers added.  The Lustre developers seem to have
 woken up from their sleep and have been doing a great job in cleaning up
 the code and pruning unused or old cruft, the filesystem is almost
 readable :)
 
 Other than that, just a lot of basic coding style cleanups in the churn.
 All have been in linux-next for a while with no reported issues.
 
 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2
 
 iEYEABECAAYFAlc/00QACgkQMUfUDdst+ynXYQCdG9oEsw4CCItbjGfQau5YVGbd
 TOcAnA19tZz+Wcg3sLT8Zsm979dgVvDt
 =9UG/
 -----END PGP SIGNATURE-----

Merge tag 'staging-4.7-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging

Pull staging and IIO driver updates from Greg KH:
 "Here's the big staging and iio driver update for 4.7-rc1.

  I think we almost broke even with this release, only adding a few more
  lines than we removed, which isn't bad overall given that there's a
  bunch of new iio drivers added.

  The Lustre developers seem to have woken up from their sleep and have
  been doing a great job in cleaning up the code and pruning unused or
  old cruft, the filesystem is almost readable :)

  Other than that, just a lot of basic coding style cleanups in the
  churn.  All have been in linux-next for a while with no reported
  issues"

* tag 'staging-4.7-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging: (938 commits)
  Staging: emxx_udc: emxx_udc: fixed coding style issue
  staging/gdm724x: fix "alignment should match open parenthesis" issues
  staging/gdm724x: Fix avoid CamelCase
  staging: unisys: rename misleading var ii with frag
  staging: unisys: visorhba: switch success handling to error handling
  staging: unisys: visorhba: main path needs to flow down the left margin
  staging: unisys: visorinput: handle_locking_key() simplifications
  staging: unisys: visorhba: fail gracefully for thread creation failures
  staging: unisys: visornic: comment restructuring and removing bad diction
  staging: unisys: fix format string %Lx to %llx for u64
  staging: unisys: remove unused struct members
  staging: unisys: visorchannel: correct variable misspelling
  staging: unisys: visorhba: replace functionlike macro with function
  staging: dgnc: Need to check for NULL of ch
  staging: dgnc: remove redundant condition check
  staging: dgnc: fix 'line over 80 characters'
  staging: dgnc: clean up the dgnc_get_modem_info()
  staging: lustre: lnet: enable configuration per NI interface
  staging: lustre: o2iblnd: properly set ibr_why
  staging: lustre: o2iblnd: remove last of kiblnd_tunables_fini
  ...
2016-05-20 22:20:48 -07:00
Dan Carpenter 04bf02175f iio: dac: ad5592r: Off by one bug in ad5592r_alloc_channels()
The > here should be >= or we go beyond the end for the array.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
2016-05-04 10:52:43 +01:00
William Breathitt Gray 9c2cfc19e6 iio: stx104: Utilize the module_isa_driver and max_num_isa_dev macros
The Apex Embedded Systems STX104 DAC drivers does not do anything
special in module init/exit. This patch eliminates the module init/exit
boilerplate code by utilizing the module_isa_driver macro.

Additionally, the max_num_isa_dev macro is utilized to simplify the
determination of maximum possible STX104 devices in the system.

Cc: Jonathan Cameron <jic23@kernel.org>
Cc: Hartmut Knaack <knaack.h@gmx.de>
Cc: Lars-Peter Clausen <lars@metafoo.de>
Cc: Peter Meerwald <pmeerw@pmeerw.net>
Signed-off-by: William Breathitt Gray <vilhelm.gray@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2016-05-02 09:32:04 -07:00
William Breathitt Gray 136c956845 iio: stx104: Add X86 dependency to STX104 Kconfig option
The Apex Embedded Systems STX104 DAC driver expects the STX104 device to
be I/O port-mapped addressable on an X86 platform. This patch adds an
explicit X86 dependency to the STX104 configuration option to prevent
building on non-X86 architectures.

Cc: Jonathan Cameron <jic23@kernel.org>
Cc: Hartmut Knaack <knaack.h@gmx.de>
Cc: Lars-Peter Clausen <lars@metafoo.de>
Cc: Peter Meerwald <pmeerw@pmeerw.net>
Signed-off-by: William Breathitt Gray <vilhelm.gray@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2016-05-02 09:32:04 -07:00
Paul Cercueil 56ca9db862 iio: dac: Add support for the AD5592R/AD5593R ADCs/DACs
This patch adds support for the AD5592R (spi) and AD5593R (i2c)
ADC/DAC/GPIO devices.

Signed-off-by: Paul Cercueil <paul.cercueil@analog.com>
Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
2016-04-10 14:29:06 +01:00
Joachim Eastwood 9bbccbe11a iio: dac: add NXP LPC18xx DAC driver
Add base support for the 10-bit DAC peripheral found
on NXP LPC18xx/43xx SoCs.

This is a minimal driver that does not support DMA or
interrupts.

User manual with register description can be found on:
LPC18xx: www.nxp.com/documents/user_manual/UM10430.pdf
LPC43xx: www.nxp.com/documents/user_manual/UM10503.pdf

Signed-off-by: Joachim Eastwood <manabian@gmail.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
2016-03-12 18:12:37 +00:00
Sanchayan Maity 1b983bf42f iio: dac: vf610_dac: Add IIO DAC driver for Vybrid SoC
Add driver support for DAC peripheral on Vybrid SoC.

Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
2016-02-24 20:52:55 +00:00
Greg Kroah-Hartman d9750a2f9e 2nd round of new IIO device support, features and cleanups for the 4.6 cycle.
New Device Support
 * Apex stx104 DAC
   - new driver for this PC104 board. Right now DAC support only.
 * ADI ad5064
   - Add support for ad5625, ad5627, ad5645, ad5665, ad5667 DACs.
   - Add support for Linear Technology ltc2606, ltc2607, ltc2609, ltc2616,
     ltc2617, ltc2619, ltc2626, ltc2627 and ltc2629.
 * ADI ad7192
   - add support for the ad7193
 * Invensense mpu6050
   - substantial rework of driver to use regmap allowing SPI support extending
     the now split driver to cover the MPU6000.
 * TI adc0832
   - new driver supporting ADC0831, ADC0832, ADC0834 and ADC0838 ADCs.
 * TI ads1015
   - new driver, note that there is an existing hwmon driver. The long term
     intention is to probably remove the hwmon driver but for now we just have
     guards in place to ensure this driver is not built if that one is enabled.
 * TI afe4403
   - new driver for this heart rate monitor / pulse oximeter front end chip.
 * TI afe4404
   - new driver for this heart rate monitor / pulse oximeter front end chip.
 
 Staging Graduations
 * mxs-lradc
   - A combined general purpose and touch screen (input) device driver.
     Originally held in staging to allow reworking into and MFD but as
     that wasn't happening and isn't an absolute requirement we are moving
     it out of staging.
 
 Driver new features
 * ms5611
   - triggered buffer support
   - IIO_CHAN_INFO_SCALE to aid the triggered buffer support.
 
 Driver cleanups / reworks / fixes
 * ad5064
   - Use an enum for the register map layout to allow support of additional
     chips (precursor to the new support listed above).
   - Structural driver changes to allow support of the slightly different
     handling for the ltc parts above.
 * ad5933
   - drop an exceptional & unnecessary for a function pointer.
 * ad7606
   - Cleanup the repeated copies of pm ops.
   - consolidate the various channels specs via a sport of rearranging so only
     one version is needed.
 * atlas ph sensor
   - add select IRQ_WORK
 * hmc8543 (soon to move out of staging)
   - Comment style fixes
   - functionality of suspend and resume was swapped.
 * spear-adc
   - use devm_clk_dev instead of managing the clk lifetime by hand.
 
 Core
 * Use new dmaengine_terminate_sync call to avoid a theoretical race.
 * Fix docs for mlock in struct iio_dev as it is correctly taken in some
   drivers (docs used to say for core only).
 * Add a helper function for calculating the scan index storage size within
   the core cutting out some cut and paste versions of the same code.
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2
 
 iQIcBAABCAAGBQJWwJeMAAoJEFSFNJnE9BaI9N8P/3nvhVTXXTkwl8UF22dAyRhP
 l6Szj8vk6M9yJ0z8sBPPzKRoPOESuZU/N8BndN5w17Em3fU9k3Qe6CaUYGTKziFt
 hzuL1ySpnrGphKZR6AfONKR6m+yfk+PYVPJlMG1EEdop2nkMyezoZxh9yjNXfm9H
 gekh41rz8LrAluG4n88XdJMzIGBRfup7PPt+sJ5Ao6AMrrQVrx4DA+dTaoVJ50ED
 rvh1DIwUDH158a27Wgc5QgxyA2dSL+65KiD6HR69XKq3exUZ6AlvXHCHwOZR8/xp
 /MtBNP7V9C0vO7PBNIxRQWIdsLRQdfaiCJSWEHH1lqxQK2S6DFYzSXFCA8lQ448Q
 1qH8G2JiYzbzPVX9noXvuQJJYnGa1xsKvdOGFzi/mRXEGTaygPVYEjn2JN4WzRho
 zgAdLdI6RkPVuqDp7Mliu8lsC9giQoLD22Ln2z9AzF1PDMrCD+p2Ff+q+1xQip/q
 8B8AMniPkK8Bn5mMAGPrN6FqUt5cqtnRkECC/Yzg8B21qLcefeFmcwSecmOrd331
 +7PWWDOWCmHVMweo9whZhaS3yZFNerl7G2DzwDI76So+eeBFikFvgitTMbuWWlyG
 SXMqUqfelBs3SpftKlAKXxZ4PK/MEo45LzNSfbi0J69zpIFTqICR9nnN8/rN9ew0
 KhZtcL9Q1H6yJwGuefdp
 =LIQe
 -----END PGP SIGNATURE-----

Merge tag 'iio-for-4.6b' of git://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio into staging-next

Jonathan writes:

2nd round of new IIO device support, features and cleanups for the 4.6 cycle.

New Device Support
* Apex stx104 DAC
  - new driver for this PC104 board. Right now DAC support only.
* ADI ad5064
  - Add support for ad5625, ad5627, ad5645, ad5665, ad5667 DACs.
  - Add support for Linear Technology ltc2606, ltc2607, ltc2609, ltc2616,
    ltc2617, ltc2619, ltc2626, ltc2627 and ltc2629.
* ADI ad7192
  - add support for the ad7193
* Invensense mpu6050
  - substantial rework of driver to use regmap allowing SPI support extending
    the now split driver to cover the MPU6000.
* TI adc0832
  - new driver supporting ADC0831, ADC0832, ADC0834 and ADC0838 ADCs.
* TI ads1015
  - new driver, note that there is an existing hwmon driver. The long term
    intention is to probably remove the hwmon driver but for now we just have
    guards in place to ensure this driver is not built if that one is enabled.
* TI afe4403
  - new driver for this heart rate monitor / pulse oximeter front end chip.
* TI afe4404
  - new driver for this heart rate monitor / pulse oximeter front end chip.

Staging Graduations
* mxs-lradc
  - A combined general purpose and touch screen (input) device driver.
    Originally held in staging to allow reworking into and MFD but as
    that wasn't happening and isn't an absolute requirement we are moving
    it out of staging.

Driver new features
* ms5611
  - triggered buffer support
  - IIO_CHAN_INFO_SCALE to aid the triggered buffer support.

Driver cleanups / reworks / fixes
* ad5064
  - Use an enum for the register map layout to allow support of additional
    chips (precursor to the new support listed above).
  - Structural driver changes to allow support of the slightly different
    handling for the ltc parts above.
* ad5933
  - drop an exceptional & unnecessary for a function pointer.
* ad7606
  - Cleanup the repeated copies of pm ops.
  - consolidate the various channels specs via a sport of rearranging so only
    one version is needed.
* atlas ph sensor
  - add select IRQ_WORK
* hmc8543 (soon to move out of staging)
  - Comment style fixes
  - functionality of suspend and resume was swapped.
* spear-adc
  - use devm_clk_dev instead of managing the clk lifetime by hand.

Core
* Use new dmaengine_terminate_sync call to avoid a theoretical race.
* Fix docs for mlock in struct iio_dev as it is correctly taken in some
  drivers (docs used to say for core only).
* Add a helper function for calculating the scan index storage size within
  the core cutting out some cut and paste versions of the same code.
2016-02-14 11:10:38 -08:00
William Breathitt Gray 97a445dad3 iio: Add IIO support for the DAC on the Apex Embedded Systems STX104
The Apex Embedded Systems STX104 is a 16-channel 16-bit analog input and
2-channel 16-bit analog output PC/104 card. The STX104 incorporates a
large one mega-sample FIFO.

This driver provides IIO support for the 2-channel DAC on the STX104.
The base port addresses for the devices may be configured via the "base"
module parameter array.

Signed-off-by: William Breathitt Gray <vilhelm.gray@gmail.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
2016-02-13 20:54:14 +00:00
Lars-Peter Clausen f47732c0da iio:ad5064: Add AD5625/AD5627/AD5645/AD5647/AD4665/AD5657 support
The AD5625/AD5645/AD5665 are a family of 4 channel DACs with 12-bit, 14-bit
and 16-bit precision respectively. The devices come in 3 flavors in terms
of built-in reference, either no built-in reference, built-in 1.25V
reference or built-in 2.5V reference.

The AD5627/AD5647/AD5667 are similar to the AD5625/AD5645/AD5665 except
that they have 2 instead of 4 channels.

While these new devices are mostly register map compatible with the
existing devices support by the driver some offsets and register addresses
have been shuffled around. To accommodate this introduce a new register map
layout. For the lack of a better name we will just call it version 2.

Datasheets:
	http://www.analog.com/media/en/technical-documentation/data-sheets/AD5625R_5645R_5665R_5625_5665.pdf
	http://www.analog.com/media/en/technical-documentation/data-sheets/AD5627R_5647R_5667R_5627_5667.pdf

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
2016-02-08 18:51:26 +00:00
Lars-Peter Clausen 4946ff5858 iio:ad5064: Use a enum for the register map layout type
Currently the ad5064 only supports two different register map variations
and this is represented by a bool. This patch changes since to a enum so
we can support more variations in the future.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
2016-02-08 18:41:38 +00:00
Lars-Peter Clausen d23b2e8a5c iio:ad5064: List support LTC devices in Kconfig
List the newly support LTC devices in the Kconfig entry for the AD5064
driver.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
2016-02-08 18:41:12 +00:00
Marc Andre 8d144c9608 iio:ad5064: Add support for ltc2617 and similar devices
The Linear Technology LTC2606, LTC2607, LTC2609, LTC2616, LTC2617,
LTC2619, LTC2626, LTC2627 and LTC2629 devices are very similar
to the AD5064 device.

This patch adds support for those devices.

Datasheet for LTC devices:
LTC2606, LTC2616, LTC2626: http://www.linear.com/docs/6398
LTC2607, LTC2617, LTC2627: http://www.linear.com/docs/8977
LTC2709, LTC2619, LTC2629: http://www.linear.com/docs/8477

Signed-off-by: Marc Andre <marc.andre@netline.ch>
Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
2016-02-08 18:38:58 +00:00
Marc Andre 78f585feed iio:ad5064: Structural changes to support LTC2617
This patch makes minor structural changes to support specifics
for LTC2617 DAC. This DAC requires different handling of the
power down modes. The configuration to actually support the
DAC will be submitted in a secondary patch.

Adjust the DECLARE_AD5064_CHANNELS() macro to accept a new
ext_info parameter. This allows to use different power down
modes per DAC. (e.g. DAC only support 90kohm to ground)

Add the chip_info parameter "powerdown_ltc". This parameter is
used in the ad5064_sync_powerdown_mode() function to handle the
power down command for LTC diffently. For those devices the
power down command must be addressed to the channel.

Signed-off-by: Marc Andre <marc.andre@netline.ch>
Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
2016-02-08 18:37:24 +00:00