staging: iio: ad7780: generates pattern_mask from PAT bits
Previously, all pattern_masks and patterns in the chip_info table were
hardcoded. Now they are generated using the PAT macros, as described in
the datasheets.
Signed-off-by: Giuliano Belinassi <giuliano.belinassi@usp.br> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
iio: adc: meson-saradc: add support for the chip's temperature sensor
Channel 6 of the SAR ADC can be switched between two inputs:
SAR_ADC_CH6 input (an actual pad on the SoC) and the signal from the
temperature sensor inside the SoC.
To get usable results from the temperature sensor we need to read the
corresponding calibration data from the eFuse and pass it to the SAR ADC
registers. If the temperature sensor is not calibrated (the eFuse data
contains a bit for this) then the driver will only register the
iio_chan_spec's for voltage measurements.
This only enables the temperature sensor for the Meson8 SoC. Meson8b and
Meson8m2 SoCs can be supported in the future as well but we first need
a way to pass the fifth TSC (temperature sensor coefficient) bit to the
HHI register area (apart from that the infrastructure as already
implemented for Meson8 can be used). On the 64-bit SoCs (GXBB, GXL and
GXM) the temperature sensor inside SAR ADC is firmware-controlled (by
BL30, we can simply use the SCPI hwmon driver to get the chip
temperature).
To keep the devicetree interface backwards compatible we simply skip the
temperature sensor initialization if no eFuse nvmem cell is passed via
devicetree.
The public documentation for the SAR ADC IP block does not explain how
to use the registers to read the temperature. The logic from this patch
is based on reading and understanding Amlogic's GPL kernel sources.
Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
dt-bindings: iio: adc: meson-saradc: add temperature sensor support
The 32-bit Meson8 SoC can use the SAR ADC to read the chip temperature.
This requires setting the correct TSC (temperature sensor coefficient),
which is programmed into the eFuse during the manufacturing process.
Meson8b and Meson8m2 are not supported yet because they have a 5-bit TSC
and only the first four bits are stored inside the SAR ADC registers.
Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com> Reviewed-by: Rob Herring <robh@kernel.org> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Matheus Tavares [Sat, 3 Nov 2018 22:49:48 +0000 (19:49 -0300)]
staging:iio:ad2s90: Check channel type at read_raw
This patch adds a channel type check at the beginning of the
ad2s90_read_raw function. Since ad2s90 has only one channel, it just
checks if the given channel is the expected one and if not, return
-EINVAL.
Signed-off-by: Matheus Tavares <matheus.bernardino@usp.br> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Matheus Tavares [Sat, 3 Nov 2018 22:49:46 +0000 (19:49 -0300)]
staging:iio:ad2s90: Move device registration to the end of probe
Previously, devm_iio_device_register was being called before the
spi_setup call and the spi_device's max_speed_hz and mode assignments.
This could lead to a race condition since the driver was still being
set up after it was already made ready to use. To fix it, this patch
moves the device registration to the end of ad2s90_probe.
Signed-off-by: Matheus Tavares <matheus.bernardino@usp.br> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Matheus Tavares [Sat, 3 Nov 2018 22:49:44 +0000 (19:49 -0300)]
staging:iio:ad2s90: Make probe handle spi_setup failure
Previously, ad2s90_probe ignored the return code from spi_setup, not
handling its possible failure. This patch makes ad2s90_probe check if
the code is an error code and, if so, do the following:
- Call dev_err with an appropriate error message.
- Return the spi_setup's error code.
Note: The 'return ret' statement could be out of the 'if' block, but
this whole block will be moved up in the function in the patch:
'staging:iio:ad2s90: Move device registration to the end of probe'.
Signed-off-by: Matheus Tavares <matheus.bernardino@usp.br> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Matheus Tavares [Sat, 3 Nov 2018 22:49:43 +0000 (19:49 -0300)]
staging:iio:ad2s90: Make read_raw return spi_read's error code
Previously, when spi_read returned an error code inside ad2s90_read_raw,
the code was ignored and IIO_VAL_INT was returned. This patch makes the
function return the error code returned by spi_read when it fails.
Signed-off-by: Matheus Tavares <matheus.bernardino@usp.br> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Renato Lui Geh [Thu, 1 Nov 2018 14:43:02 +0000 (11:43 -0300)]
staging: iio: ad7780: fix offset read value
Variable val subtracted an uninitialized value on IIO_CHAN_INFO_OFFSET.
This was fixed by assigning the correct value instead.
Signed-off-by: Renato Lui Geh <renatogeh@gmail.com> Acked-by: Alexandru Ardelean <alexandru.ardelean@analog.com> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Nishad Kamdar [Wed, 31 Oct 2018 16:00:36 +0000 (21:30 +0530)]
staging: iio: ad2s1210: Add device tree table.
Add device tree table for matching vendor ID.
Note that as the driver is still heavily in flux and there are some
non obvious aspects to a comprehensive binding, that binding will
be submitted at a later date (before leaving staging!)
Signed-off-by: Nishad Kamdar <nishadkamdar@gmail.com> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Martin Kelly [Fri, 26 Oct 2018 02:38:12 +0000 (19:38 -0700)]
dt-bindings: iio: magn: add LSM9DS1 bindings
Add DT binding documentation for the LSM9DS1 magnetometer.
Signed-off-by: Martin Kelly <martin@martingkelly.com> Reviewed-by: Rob Herring <robh@kernel.org> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Martin Kelly [Fri, 26 Oct 2018 02:38:11 +0000 (19:38 -0700)]
iio:magnetometer: st_magn: add BDU settings
LIS3MDL and LSM9DS1 are missing BDU settings in their register maps, so add
them. I don't have a LIS3MDL sensor to test, but this works correctly on
the LSM9DS1, which has the same register map.
Signed-off-by: Martin Kelly <martin@martingkelly.com> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Martin Kelly [Fri, 26 Oct 2018 02:38:10 +0000 (19:38 -0700)]
iio:magnetometer: st_magn: add LSM9DS1 support
Update the sensor settings to support the LSM9DS1 sensor. Although the
LSM9DS1 accelerometer and gyroscope are coupled together to use the same
FIFO, the magnetometer is separate and can be cleanly supported without
refactoring the existing driver.
Signed-off-by: Martin Kelly <martin@martingkelly.com> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Dan O'Donovan [Thu, 25 Oct 2018 15:35:42 +0000 (16:35 +0100)]
iio: adc128s052: use SPDX-License-Identifier
This updates the ti-adc128s052.c file to use SPDX-License-Identifier
instead of more verbose license text.
Signed-off-by: Dan O'Donovan <dan@emutex.com> Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Nicola Lunghi [Thu, 25 Oct 2018 15:35:41 +0000 (16:35 +0100)]
iio: adc128s052: add ACPI _HID AANT1280
ACPI _HID AANT1280 matches an ADC124S101 present on E3940 SKUs of the UP
Squared board.
Add it to the driver.
Signed-off-by: Nicola Lunghi <nicola.lunghi@emutex.com>
[javier@emutex.com: fix up commit message and one checkpatch warning] Signed-off-by: Javier Arteaga <javier@emutex.com> Signed-off-by: Dan O'Donovan <dan@emutex.com> Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Javier Arteaga [Thu, 25 Oct 2018 15:35:40 +0000 (16:35 +0100)]
iio: adc128s052: Add pin-compatible IDs
The datasheets for ADC122S021 and ADC124S021 list two more
pin-compatible alternatives for each device.
Add their IDs as compatible strings.
Suggested-by: Jonathan Cameron <jic23@kernel.org> Signed-off-by: Javier Arteaga <javier@emutex.com> Signed-off-by: Dan O'Donovan <dan@emutex.com> Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Reviewed-by: Rob Herring <robh@kernel.org> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Nishad Kamdar [Wed, 17 Oct 2018 14:47:20 +0000 (20:17 +0530)]
staging: iio: ad7816: Switch to the gpio descriptor interface
Use the gpiod interface for rdwr_pin, convert_pin and busy_pin
instead of the deprecated old non-descriptor interface.
Note that Phil Reid identified that some of this code would never
have worked. A follow up patch can fix that as this is just
a direct change of interface.
Colin Ian King [Tue, 16 Oct 2018 16:14:18 +0000 (17:14 +0100)]
iio: adc: ina2xx: add in early -EINVAL returns in case statements
Static analysis with CoverityScan is throwing warnings that specific
case statements are missing breaks. Rather than adding breaks, add
return -EINVAL to the specific case statements to clarify the
error return paths. Fix also saves 50 bytes.
Before:
text data bss dec hex filename
21418 4936 128 26482 6772 drivers/iio/adc/ina2xx-adc.o
After:
dec hex filename
21370 4936 128 26434 6742 drivers/iio/adc/ina2xx-adc.o
(gcc 8.2, x86-64)
Detected by CoverityScan, CID#1462408 ("Missing break in switch")
Signed-off-by: Colin Ian King <colin.king@canonical.com> Reviewed-by: Stefan Brüns <stefan.bruens@rwth-aachen.de> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Marcelo Schmitt [Thu, 18 Oct 2018 01:31:47 +0000 (22:31 -0300)]
Staging:iio:adc:ad7606: Match parenthesis alignment
Change close parenthesis alignment to match respective open parenthesis at
iio/drivers/staging/iio/adc/ad7606.c line 379.
This makes the file more compliant with the preferred coding style for the
linux kernel.
Signed-of-by: Marcelo Schmitt <marcelo.schmitt1@gmail.com> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Slawomir Stepien [Sat, 20 Oct 2018 21:04:11 +0000 (23:04 +0200)]
staging: iio: adc: ad7280a: handle error from __ad7280_read32()
Inside __ad7280_read32(), the spi_sync_transfer() can fail with negative
error code. This change will ensure that this error is being passed up
in the call stack, so it can be handled.
Signed-off-by: Slawomir Stepien <sst@poczta.fm> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
iio: dpot-dac: mark expected switch fall-through with text GCC expects.
In preparation to enabling -Wimplicit-fallthrough, mark switch cases
where we are expecting to fall through.
Notice that in this particular case, I replaced "...and fall through."
with the specific string "fall through", which is what GCC is
expecting to find thus supressing this false positive.
As Peter has observed this breaks the nice English flow, which is
less than ideal, but short of teaching GCC to read English, there
isn't a lot that we can do about it.
Addresses-Coverity-ID: 1462408 ("Missing break in switch") Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
The charme of devm_* functions is that you don't need to care about them
in the error path. In this case it is valid to just return NULL which makes
the device fail to probe and then the two gpios and the allocated memory
are freed automatically by the driver core.
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Nishad Kamdar [Mon, 1 Oct 2018 14:46:05 +0000 (20:16 +0530)]
staging: mt7621-mmc: Remove single statement macro msdc_irq_restore()
This patch removes the macro msdc_irq_restore() and replaces its
usage with call to the function called in the macro definition.
Issue found by checkpatch.
Digi does not support it, no one has hardware for it, and no one is
working on it, so let's drop it for now. If anyone wants to pick it
back up, then can revert this patch.
staging: rtl8723bs: Mark ACPI table declaration as used
Clang emits the following warning:
drivers/staging/rtl8723bs/os_dep/sdio_intf.c:25:36: warning: variable
'acpi_ids' is not needed and will not be emitted
[-Wunneeded-internal-declaration]
static const struct acpi_device_id acpi_ids[] = {
^
1 warning generated.
Mark acpi_ids with the attribute __used, which makes it clear to Clang
that we don't want this warning while not inhibiting Clang's dead code
elimination from removing the unreferenced internal symbol when moving
the data to the globally available symbol with MODULE_DEVICE_TABLE.
$ nm -S drivers/staging/rtl8723bs/os_dep/sdio_intf.o | grep acpi 00000000000000000000000000000040 R __mod_acpi__acpi_ids_device_table
Merge tag 'iio-for-4.20b' of git://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio into staging-next
Jonathan writes:
Second set of IIO new device support features and cleanup for the 4.20 cycle.
One merge commit in here to bring in the SPI_CS_WORD flag patches
that are also going via the SPI tree.
There are a few more fixes than normal for a pull targetting the
next merge window. These are all long term issues and as we are late
in the cycle, they can wait.
New device support
* ad7606
- Add support fo the ad7605-4 driver. This driver is still in staging
but is heading in the right direction to graduate, motivated partly
by the requirement for this device support.
* ST VL53L0X ToF ranging sensor
- New minimal driver. Interrupt support to follow.
New features
* SPI_CS_WORD optimization allows long transfers with the chip select
toggled every 16bits. There is a software fallback as well to let
drivers not care about whether the hardware supports it.
* bh1750
- Device tree support and bindings.
* ti-ads7950
- Use the SPI_CS_WORD optmization to save lots of cpu cycles (assuming
the hardware supports it)
Fixes and cleanups
* ad5064
- Fix some long incorrect regulator error handling that preventing
enabling the internal regulator.
* ad7606
- The ad7606 doesn't actually have a 2.5V range and the values provided
for scale have always been wrong. Fix them.
- Drop some wrong kernel-doc (things that don't exist)
- Add missing kernel-doc
* at91-adc
- Fixing missing ack of dataready on sysfs channel reads to avoid spurious
interrupts.
- Fix a wrong channel numbers in triggered_buffer_mode
* hmc5843
- Fix incorrect part number in a comment.
* imx25-gcq
- Fix a device_node leak in an error path.
* meson-saradc
- Drop an unused and pointless define.
- Use of_device_get_match_data instead of opencoding
- Tidy up how meson_sar_adc_param is accessed.
- Rework prior to adding some temperature sensor support.
* tag 'iio-for-4.20b' of git://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio:
iio: ad5064: Fix regulator handling
iio: adc: meson-saradc: use the address attribute from iio_chan_spec
iio: adc: meson-saradc: do not use meson_sar_adc_iio_channels directly
iio: adc: at91: fix wrong channel number in triggered buffer mode
iio: adc: at91: fix acking DRDY irq on simple conversions
iio: adc: meson-saradc: simplify access to meson_sar_adc_param
iio: adc: meson-saradc: use of_device_get_match_data
iio: adc: meson-saradc: remove #define MESON_SAR_ADC_DELTA_10_TS_C_SHIFT
iio: light: bh1750: Add device tree support
dt-bindings: iio: light: bh1750: Add device tree binding documentation
staging:iio:ad7606: Add support for the ad7605-4
iio: proximity: Add driver support for ST's VL53L0X ToF ranging sensor.
staging:iio:ad7606: update structs with doc annotations
iio: magnetometer: hmc5843: Fixed a comment error.
iio: adc: imx25-gcq: Fix leak of device_node in mx25_gcq_setup_cfgs()
iio: adc: ti-ads7950: use SPI_CS_WORD to reduce CPU usage
spi: add software implementation for SPI_CS_WORD
spi: add new SPI_CS_WORD flag
staging:iio:ad7606: Remove incorrect kernel doc annotations
staging:iio:ad7606: fix voltage scales
Hans de Goede [Sat, 29 Sep 2018 12:18:25 +0000 (14:18 +0200)]
staging: vboxvideo: Use more drm_fb_helper functions
Store fbhelper and afb struct directly in vbox_private and use
drm_fb_helper_fbdev_setup to replace vbox_fbdev_init, note we cannot use
drm_fb_helper_fbdev_teardown since we use a private framebuffer for the
fbdev.
And replace vbox_driver_lastclose with drm_fb_helper_lastclose.
Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Hans de Goede [Sat, 29 Sep 2018 12:18:20 +0000 (14:18 +0200)]
staging: vboxvideo: Restore page-flip support
Restore page-flip support now that the atomic conversion is complete.
Since the mode parameter to vbox_crtc_set_base_and_mode() now never
is NULL call drm_atomic_crtc_needs_modeset() to check if we need to
check for input-mapping changes, to avoid doing unnecesarry work on
a flip. And hookup the drm_atomic_helper_page_flip helper to implement
the page_flip callback.
Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Hans de Goede [Sat, 29 Sep 2018 12:18:19 +0000 (14:18 +0200)]
staging: vboxvideo: Atomic phase 3: Switch last bits over to atomic
Now that the state objects are wired up, we can:
1) Move to the final atomic handlers
2) Wire up atomic set_config helper
3) Switch to drm_mode_config_helper_suspend/resume for suspend/resume
4) Enable atomic modesetting ioctl
This is all done in one commit because doing this piecemeal leads to
an intermediate state which triggers WARN_ONs in the atomic code because
e.g. plane->fb is still being set.
Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Hans de Goede [Sat, 29 Sep 2018 12:18:18 +0000 (14:18 +0200)]
staging: vboxvideo: Atomic phase 2: Stop using plane->fb and crtc->*
Once we are fully atomic plane->fb will always be NULL and we also
should not access things like crtc->enabled and crt->[hw]mode.
Now that we've wired up the state object handlers, we always have a
plane_state and crtc_state so change the code referencing plane->fb and
crtc->* to use the data from the plane_state and crt_state instead.
Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Hans de Goede [Sat, 29 Sep 2018 12:18:17 +0000 (14:18 +0200)]
staging: vboxvideo: Atomic phase 2: Wire up state object handlers
Wire up state object handlers for the crtc-s and the planes, call
drm_mode_config_reset() after creating all the crtc-s and encoders and
remove the legacy drm_helper_disable_unused_functions() call.
Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>