Uwe Kleine-König [Thu, 30 Jan 2020 13:15:48 +0000 (14:15 +0100)]
iio: dac: ltc2632: drop some duplicated data
The channel data for ltc2632l12 and ltc2632h12 are identical. So there
is no gain in using two different (but identical) channel descriptions.
The only side effect of this change is some memory savings.
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Andreas Klinger [Mon, 20 Jan 2020 16:45:41 +0000 (17:45 +0100)]
iio: srf04: add power management feature
Add suspend and resume operations for being used by optional power
management.
The suspend function is switching off an GPIO which can be used by the
hardware to switch power off. The resume function is switching the GPIO
on and sleeps an adjustable time to give the device a chance to be up
and running.
If activated the driver gets into autosuspend after some time of
inactivity.
Suggested-by: Franz Parzer <rpi-receiver@htl-steyr.ac.at> Signed-off-by: Andreas Klinger <ak@it-klinger.de> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Andreas Klinger [Mon, 20 Jan 2020 16:44:55 +0000 (17:44 +0100)]
dt-bindings: devantech-srf04.yaml: add pm feature
Add GPIO line and startup time for usage of power management
Reviewed-by: Rob Herring <robh@kernel.org> Signed-off-by: Andreas Klinger <ak@it-klinger.de> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
A null pointer deference on pdata can occur if the allocation of
pdata fails. Fix this by adding a null pointer check and handle
the -ENOMEM failure in the caller.
Addresses-Coverity: ("Dereference null return value") Fixes: 3ce85cc4fbb7 ("iio: st_sensors: get platform data from device tree") Signed-off-by: Colin Ian King <colin.king@canonical.com> Reviewed-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
This patch adds the LOW_PASS_FILTER_3DB_FREQUENCY attribute
in iio_chan_spec for each channel. The used filters are sinc3
or sinc4. The filter type with the highest output data rate
is used when setting a low pass frequency in the channel's sysfs.
Signed-off-by: Alexandru Tachici <alexandru.tachici@analog.com> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Colin Ian King [Thu, 23 Jan 2020 09:19:54 +0000 (09:19 +0000)]
iio: ad5755: fix spelling mistake "to" -> "too" and grammar plus formatting
There is a spelling mistake and grammar mistake in a dev_err
message. Fix it.
Also include Joe Perches' additional suggestions around:
* Missing newlines
* Excess braces
* Odd indentation
* Some grammar
Signed-off-by: Colin Ian King <colin.king@canonical.com> Reviewed-by: Alexandru Ardelean <alexandru.ardelean@analog.com> Suggested-by: Joe Perches <joe@perches.com> # Additional cleanups etc. Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Linus Walleij [Sun, 26 Jan 2020 15:05:48 +0000 (16:05 +0100)]
iio: light: Add a driver for Sharp GP2AP002x00F
This driver handles two different Sharp sensors that have been
proposed for merging to the mainline kernel over the years, and
already has a limited proximity-only driver in the input
subsystem.
These components are completely different from the confusingly
similarly named Sharp GP2AP020A00F, for which we have a driver
in drivers/iio/light/gp2ap020a00f.c
The two components GP2AP002A00F and GP2AP002S00F are
distinctively different but similar: they share the same set of
registers but differ slightly in the I2C protocol.
Instead of the approach by the previous input driver, we create
a combined IIO proximity and light sensor driver.
The plan is to merge this driver and delete the input driver.
The pieces for the driver are picked all over the place after
researching and grepping through a few different vendor trees
and driver submissions.
We merge it under the light sensors because:
- It has similarities with the Capella CM3605 light sensor and
proximity driver which is there.
- It is related to the GP2AP020A00F driver which is also there.
This driver was tested with the Samsung GT-S7710 mobile phone
which has the GP2AP002S00F proximity sensor mounted.
The suspend/resume cycle will disable the interrupt from the
sensor. If someone would desire to use this interrupt for
wakeup, the driver will need modifications.
Cc: Stephan Gerhold <stephan@gerhold.net> Cc: Minkyu Kang <mk7.kang@samsung.com> Cc: Paweł Chmiel <pawel.mikolaj.chmiel@gmail.com> Cc: Jonathan Bakker <xc-racer2@live.ca> Cc: Oskar Andero <oskar.andero@gmail.com> Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com> Tested-by: Jonathan Bakker <xc-racer2@live.ca> Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Staging: remove wusbcore and UWB from the kernel tree.
It's been over 6 months, and no one has noticed that these drivers are
deleted, probably because no one actually has this hardware. As no one
has volunteered to maintain the code, let's drop it for good.
staging: vc04_services: don't increment service refcount when it's not needed
There are a few places where a service's reference count is incremented,
something quick is done, and the refcount is dropped. This can be made
a little simpler/faster by not grabbing a reference in these cases.
staging: vc04_services: use kref + RCU to reference count services
Currently reference counts are implemented by locking service_spinlock
and then incrementing the service's ->ref_count field, calling
kfree() when the last reference has been dropped. But at the same
time, there's code in multiple places that dereferences pointers
to services without having a reference, so there could be a race there.
It should be possible to avoid taking any lock in unlock_service()
or service_release() because we are setting a single array element
to NULL, and on service creation, a mutex is locked before looking
for a NULL spot to put the new service in.
Using a struct kref and RCU-delaying the freeing of services fixes
this race condition while still making it possible to skip
grabbing a reference in many places. Also it avoids the need to
acquire a single spinlock when e.g. taking a reference on
state->services[i] when somebody else is in the middle of taking
a reference on state->services[j].
Kaaira Gupta [Wed, 12 Feb 2020 17:58:26 +0000 (23:28 +0530)]
staging: gasket: unify multi-line string
Fix three checkpatch.pl warnings of 'quoted string split across lines'
in gasket_core.c by merging the strings in one line.
Though some strings
are over 80 characters long, fixing this warning is necessary to ease
grep-ing the source for printk.
staging: greybus: Replace zero-length array with flexible-array member
The current codebase makes use of the zero-length array language
extension to the C90 standard, but the preferred mechanism to declare
variable-length types such as these ones is a flexible array member[1][2],
introduced in C99:
struct foo {
int stuff;
struct boo array[];
};
By making use of the mechanism above, we will get a compiler warning
in case the flexible array does not occur last in the structure, which
will help us prevent some kind of undefined behavior bugs from being
inadvertenly introduced[3] to the codebase from now on.
staging: unisys: visorinput: Replace zero-length array with flexible-array member
The current codebase makes use of the zero-length array language
extension to the C90 standard, but the preferred mechanism to declare
variable-length types such as these ones is a flexible array member[1][2],
introduced in C99:
struct foo {
int stuff;
struct boo array[];
};
By making use of the mechanism above, we will get a compiler warning
in case the flexible array does not occur last in the structure, which
will help us prevent some kind of undefined behavior bugs from being
inadvertenly introduced[3] to the codebase from now on.
Ajay Singh [Tue, 11 Feb 2020 09:57:05 +0000 (09:57 +0000)]
staging: wilc1000: remove use of vendor specific IE for p2p handling
Remove the use of vendor specific IE parameter to decide
p2p_GO/p2p_Client roles between two 'wilc' device. Previously p2p group
formation between two 'wilc' device make use of vendor IE for roles
decision. The role is decided based on the 'go_intent' value.
Michał Mirosław [Tue, 11 Feb 2020 10:35:02 +0000 (11:35 +0100)]
staging: wfx: add proper "compatible" string
Add "compatible" string matching "vendor,chip" template and proper
GPIO flags handling. Keep support for old name and reset polarity
for older devicetrees.
Michał Mirosław [Tue, 11 Feb 2020 10:35:01 +0000 (11:35 +0100)]
staging: wfx: annotate nested gc_list vs tx queue locking
Lockdep is complaining about recursive locking, because it can't make
a difference between locked skb_queues. Annotate nested locks and avoid
double bh_disable/enable.
[...]
insmod/815 is trying to acquire lock: cb7d6418 (&(&list->lock)->rlock){+...}, at: wfx_tx_queues_clear+0xfc/0x198 [wfx]
but task is already holding lock: cb7d61f4 (&(&list->lock)->rlock){+...}, at: wfx_tx_queues_clear+0xa0/0x198 [wfx]
Michał Mirosław [Tue, 11 Feb 2020 10:35:01 +0000 (11:35 +0100)]
staging: wfx: fix init/remove vs IRQ race
Current code races in init/exit with interrupt handlers. This is noticed
by the warning below. Fix it by using devres for ordering allocations and
IRQ de/registration.
WARNING: CPU: 0 PID: 827 at drivers/staging/wfx/bus_spi.c:142 wfx_spi_irq_handler+0x5c/0x64 [wfx]
race condition in driver init/deinit
YueHaibing [Tue, 11 Feb 2020 14:03:34 +0000 (22:03 +0800)]
staging: wfx: remove set but not used variable 'tx_priv'
drivers/staging/wfx/queue.c: In function wfx_tx_queues_get:
drivers/staging/wfx/queue.c:484:28: warning: variable tx_priv set but not used [-Wunused-but-set-variable]
commit 2e57865e79cf ("staging: wfx: pspoll_mask make no sense")
left behind this unused variable.
Rename the local variable pnetdev in rtw_alloc_etherdev_with_old_priv
to avoid hungarian notation and clear the last checkpatch warning in
the file osdep_service.c.
rtl8188eu/os_dep/osdep_service.c:32: WARNING: line over 80 characters
Ian Abbott [Fri, 7 Feb 2020 15:14:00 +0000 (15:14 +0000)]
staging: comedi: ni_pcimio: add routes for NI PCIe-6251 and PCIe-6259
We do not currently provide routing information for NI PCIe-6251 and
PCI-6259 boards, but they are functionally identical to the PCI-6251 and
PCI-6259 boards and can share their routing information. (This has been
confirmed for the PCIe-6251 by Éric Piel, using the "NI MAX" software
for Windows. It is hoped that it applies to PCIe-6259, but has not yet
been checked due to lack of hardware.) Initialize the `alt_route_name`
member of the board information for PCIe-6251 and PCIe-6259 to allow
them to make use of the routing information provided for PCI-6251 and
PCI-6259 respectively.
Ian Abbott [Fri, 7 Feb 2020 15:13:59 +0000 (15:13 +0000)]
staging: comedi: ni_mio_common: Allow alternate board name for routes
We do not have or do not provide routing information for all supported
boards. Some of the boards for which we do not provide routing
information actually have routes that are identical to a similar board
for which we already provide routing information.
To allow boards to share identical routing information, add an
`alt_route_name` member to `struct ni_board_struct`. This will be
initialized to `NULL` for all boards except those that will use make use
of the identical routing information that has been provided for a
similar board, in which case it will name that board. Pass the
`alt_route_name` member value to `ni_assign_device_routes()` as the
`alt_board_name` parameter, which it will use if no routing information
could be found for the actual board name.
Ian Abbott [Fri, 7 Feb 2020 15:13:58 +0000 (15:13 +0000)]
staging: comedi: ni_routes: Allow alternate board name for routes
We do not have or provide routing information available for all
supported boards. Some of the boards for which we do not currently
provide routing information actually have identical routes to a similar
board for which we do provide routing information. To avoid having to
provide duplicate routing information, add an "alternate board name"
parameter (possibly `NULl`) to `ni_assign_device_routes()` and
`ni_find_device_routes()`. If the routing information cannot be found
for the actual board name, try finding it using the alternate board
name.
Split out the loops in `ni_find_valid_routes()` into separate functions:
* ni_find_route_values(device_family) to find the list of route values
for a device family (e.g "ni-mseries"); and
* ni_find_valid_routes(board_name) to find the set of valid routes for a
board name.
The functions above return `NULL` if the information is not found (as we
do not currently have the routing information available for all
supported boards).
Nishad Kamdar [Sat, 8 Feb 2020 08:36:25 +0000 (14:06 +0530)]
staging: pi433: Use the correct style for SPDX License Identifier
This patch corrects the SPDX License Identifier style in
header files related to pi433 radio module drivers.
It assigns explicit block comment to the SPDX License Identifier.
Changes made by using a script provided by Joe Perches here:
https://lkml.org/lkml/2019/2/7/46.
Remove unnecessary RETURN label and use return directly instead. Since
the return type of rtw_free_netdev() is void, remove the return at the
end of the function.
staging: vc04_services: Get rid of the rest of suspend/resume state handling
The only remaining state doesn't provide any information anymore nor the
completion that depends on it, which is set to complete_all() before any
user may wait on it.
Nishad Kamdar [Sat, 1 Feb 2020 14:28:08 +0000 (19:58 +0530)]
staging: netlogic: Use the correct style for SPDX License Identifier
This patch corrects the SPDX License Identifier style in
header files related to Netlogic network devices.
It assigns explicit block comment to the SPDX License Identifier.
Changes made by using a script provided by Joe Perches here:
https://lkml.org/lkml/2019/2/7/46.
Tetsuhiro Kohada [Thu, 30 Jan 2020 07:06:13 +0000 (16:06 +0900)]
staging: exfat: remove 'vol_type' variable.
remove 'vol_type' variable.
The following issues are described in exfat's TODO.
> clean up the remaining vol_type checks, which are of two types:
> some are ?: operators with magic numbers, and the rest are places
> where we're doing stuff with '.' and '..'.
The vol_type variable is always set to 'EXFAT'.
The variable checks are unnessesary, so remove unused code.
Signed-off-by: Tetsuhiro Kohada <Kohada.Tetsuhiro@dc.MitsubishiElectric.co.jp> Reviewed-by: Mori Takahiro <Mori.Takahiro@ab.MitsubishiElectric.co.jp> Suggested-by: Dan Carpenter <dan.carpenter@oracle.com> Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com> Link: https://lore.kernel.org/r/20200130070614.11999-1-Kohada.Tetsuhiro@dc.MitsubishiElectric.co.jp Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Refactor SPI commands handling by making use of 'struct' for data
exchange and extraction of information flow between host and firmware.
The SPI read/write commands are now handled in separate function instead
of using a single function to process all types of command.
The use of 'struct' helped to make the code self explanatory. These
points were discussed and suggested during code review [1].
Linus Torvalds [Mon, 10 Feb 2020 00:05:50 +0000 (16:05 -0800)]
Merge tag 'kbuild-v5.6-2' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild
Pull more Kbuild updates from Masahiro Yamada:
- fix randconfig to generate a sane .config
- rename hostprogs-y / always to hostprogs / always-y, which are more
natual syntax.
- optimize scripts/kallsyms
- fix yes2modconfig and mod2yesconfig
- make multiple directory targets ('make foo/ bar/') work
* tag 'kbuild-v5.6-2' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild:
kbuild: make multiple directory targets work
kconfig: Invalidate all symbols after changing to y or m.
kallsyms: fix type of kallsyms_token_table[]
scripts/kallsyms: change table to store (strcut sym_entry *)
scripts/kallsyms: rename local variables in read_symbol()
kbuild: rename hostprogs-y/always to hostprogs/always-y
kbuild: fix the document to use extra-y for vmlinux.lds
kconfig: fix broken dependency in randconfig-generated .config
Linus Torvalds [Sun, 9 Feb 2020 23:51:46 +0000 (15:51 -0800)]
Merge tag 'zonefs-5.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/dlemoal/zonefs
Pull new zonefs file system from Damien Le Moal:
"Zonefs is a very simple file system exposing each zone of a zoned
block device as a file.
Unlike a regular file system with native zoned block device support
(e.g. f2fs or the on-going btrfs effort), zonefs does not hide the
sequential write constraint of zoned block devices to the user. As a
result, zonefs is not a POSIX compliant file system. Its goal is to
simplify the implementation of zoned block devices support in
applications by replacing raw block device file accesses with a richer
file based API, avoiding relying on direct block device file ioctls
which may be more obscure to developers.
One example of this approach is the implementation of LSM
(log-structured merge) tree structures (such as used in RocksDB and
LevelDB) on zoned block devices by allowing SSTables to be stored in a
zone file similarly to a regular file system rather than as a range of
sectors of a zoned device. The introduction of the higher level
construct "one file is one zone" can help reducing the amount of
changes needed in the application while at the same time allowing the
use of zoned block devices with various programming languages other
than C.
Zonefs IO management implementation uses the new iomap generic code.
Zonefs has been successfully tested using a functional test suite
(available with zonefs userland format tool on github) and a prototype
implementation of LevelDB on top of zonefs"
* tag 'zonefs-5.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/dlemoal/zonefs:
zonefs: Add documentation
fs: New zonefs file system