Greg Kroah-Hartman [Sun, 15 Aug 2021 06:32:07 +0000 (08:32 +0200)]
Merge tag 'iio-for-5.15a' of https://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio into staging-next
Jonathan writes:
First set of new IIO and counter device support, cleanups and features for 5.15
Usual mix of cleanups and new device support.
Counter
======
Cleanups and refactoring:
* treewide
- Ensure attempts to set invalid modes result in -EINVAL return.
- Rename counter_count_function to counter_function as the middle count
is redundant.
- Standardize error returns when limits are exceeded.
* 104-quad:
- Document the lock.
- Return an error if attempt to set the ceiling value in a mode that
doesn't support it.
* intel-qep
- Drop unused bitops.h include
IIO
===
New device support
* bma255
- Add support fo the bosch,bmc156_accel which oddly only exposes the INT2
interrupt pin and not INT1. Patch set includes enabling use of INT2.
* ingenic_adc
- Add support for JZ4760 and similar and update bindings
- Add support for JZ4760B and update bindings
* rockchip_saradc
- Add support for rk3568 ADC (separate channel array as more channels)
* sgp40 gas sensor used to measure air quality
- New driver including binding and ABI documentation.
Bindings
--------
* Add missing bindings for many DACs where the binding was effectively
implicit due to fallback probe methods in I2C and SPI.
adi,ad5064
adi,ad5360
adi,ad5380
adi,ad5421
adi,ad5449
adi,ad5504
adi,ad5624r
adi,ad5686 / adi,ad5696
adi,ad5761
adi,ad5764
adi,ad5791
adi,ad8801
capella,cm3323 (also add explicit of_device_id table)
microchip,mcp4922
* bosch,bma255
- Interrupt type in example was opposite of what the device expects.
It's possible that a particular board had an inverter, but we
definitely don't want the example to suggest this would be normal.
- Add interrupt-names to allow for cases where only INT2 is connected.
- Sort compatibles
- Merge in very similar bosch,bma180 binding.
New feature
-----------
* Devices only allowed to provide either extended_name or a label for given
channel. If extend_name is used (generally discouraged but can't be
removed as it would be a userspaece ABI change), then the label sysfs
attribute will provide the extended_name. This allows some userspace
parser simplications and hardening.
* hid-sensors-pres
- Add a timestamp channel (either from hardware, or locally filled).
* vcnl3020
- Add periodic sensor mode used to provide IIO events.
Cleanups / minor fixes
----------------------
* core/buffers
- Avoid unnecessary zeroing of bitmaps that are immediately overwritten.
- Move a sanity check earlier to simplify error path.
* Quite a few cases of refactors to use devm_* for all of probe and drop
remove
- adjd_s311
- adxl345
- bma220
- da280
- dmard10
- ds311
- max5481
- max5821
- rfd77402
- tcs3414
- tmp006
* ad5624r
- Fix incorrect handling of a regulator that was preventing use of
internal regulators.
* adjd_s311
- Allocate a buffer as part of iio_priv() structure as maximum size
is small enough, no significant advantage in making it flexible sized.
* bma220
- Make handling of suspend and resume closer to the probe() wrt to the
rather odd interface, that suspend mode is entered by reading a register.
* ep93xx
- Prepare clock before using (part of conversion to CCF)
* fsl-imx25-gcq
- Use local device pointer.
- Adjust handling of platform_get_irq() to not check for 0 as an error.
The function is documented as never returning it.
* hid-sensors
- Use devm_kmemdup() consistently across all drivers to simplify channel
structure allocation management.
* meson-saradc
- Drop BL30 integration on G12A and newer SoCs as not used.
- Whitespace fixes.
* mpu6050
- Add per device type startup times. This avoids an issue with having
to dsicard initial data from gyroscopes when they were still stabilizing.
* rfd77402
- Change from passing private data, to passing i2c_client where only
that is needed, reducing back and forth in pm functions.
* si1145
- Drop pointless continue
* st-sensors
- Cleanup of includes to remove unused and add missing headers that are used.
- Use some devm functions to simplify probe() and remove() - gets us part way
towards a fully device managed driver.
* sx9310
- Switch from of to generic properties to enable ACPI bindings.
* vcnl3020
- Add DMA safe buffer for bulk transfers.
- Drop use of iio_claim_direct() in a driver that has no mode changes.
A local lock is more appropriate.
* tag 'iio-for-5.15a' of https://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio: (77 commits)
counter: 104-quad-8: Describe member 'lock' in 'quad8'
iio: hid-sensor-press: Add timestamp channel
counter: Rename counter_count_function to counter_function
counter: Rename counter_signal_value to counter_signal_level
counter: Standardize to ERANGE for limit exceeded errors
counter: Return error code on invalid modes
counter: 104-quad-8: Return error when invalid mode during ceiling_write
iio: accel: bmc150: Add support for BMC156
iio: accel: bmc150: Make it possible to configure INT2 instead of INT1
dt-bindings: iio: accel: bma255: Add bosch,bmc156_accel
dt-bindings: iio: accel: bma255: Add interrupt-names
iio: light: cm3323: Add of_device_id table
dt-bindings: Add bindings for Capella cm3323 Ambient Light Sensor
iio: chemical: Add driver support for sgp40
dt-bindings: iio: chemical: Add trivial DT binding for sgp40
iio: ep93xx: Prepare clock before using it
iio: adc: fsl-imx25-gcq: adjust irq check to match docs and simplify code
iio: dac: max5821: convert device register to device managed function
dt-bindings: iio/adc: ingenic: add the JZ4760(B) socs to the sadc Documentation
iio/adc: ingenic: add JZ4760B support to the sadc driver
...
Nathan Chancellor [Thu, 12 Aug 2021 20:40:27 +0000 (13:40 -0700)]
staging: r8188eu: Reorganize error handling in rtw_drv_init()
After commit 987219ad34a6 ("staging: r8188eu: remove lines from Makefile
that silence build warnings"), clang warns:
drivers/staging/r8188eu/os_dep/usb_intf.c:726:6: warning: variable
'status' is used uninitialized whenever 'if' condition is true
[-Wsometimes-uninitialized]
if (!if1) {
^~~~
drivers/staging/r8188eu/os_dep/usb_intf.c:741:6: note: uninitialized use
occurs here
if (status != _SUCCESS)
^~~~~~
drivers/staging/r8188eu/os_dep/usb_intf.c:726:2: note: remove the 'if'
if its condition is always false
if (!if1) {
^~~~~~~~~~~
drivers/staging/r8188eu/os_dep/usb_intf.c:714:12: note: initialize the
variable 'status' to silence this warning
int status;
^
= 0
1 warning generated.
status is not initialized if the call to usb_dvobj_init() or
rtw_usb_if1_init() fails.
Looking at the error function as a whole, the error handling is odd
compared to the rest of the kernel, which prefers to set error codes on
goto paths, rather than a global "status" variable which determines the
error code at the end of the function and function calls in the case of
error.
Rearrange the error handling of this function to bring it more inline
with how the kernel does it in most cases, which helps readability.
The call to rtw_usb_if1_deinit() is eliminated because it is not
possible to ever hit it; if rtw_usb_if1_init() fails, the goto call
jumps over the call to rtw_usb_if1_deinit() and in the success case,
status is set to _SUCCESS.
Acked-by: Phillip Potter <phil@philpotter.co.uk> Acked-by: Fabio M. De Francesco <fmdefrancesco@gmail.com> Signed-off-by: Nathan Chancellor <nathan@kernel.org> Link: https://lore.kernel.org/r/20210812204027.338872-4-nathan@kernel.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Nathan Chancellor [Thu, 12 Aug 2021 20:40:26 +0000 (13:40 -0700)]
staging: r8188eu: Remove uninitialized use of ether_type in portctrl()
After commit 987219ad34a6 ("staging: r8188eu: remove lines from Makefile
that silence build warnings"), clang warns:
drivers/staging/r8188eu/core/rtw_recv.c:499:8: warning: variable
'ether_type' is uninitialized when used here [-Wuninitialized]
if (ether_type == eapol_type)
^~~~~~~~~~
drivers/staging/r8188eu/core/rtw_recv.c:458:16: note: initialize the
variable 'ether_type' to silence this warning
u16 ether_type;
^
= 0
1 warning generated.
This if statement sets the exact same assignment as above so just remove
it.
Nathan Chancellor [Thu, 12 Aug 2021 20:40:25 +0000 (13:40 -0700)]
staging: r8188eu: Remove unused static inline functions in rtw_recv.h
After commit 987219ad34a6 ("staging: r8188eu: remove lines from Makefile
that silence build warnings"), clang warns several times:
In file included from
drivers/staging/r8188eu/os_dep/../include/drv_types.h:22:
drivers/staging/r8188eu/os_dep/../include/rtw_recv.h:395:9: warning:
variable 'buf_desc' is uninitialized when used here [-Wuninitialized]
return buf_desc;
^~~~~~~~
drivers/staging/r8188eu/os_dep/../include/rtw_recv.h:391:25: note:
initialize the variable 'buf_desc' to silence this warning
unsigned char *buf_desc;
^
= NULL
drivers/staging/r8188eu/os_dep/../include/rtw_recv.h:412:52: warning:
variable 'buf_star' is uninitialized when used here [-Wuninitialized]
precv_frame = rxmem_to_recvframe((unsigned char *)buf_star);
^~~~~~~~
drivers/staging/r8188eu/os_dep/../include/rtw_recv.h:410:14: note:
initialize the variable 'buf_star' to silence this warning
u8 *buf_star;
^
= NULL
2 warnings generated.
The functions that these warnings come from are not used or are called
from functions that are not used so just remove them to remove the
warnings.
Dan Carpenter [Thu, 12 Aug 2021 06:58:52 +0000 (09:58 +0300)]
staging: r8188eu: scheduling in atomic in rtw_createbss_cmd()
A couple of the callers are holding spinlocks so this allocation has to
be atomic. One spinlock is in rtw_set_802_11_connect() but the simpler
spinlock to review is when this function is called from
rtw_surveydone_event_callback().
Fixes: 15865124feed ("staging: r8188eu: introduce new core dir for RTL8188eu driver") Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Link: https://lore.kernel.org/r/20210812065852.GB31863@kili Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Martin Kaiser [Wed, 11 Aug 2021 20:14:49 +0000 (22:14 +0200)]
staging: r8188eu: use proper way to build a module
It seems that for now, we can only build this driver as a module.
Use the same mechanism as other drivers (such as rtl8723bs or the
deprecated rtl8188eu) to enforce building as a module, i.e. depend on m
in Kconfig instead of setting CONFIG_R8188EU = m in the Makefile.
If we set CONFIG_R8188EU in the Makefile, this setting will not be visible
in .config.
Tuo Li [Wed, 11 Aug 2021 03:11:35 +0000 (20:11 -0700)]
staging: rtl8192e: rtl_core: Fix possible null-pointer dereference in _rtl92e_pci_disconnect()
The variable dev is checked in:
if (dev)
This indicates that it can be NULL. If so, a null-pointer dereference will
occur:
priv = rtllib_priv(dev);
However, the value of priv is not used in the remaining part of this
function. Thus the else-branch can be removed to fix this posible
null-pointer dereference.
Reported-by: TOTE Robot <oslab@tsinghua.edu.cn> Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Tuo Li <islituo@gmail.com> Link: https://lore.kernel.org/r/20210811031135.4110-1-islituo@gmail.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Nathan Chancellor [Wed, 11 Aug 2021 00:55:05 +0000 (17:55 -0700)]
staging: r8188eu: os_dep: Hoist vmalloc.h include into osdep_service.h
After commit 71f09c5ae9d2 ("staging: r8188eu: Remove wrapper around
vfree"), the driver fails to build on Hexagon due to an implicit
declaration in several different files:
drivers/staging/r8188eu/core/rtw_mlme.c:129:3: error: implicit
declaration of function 'vfree'
[-Werror,-Wimplicit-function-declaration]
vfree(pmlmepriv->free_bss_buf);
^
1 error generated.
Previously, vfree() was only called in osdep_service.c, which includes
vmalloc.h for vmalloc() and vfree(). Now, the driver relies on vfree()
getting implicitly included from another file.
Hoist the vmalloc.h include from osdep_service.c to osdep_service.h so
that the driver continues to build fine on all architectures.
Yang Yingliang [Tue, 10 Aug 2021 12:53:14 +0000 (20:53 +0800)]
staging: r8188eu: Use GFP_ATOMIC under spin lock
A spin lock is taken in __nat25_db_network_insert() and
update_BCNTIM() is called under spin lock so we should
use GFP_ATOMIC in both place.
Fixes: 15865124feed ("staging: r8188eu: introduce new core dir for RTL8188eu driver") Reported-by: Hulk Robot <hulkci@huawei.com> Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com> Acked-by: Larry Finger <Larry.Finger@lwfinger.net> Signed-off-by: Yang Yingliang <yangyingliang@huawei.com> Link: https://lore.kernel.org/r/20210810125314.2182112-1-yangyingliang@huawei.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Larry Finger [Tue, 10 Aug 2021 18:05:11 +0000 (13:05 -0500)]
staging: r8188eu: Replace BITn with BIT(n)
The driver uses BITn instead of BIT(n). All such usage is converted.
Note that this patch does not address any warnings that checkpatch
will find. These include missing space around operators and lines
that are too long. These problems will be addressed in a separate
patch.
Phillip Potter [Tue, 10 Aug 2021 23:50:47 +0000 (00:50 +0100)]
staging: r8188eu: remove lines from Makefile that silence build warnings
Remove the several lines from the Makefile that append EXTRA_CFLAGS options
to silence build warnings about unused variables, unused functions and such
like. This will enable cleanup of missed warnings, and easier spotting
of future such problems.
Phillip Potter [Tue, 10 Aug 2021 23:50:40 +0000 (00:50 +0100)]
staging: r8188eu: remove unused functions from os_dep/ioctl_linux.c
Remove unused functions that are now no longer called as a result of the
removal of rtw_ioctl in a previous patch. This includes functions not
directly called from rtw_ioctl, but anything in that specific
call-chain.
Phillip Potter [Tue, 10 Aug 2021 07:45:04 +0000 (08:45 +0100)]
staging: r8188eu: remove rtw_ioctl function
Remove rtw_ioctl function from os_dep/ioctl_linux.c, its declaration
in include/osdep_intf.h, and finally its inclusion as the value of the
.ndo_do_ioctl member of struct net_device_ops rtw_netdev_ops in
os_dep/os_intfs.c.
The e-mail from Arnd Bergmann at:
https://lore.kernel.org/linux-next/CAK8P3a0WRMNmBmBDerZ0nWPdFZKALnxrj-uUFBkTP-MOtv48vg@mail.gmail.com
explains the justification for this approach. Essentially, changes from
net-next make the existing function and its use of SIOCDEVPRIVATE ioctls
unworkable without changes.
Functions called from rtw_ioctl that are now no longer accessible will
be cleaned up in further patches. Additionally, once these changes have
made their way downstream to the staging branch, we can modify and
reconnect rtw_android_priv_cmd via ndo_siocdevprivate in struct
net_device_ops.
Martin Kaiser [Sat, 7 Aug 2021 15:36:34 +0000 (17:36 +0200)]
staging: r8188eu: use IW_HANDLER to declare wext handlers
Use the IW_HANDLER macro to declare the handler functions for
wext ioctls. We don't have to skip unused ioctl numbers manually.
The same modification was applied to the deprecated rtl8188eu driver in
commit af249fce390f ("staging: rtl8188eu: use IW_HANDLER to declare wext
handlers").
Martin Kaiser [Sat, 7 Aug 2021 15:36:28 +0000 (17:36 +0200)]
staging: r8188eu: remove empty function
With the RT_TRACE print removed, the rtw_wx_set_freq function is now
empty.
This function should be removed. At the moment, the setfreq ioctl
returns success to the caller although the frequency wasn't set.
It makes more sense to inform callers that this driver does not
support setfreq.
Fabio Aiuto [Sat, 7 Aug 2021 09:48:07 +0000 (11:48 +0200)]
staging: rtl8723bs: remove rf type branching (fourth patch)
remove all function calls to rtw_get_hw_reg made to
read HW_VAR_RF_TYPE and get value of rt_type, which
is always 1T1R. Clean up code on removal sites,
keeping 1T1R code unconditionally.
Fabio Aiuto [Sat, 7 Aug 2021 09:48:04 +0000 (11:48 +0200)]
staging: rtl8723bs: remove rf type branching (first patch)
remove rf type branching, for the baseband works only on
1T1R rf type, so just keep code branches related to 1T1R.
Remove RFType from hal_version struct, and all
related code.
Fabio Aiuto [Sat, 7 Aug 2021 09:48:01 +0000 (11:48 +0200)]
staging: rtl8723bs: clean driver from unused RF paths
rtl8723bs support only two rf paths (A and B), remove all
the others (C, D, BC, ...) as they are unused. Keep
just one enum selecting rf path, remove unused macro
indicating max rf path number, add an item in rf_path
enum for this pourpose.
Fabio Aiuto [Sat, 7 Aug 2021 09:47:55 +0000 (11:47 +0200)]
staging: rtl8723bs: do some code cleaning in modified function
do some code cleaning after changes of previous commit.
Fixed comments, camel case names, variable naming conventions;
kept function names without chip series numbers (this is
just code for 8723), fixed indentations, blank lines and
other minor stuff.
Larry Finger [Fri, 6 Aug 2021 21:32:35 +0000 (16:32 -0500)]
staging: r8188eu: Fix potential memory leak or NULL dereference
In routine c2h_wk_callback(() following a kmalloc() call, the
error recovery is flawed. If the kmalloc() returns a pointer
that is not NULL, and the following c2h_evt_read() fails, the
code will leak that buffer. If the kmalloc() fails, a NULL
dereference will occur in the following code.
In preparation for FORTIFY_SOURCE performing compile-time and run-time
field bounds checking for memcpy(), memmove(), and memset(), avoid
intentionally writing across neighboring fields.
Adjust memcpy() destination to be the named structure itself, rather than
the first member, allowing memcpy() to correctly reason about the size.
"objdump -d" shows no object code changes.
Cc: Ross Schmidt <ross.schm.dev@gmail.com> Cc: Joe Perches <joe@perches.com> Cc: devel@driverdev.osuosl.org Signed-off-by: Kees Cook <keescook@chromium.org> Link: https://lore.kernel.org/r/20210806201422.2871679-1-keescook@chromium.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
In preparation for FORTIFY_SOURCE performing compile-time and run-time
field bounds checking for memcpy(), memmove(), and memset(), avoid
intentionally writing across neighboring fields.
Split the 3 addr memcpy() into 3 memcpy() calls so the compiler doesn't
think an overflowing memcpy() happens against the addr1 field (the
neighbors are intended to be copied as well).
ieee80211_read_qos_param_element() copies a struct ieee80211_info_element
into a struct ieee80211_qos_information_element, but is actually wanting to
copy into the larger struct ieee80211_qos_parameter_info (the contents of
ac_params_record[] is later examined). Refactor the routine to perform
centralized checks, and copy the entire contents directly (since the id
and len members match the elementID and length members):
In preparation for FORTIFY_SOURCE performing compile-time and run-time
field bounds checking for memcpy(), memmove(), and memset(), avoid
intentionally writing across neighboring fields.
Split the 3 addr memcpy() into 3 memcpy() calls so the compiler doesn't
think an overflowing memcpy() happens against the addr1 field (the
neighbors are intended to be copied as well).
rtllib_read_qos_param_element() copies a struct rtllib_info_element
into a struct rtllib_qos_information_element, but is actually wanting to
copy into the larger struct rtllib_qos_parameter_info (the contents of
ac_params_record[] is later examined). Refactor the routine to perform
centralized checks, and copy the entire contents directly (since the id
and len members match the elementID and length members):
Ojaswin Mujoo [Mon, 2 Aug 2021 17:42:11 +0000 (23:12 +0530)]
staging: vchiq: Add details to Kconfig help texts
Add some details to the Kconfig definitions of $CONFIG_VCHIQ_CDEV and
$CONFIG_BCM2835_VCHIQ to help make the motive behind the configs a bit
more clear.
Ojaswin Mujoo [Mon, 2 Aug 2021 17:42:10 +0000 (23:12 +0530)]
staging: vchiq: Set $CONFIG_BCM2835_VCHIQ to imply $CONFIG_VCHIQ_CDEV
Before $CONFIG_VCHIQ_CDEV was defined, the vchiq cdev used to be created
unconditionally when CONFIG_BCM2835_VCHIQ=y. When an earlier commit
introduced the new config, its default behavior was set to disabled,
which might surprise some unsuspecting users. Hence, modify
CONFIG_BCM2835_VCHIQ to imply CONFIG_VCHIQ_CDEV
Ye Xiang [Sat, 31 Jul 2021 03:25:56 +0000 (11:25 +0800)]
iio: hid-sensor-press: Add timestamp channel
Each sample has a timestamp field with this change. This timestamp may
be from the sensor hub when present or local kernel timestamp. The
unit of timestamp is nanosecond.
William Breathitt Gray [Tue, 3 Aug 2021 12:06:15 +0000 (21:06 +0900)]
counter: Rename counter_count_function to counter_function
The phrase "Counter Count function" is verbose and unintentionally
implies that function is a Count extension. This patch adjusts the
Counter subsystem code to use the more direct "Counter function" phrase
to make the intent of this code clearer.
Cc: Jarkko Nikula <jarkko.nikula@linux.intel.com> Cc: Patrick Havelange <patrick.havelange@essensium.com> Cc: Oleksij Rempel <o.rempel@pengutronix.de> Cc: Kamel Bouhara <kamel.bouhara@bootlin.com> Cc: Maxime Coquelin <mcoquelin.stm32@gmail.com> Cc: Alexandre Torgue <alexandre.torgue@st.com> Cc: David Lechner <david@lechnology.com> Acked-by: Syed Nayyar Waris <syednwaris@gmail.com> Reviewed-by: Fabrice Gasnier <fabrice.gasnier@foss.st.com> Signed-off-by: William Breathitt Gray <vilhelm.gray@gmail.com> Link: https://lore.kernel.org/r/8268c54d6f42075a19bb08151a37831e22652499.1627990337.git.vilhelm.gray@gmail.com Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
William Breathitt Gray [Tue, 3 Aug 2021 12:06:12 +0000 (21:06 +0900)]
counter: Return error code on invalid modes
Only a select set of modes (function, action, etc.) are valid for a
given device configuration. This patch ensures that invalid modes result
in a return -EINVAL. Such a situation should never occur in reality, but
it's good to define a default switch case for the sake of making the
intent of the code clear.
Cc: Kamel Bouhara <kamel.bouhara@bootlin.com> Cc: Maxime Coquelin <mcoquelin.stm32@gmail.com> Cc: Alexandre Torgue <alexandre.torgue@st.com> Acked-by: David Lechner <david@lechnology.com> Acked-by: Syed Nayyar Waris <syednwaris@gmail.com> Reviewed-by: Fabrice Gasnier <fabrice.gasnier@foss.st.com> Signed-off-by: William Breathitt Gray <vilhelm.gray@gmail.com> Link: https://lore.kernel.org/r/7af82d4e39610da11edce0ee370285fe1cb1eac8.1627990337.git.vilhelm.gray@gmail.com Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
William Breathitt Gray [Tue, 3 Aug 2021 12:06:11 +0000 (21:06 +0900)]
counter: 104-quad-8: Return error when invalid mode during ceiling_write
The 104-QUAD-8 only has two count modes where a ceiling value makes
sense: Range Limit and Modulo-N. Outside of these two modes, setting a
ceiling value is an invalid operation -- so let's report it as such by
returning -EINVAL.