* [PATCH 2/4] Share USB device devicetree node with child HID device
From: Danny Kaehn @ 2023-01-28 20:26 UTC (permalink / raw)
To: robh+dt, krzysztof.kozlowski+dt, jikos, benjamin.tissoires
Cc: devicetree, linux-input, ethan.twardy
In-Reply-To: <20230128202622.12676-1-kaehndan@gmail.com>
USB HID core now shares its devicetree of_node with its child HID device.
Since there can only be one HID device on a USB interface, it is redundant
to specify a hid node under the USB device (and further, binding this way
isn't currently possible, as hid_driver does not support of_match_table).
Signed-off-by: Danny Kaehn <kaehndan@gmail.com>
---
drivers/hid/usbhid/hid-core.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c
index be4c731aaa65..b6c968af258f 100644
--- a/drivers/hid/usbhid/hid-core.c
+++ b/drivers/hid/usbhid/hid-core.c
@@ -33,6 +33,7 @@
#include <linux/hiddev.h>
#include <linux/hid-debug.h>
#include <linux/hidraw.h>
+#include <linux/device.h>
#include "usbhid.h"
/*
@@ -1369,6 +1370,7 @@ static int usbhid_probe(struct usb_interface *intf, const struct usb_device_id *
hid->hiddev_report_event = hiddev_report_event;
#endif
hid->dev.parent = &intf->dev;
+ device_set_of_node_from_dev(&hid->dev, &intf->dev);
hid->bus = BUS_USB;
hid->vendor = le16_to_cpu(dev->descriptor.idVendor);
hid->product = le16_to_cpu(dev->descriptor.idProduct);
--
2.25.1
^ permalink raw reply related
* [PATCH 1/4] dt-bindings: hid: Add CP2112 HID USB to SMBus Bridge
From: Danny Kaehn @ 2023-01-28 20:26 UTC (permalink / raw)
To: robh+dt, krzysztof.kozlowski+dt, jikos, benjamin.tissoires
Cc: devicetree, linux-input, ethan.twardy
In-Reply-To: <20230128202622.12676-1-kaehndan@gmail.com>
This is a USB HID device which includes an I2C controller and 8 GPIO pins.
The binding allows describing the chip's gpio and i2c controller in DT
using the subnodes named "gpio" and "i2c", respectively. This is
intended to be used in configurations where the CP2112 is permanently
connected in hardware.
Signed-off-by: Danny Kaehn <kaehndan@gmail.com>
---
.../bindings/hid/silabs,cp2112.yaml | 82 +++++++++++++++++++
1 file changed, 82 insertions(+)
create mode 100644 Documentation/devicetree/bindings/hid/silabs,cp2112.yaml
diff --git a/Documentation/devicetree/bindings/hid/silabs,cp2112.yaml b/Documentation/devicetree/bindings/hid/silabs,cp2112.yaml
new file mode 100644
index 000000000000..49287927c63f
--- /dev/null
+++ b/Documentation/devicetree/bindings/hid/silabs,cp2112.yaml
@@ -0,0 +1,82 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/hid/silabs,cp2112.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: CP2112 HID USB to SMBus/I2C Bridge
+
+maintainers:
+ - Danny Kaehn <kaehndan@gmail.com>
+
+description:
+ This is a USB HID device which includes an I2C controller and 8 GPIO pins.
+ While USB devices typically aren't described in DeviceTree, doing so with the
+ CP2112 allows use of its i2c and gpio controllers with other DT nodes when
+ the chip is expected to be found on a USB port.
+
+properties:
+ compatible:
+ const: usb10c4,ea90
+ reg:
+ maxItems: 1
+ description: The USB port number on the host controller
+ i2c:
+ $ref: /schemas/i2c/i2c-controller.yaml#
+ gpio:
+ $ref: /schemas/gpio/gpio.yaml#
+
+
+required:
+ - compatible
+ - reg
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/input/input.h>
+ #include <dt-bindings/interrupt-controller/irq.h>
+
+ usb1 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ usb@1 {
+ compatible = "usb424,2514";
+ reg = <1>;
+
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ device@1 { /* CP2112 I2C Bridge */
+ compatible = "usb10c4,ea90";
+ reg = <1>;
+
+ cp2112_i2c0: i2c {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ /* Child I2C Devices can be described as normal here */
+ temp@48 {
+ compatible = "national,lm75";
+ reg = <0x48>;
+ };
+ };
+
+ cp2112_gpio0: gpio {
+ gpio-controller;
+ interrupt-controller;
+ #gpio-cells = <2>;
+ gpio-line-names =
+ "TEST0",
+ "TEST1",
+ "TEST2",
+ "TEST3",
+ "TEST4",
+ "TEST5",
+ "TEST6",
+ "TEST7";
+ };
+ };
+ };
+ };
--
2.25.1
^ permalink raw reply related
* [PATCH 0/4] DeviceTree Support for USB-HID Devices and CP2112
From: Danny Kaehn @ 2023-01-28 20:26 UTC (permalink / raw)
To: robh+dt, krzysztof.kozlowski+dt, jikos, benjamin.tissoires
Cc: devicetree, linux-input, ethan.twardy
This patchset allows USB-HID devices to have DeviceTree bindings through sharing
the USB of_node with the HID driver, and adds such a binding and driver
implementation for the CP2112 USB to SMBus Bridge (which necessitated the
USB-HID change). This change allows a CP2112 permanently attached in hardware to
be described in DT and interoperate with other drivers, and exposed the threaded
interrupt bug fixed in patch 0003.
Plese correct if the assumption made that there is a 1:1 correlation between
a USB device and its HID device is not always true. If so, patch 0002 would
then need to be reworked.
Danny Kaehn (4):
dt-bindings: hid: Add CP2112 HID USB to SMBus Bridge
Share USB device devicetree node with child HID device
Fix CP2112 driver not registering GPIO IRQ chip as threaded
CP2112 Devicetree Support
.../bindings/hid/silabs,cp2112.yaml | 82 +++++++++++++++++++
drivers/hid/hid-cp2112.c | 10 +++
drivers/hid/usbhid/hid-core.c | 2 +
3 files changed, 94 insertions(+)
create mode 100644 Documentation/devicetree/bindings/hid/silabs,cp2112.yaml
--
2.25.1
^ permalink raw reply
* Re: Linux 6.1 and 6.2-rc make mousewheel on Logitech G903 (046d:c091) report too many non-hires events
From: Tobias Klausmann @ 2023-01-28 16:36 UTC (permalink / raw)
To: Linux kernel regression tracking (Thorsten Leemhuis)
Cc: Salvatore Bonaccorso, linux-input, regressions
In-Reply-To: <01fb3b37-8ba2-70f9-df62-4cf8df6bcc97@leemhuis.info>
Hi!
On Sat, 28 Jan 2023, Linux kernel regression tracking (Thorsten Leemhuis) wrote:
> On 28.01.23 16:39, Salvatore Bonaccorso wrote:
> > Let's loop in as well the regresssions list.
>
> Thx for that.
>
> TWIMC, I assume it's the same issue as this one:
> https://bugzilla.kernel.org/show_bug.cgi?id=216885
That is correct.
Best,
Tobias
^ permalink raw reply
* Re: Linux 6.1 and 6.2-rc make mousewheel on Logitech G903 (046d:c091) report too many non-hires events
From: Linux kernel regression tracking (Thorsten Leemhuis) @ 2023-01-28 16:28 UTC (permalink / raw)
To: Salvatore Bonaccorso, Tobias Klausmann; +Cc: linux-input, regressions
In-Reply-To: <Y9VBz/GVZPqG3KwM@eldamar.lan>
On 28.01.23 16:39, Salvatore Bonaccorso wrote:
> On Wed, Jan 25, 2023 at 11:01:00PM +0100, Tobias Klausmann wrote:
>> Hi!
>>
>> As it says in the subject.
>>
>> At some point between 6.0 and 6.1, the kernel (if HID_LOGITECH_HIDPP was
>> m or y) started reporting a full event for every hires event on a
>> Logitech G903.
>>
>> In my quest of finding out what the root cause is, ive filed these bugs:
>>
>> https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1029584
>> https://gitlab.freedesktop.org/libinput/libinput/-/issues/852
>>
>> The libinput one has the most detail. The most relevant one is this log
>> from libinput record, showing what happens if I turn the mousewheel by
>> one notch:
>>
>> events:
>> # Current time is 20:37:11
>> - evdev:
>> - [ 3, 63476, 2, 8, -1] # EV_REL / REL_WHEEL -1
>> - [ 3, 63476, 2, 11, -120] # EV_REL / REL_WHEEL_HI_RES -120
>> - [ 3, 63476, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +3063ms
>> - evdev:
>> - [ 3, 139476, 2, 8, -1] # EV_REL / REL_WHEEL -1
>> - [ 3, 139476, 2, 11, -120] # EV_REL / REL_WHEEL_HI_RES -120
>> - [ 3, 139476, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +76ms
>> - evdev:
>> - [ 3, 197482, 2, 8, -1] # EV_REL / REL_WHEEL -1
>> - [ 3, 197482, 2, 11, -120] # EV_REL / REL_WHEEL_HI_RES -120
>> - [ 3, 197482, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +58ms
>> - evdev:
>> - [ 3, 227485, 2, 8, -1] # EV_REL / REL_WHEEL -1
>> - [ 3, 227485, 2, 11, -120] # EV_REL / REL_WHEEL_HI_RES -120
>> - [ 3, 227485, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +30ms
>> - evdev:
>> - [ 3, 240484, 2, 8, -1] # EV_REL / REL_WHEEL -1
>> - [ 3, 240484, 2, 11, -120] # EV_REL / REL_WHEEL_HI_RES -120
>> - [ 3, 240484, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +13ms
>> - evdev:
>> - [ 3, 250470, 2, 8, -1] # EV_REL / REL_WHEEL -1
>> - [ 3, 250470, 2, 11, -120] # EV_REL / REL_WHEEL_HI_RES -120
>> - [ 3, 250470, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +10ms
>> - evdev:
>> - [ 3, 256486, 2, 8, -1] # EV_REL / REL_WHEEL -1
>> - [ 3, 256486, 2, 11, -120] # EV_REL / REL_WHEEL_HI_RES -120
>> - [ 3, 256486, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +6ms
>> - evdev:
>> - [ 3, 264472, 2, 8, -1] # EV_REL / REL_WHEEL -1
>> - [ 3, 264472, 2, 11, -120] # EV_REL / REL_WHEEL_HI_RES -120
>> - [ 3, 264472, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +8ms
>> # Current time is 20:37:15
>>
>> Note how it reports both REL_WHEEL and REL_WHEEL_HI_RES at every
>> instance.
>>
>> I've tried assorted kernels, both Debian as well as hand-compiled
>> vanilla ones, and the problem only shows up if hid_logitech_hidpp.ko is
>> loaded, so I am blacklisting it for now. Also note that even unloading
>> the module didn't fix the behavior, though that may be because X11 was
>> still runing and so libinput's state ight have been still mangled.
>>
>> The most recent kernels I have tested with are 6.1.4 and 6.2-rc5.
>>
>> Best,
>> Tobias
>
> Let's loop in as well the regresssions list.
Thx for that.
TWIMC, I assume it's the same issue as this one:
https://bugzilla.kernel.org/show_bug.cgi?id=216885
There in the past few days was some discussion about the issue with the
author of the culprit there.
HTH, ciao, Thorsten (wearing his 'the Linux kernel's regression tracker'
hat)
--
Everything you wanna know about Linux kernel regression tracking:
https://linux-regtracking.leemhuis.info/about/#tldr
If I did something stupid, please tell me, as explained on that page.
^ permalink raw reply
* [PATCH] Input: edt-ft5x06 - fix typo in a comment
From: Dario Binacchi @ 2023-01-28 16:23 UTC (permalink / raw)
To: linux-kernel
Cc: Dario Binacchi, Dmitry Torokhov, Michael Trimarchi, Oliver Graute,
Uwe Kleine-König, Wolfram Sang, linux-input
Replace 'firmares' with 'firmwares'.
Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
---
drivers/input/touchscreen/edt-ft5x06.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/input/touchscreen/edt-ft5x06.c b/drivers/input/touchscreen/edt-ft5x06.c
index ddd0f1f62458..04bfefe3c0e0 100644
--- a/drivers/input/touchscreen/edt-ft5x06.c
+++ b/drivers/input/touchscreen/edt-ft5x06.c
@@ -931,7 +931,7 @@ static int edt_ft5x06_ts_identify(struct i2c_client *client,
} else {
/* If it is not an EDT M06/M12 touchscreen, then the model
* detection is a bit hairy. The different ft5x06
- * firmares around don't reliably implement the
+ * firmwares around don't reliably implement the
* identification registers. Well, we'll take a shot.
*
* The main difference between generic focaltec based
--
2.32.0
^ permalink raw reply related
* Re: Linux 6.1 and 6.2-rc make mousewheel on Logitech G903 (046d:c091) report too many non-hires events
From: Salvatore Bonaccorso @ 2023-01-28 15:39 UTC (permalink / raw)
To: Tobias Klausmann; +Cc: linux-input, regressions
In-Reply-To: <Y9GmnIjUgIGuYtk2@skade.schwarzvogel.de>
On Wed, Jan 25, 2023 at 11:01:00PM +0100, Tobias Klausmann wrote:
> Hi!
>
> As it says in the subject.
>
> At some point between 6.0 and 6.1, the kernel (if HID_LOGITECH_HIDPP was
> m or y) started reporting a full event for every hires event on a
> Logitech G903.
>
> In my quest of finding out what the root cause is, ive filed these bugs:
>
> https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1029584
> https://gitlab.freedesktop.org/libinput/libinput/-/issues/852
>
> The libinput one has the most detail. The most relevant one is this log
> from libinput record, showing what happens if I turn the mousewheel by
> one notch:
>
> events:
> # Current time is 20:37:11
> - evdev:
> - [ 3, 63476, 2, 8, -1] # EV_REL / REL_WHEEL -1
> - [ 3, 63476, 2, 11, -120] # EV_REL / REL_WHEEL_HI_RES -120
> - [ 3, 63476, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +3063ms
> - evdev:
> - [ 3, 139476, 2, 8, -1] # EV_REL / REL_WHEEL -1
> - [ 3, 139476, 2, 11, -120] # EV_REL / REL_WHEEL_HI_RES -120
> - [ 3, 139476, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +76ms
> - evdev:
> - [ 3, 197482, 2, 8, -1] # EV_REL / REL_WHEEL -1
> - [ 3, 197482, 2, 11, -120] # EV_REL / REL_WHEEL_HI_RES -120
> - [ 3, 197482, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +58ms
> - evdev:
> - [ 3, 227485, 2, 8, -1] # EV_REL / REL_WHEEL -1
> - [ 3, 227485, 2, 11, -120] # EV_REL / REL_WHEEL_HI_RES -120
> - [ 3, 227485, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +30ms
> - evdev:
> - [ 3, 240484, 2, 8, -1] # EV_REL / REL_WHEEL -1
> - [ 3, 240484, 2, 11, -120] # EV_REL / REL_WHEEL_HI_RES -120
> - [ 3, 240484, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +13ms
> - evdev:
> - [ 3, 250470, 2, 8, -1] # EV_REL / REL_WHEEL -1
> - [ 3, 250470, 2, 11, -120] # EV_REL / REL_WHEEL_HI_RES -120
> - [ 3, 250470, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +10ms
> - evdev:
> - [ 3, 256486, 2, 8, -1] # EV_REL / REL_WHEEL -1
> - [ 3, 256486, 2, 11, -120] # EV_REL / REL_WHEEL_HI_RES -120
> - [ 3, 256486, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +6ms
> - evdev:
> - [ 3, 264472, 2, 8, -1] # EV_REL / REL_WHEEL -1
> - [ 3, 264472, 2, 11, -120] # EV_REL / REL_WHEEL_HI_RES -120
> - [ 3, 264472, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +8ms
> # Current time is 20:37:15
>
> Note how it reports both REL_WHEEL and REL_WHEEL_HI_RES at every
> instance.
>
> I've tried assorted kernels, both Debian as well as hand-compiled
> vanilla ones, and the problem only shows up if hid_logitech_hidpp.ko is
> loaded, so I am blacklisting it for now. Also note that even unloading
> the module didn't fix the behavior, though that may be because X11 was
> still runing and so libinput's state ight have been still mangled.
>
> The most recent kernels I have tested with are 6.1.4 and 6.2-rc5.
>
> Best,
> Tobias
Let's loop in as well the regresssions list.
#regzbot introduced: v6.0..v6.1
#regzbot link: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1029584
#regzbot link: https://gitlab.freedesktop.org/libinput/libinput/-/issues/852
Regards,
Salvatore
^ permalink raw reply
* [dtor-input:next] BUILD SUCCESS 21617de3b4647175a4c6a2a58f40515a94a13df4
From: kernel test robot @ 2023-01-28 14:21 UTC (permalink / raw)
To: Dmitry Torokhov; +Cc: linux-input
tree/branch: https://git.kernel.org/pub/scm/linux/kernel/git/dtor/input.git next
branch HEAD: 21617de3b4647175a4c6a2a58f40515a94a13df4 Input: xpad - add 8BitDo Pro 2 Wired Controller support
elapsed time: 735m
configs tested: 83
configs skipped: 2
The following configs have been built successfully.
More configs may be tested in the coming days.
gcc tested configs:
x86_64 allnoconfig
arm64 allyesconfig
arm defconfig
arm allyesconfig
i386 allyesconfig
i386 defconfig
ia64 allmodconfig
x86_64 rhel-8.3-func
x86_64 rhel-8.3-kselftests
x86_64 defconfig
x86_64 allyesconfig
x86_64 rhel-8.3
x86_64 randconfig-a002-20230123
x86_64 randconfig-a005-20230123
x86_64 randconfig-a001-20230123
x86_64 randconfig-a006-20230123
x86_64 randconfig-a003-20230123
x86_64 randconfig-a004-20230123
x86_64 rhel-8.3-kvm
x86_64 rhel-8.3-syz
x86_64 rhel-8.3-bpf
x86_64 rhel-8.3-kunit
i386 randconfig-a004-20230123
i386 randconfig-a006-20230123
i386 randconfig-a005-20230123
i386 randconfig-a002-20230123
i386 randconfig-a003-20230123
i386 randconfig-a001-20230123
s390 defconfig
s390 allmodconfig
arc defconfig
alpha defconfig
s390 allyesconfig
um x86_64_defconfig
um i386_defconfig
m68k allyesconfig
m68k allmodconfig
arc allyesconfig
alpha allyesconfig
powerpc allnoconfig
mips allyesconfig
powerpc allmodconfig
sh allmodconfig
i386 randconfig-a012
i386 randconfig-a014
i386 randconfig-a016
i386 randconfig-c001-20230123
i386 randconfig-c001
riscv nommu_virt_defconfig
riscv rv32_defconfig
riscv nommu_k210_defconfig
riscv allnoconfig
i386 debian-10.3-kselftests
i386 debian-10.3
m68k amcore_defconfig
powerpc makalu_defconfig
m68k mvme147_defconfig
m68k amiga_defconfig
mips rb532_defconfig
clang tested configs:
x86_64 randconfig-a013-20230123
x86_64 randconfig-a011-20230123
x86_64 randconfig-a016-20230123
x86_64 randconfig-a012-20230123
x86_64 randconfig-a015-20230123
x86_64 randconfig-a014-20230123
riscv randconfig-r042-20230123
hexagon randconfig-r041-20230123
hexagon randconfig-r045-20230123
s390 randconfig-r044-20230123
i386 randconfig-a013-20230123
i386 randconfig-a016-20230123
i386 randconfig-a012-20230123
i386 randconfig-a015-20230123
i386 randconfig-a011-20230123
i386 randconfig-a014-20230123
powerpc mpc832x_mds_defconfig
powerpc walnut_defconfig
arm mvebu_v5_defconfig
arm sama7_defconfig
x86_64 rhel-8.3-rust
hexagon randconfig-r041-20230124
hexagon randconfig-r045-20230124
arm randconfig-r046-20230124
--
0-DAY CI Kernel Test Service
https://01.org/lkp
^ permalink raw reply
* Re: (subset) [PATCH 00/35] Documentation: correct lots of spelling errors (series 1)
From: Mark Brown @ 2023-01-28 10:48 UTC (permalink / raw)
To: linux-kernel, Randy Dunlap
Cc: Jonathan Corbet, Catalin Marinas, Will Deacon, Russell King,
Jens Axboe, Andrii Nakryiko, Alexei Starovoitov, Daniel Borkmann,
Vladimir Oltean, Steffen Klassert, Daniel Jordan, Akinobu Mita,
Helge Deller, Rafael J. Wysocki, Jiri Kosina, Benjamin Tissoires,
Srinivas Pandruvada, Wolfram Sang, Dmitry Torokhov,
Henrik Rydberg, Karsten Keil, Pavel Machek, Lee Jones,
Josh Poimboeuf, Miroslav Benes, Petr Mladek, Peter Zijlstra,
Ingo Molnar, Jérôme Glisse, Naoya Horiguchi, Miaohe Lin,
Jonas Bonn, Stefan Kristiansson, Stafford Horne, Bjorn Helgaas,
Lorenzo Pieralisi, Marc Zyngier, Michael Ellerman, Len Brown,
Heiko Carstens, Vasily Gorbik, Alexander Gordeev, Juri Lelli,
Vincent Guittot, David Howells, Jarkko Sakkinen, Paul Moore,
James Morris, Serge E. Hallyn, Jaroslav Kysela, Takashi Iwai,
Martin K. Petersen, Daniel Bristot de Oliveira, Steven Rostedt,
Greg Kroah-Hartman, Masami Hiramatsu, Mathieu Poirier,
Suzuki K Poulose, Evgeniy Polyakov, Fenghua Yu, Reinette Chatre,
Thomas Gleixner, Borislav Petkov, Chris Zankel, Max Filippov,
alsa-devel, coresight, bpf, dri-devel, isdn4linux, keyrings,
linux-acpi, linux-block, linux-crypto, linux-doc, linux-fbdev,
linux-i2c, linux-input, linux-leds, linux-pci, linux-s390,
linux-scsi, linux-sgx, linux-spi, linux-trace-devel,
linux-trace-kernel, live-patching, linux-pm,
linux-security-module, linux-usb, netdev, target-devel, linux-mm,
openrisc, linux-arm-kernel, linux-xtensa, linuxppc-dev, x86
In-Reply-To: <20230127064005.1558-1-rdunlap@infradead.org>
On Thu, 26 Jan 2023 22:39:30 -0800, Randy Dunlap wrote:
> Correct many spelling errors in Documentation/ as reported by codespell.
>
> Maintainers of specific kernel subsystems are only Cc-ed on their
> respective patches, not the entire series. [if all goes well]
>
> These patches are based on linux-next-20230125.
>
> [...]
Applied to
broonie/spi.git for-next
Thanks!
[27/35] Documentation: spi: correct spelling
commit: 0f6d2cee58f1ff2ebf66f0bceb113d79f66ecb07
All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.
You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.
If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.
Please add any relevant lists and maintainers to the CCs when replying
to this mail.
Thanks,
Mark
^ permalink raw reply
* [PATCH] Input: tegra-kbc - Use devm_platform_get_and_ioremap_resource()
From: ye.xingchen @ 2023-01-28 8:13 UTC (permalink / raw)
To: dmitry.torokhov
Cc: ldewangan, thierry.reding, jonathanh, linux-input, linux-tegra,
linux-kernel
From: ye xingchen <ye.xingchen@zte.com.cn>
Convert platform_get_resource(), devm_ioremap_resource() to a single
call to devm_platform_get_and_ioremap_resource(), as this is exactly
what this function does.
Signed-off-by: ye xingchen <ye.xingchen@zte.com.cn>
---
drivers/input/keyboard/tegra-kbc.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/drivers/input/keyboard/tegra-kbc.c b/drivers/input/keyboard/tegra-kbc.c
index 1eba06bcf27a..da4019cf0c83 100644
--- a/drivers/input/keyboard/tegra-kbc.c
+++ b/drivers/input/keyboard/tegra-kbc.c
@@ -598,7 +598,6 @@ MODULE_DEVICE_TABLE(of, tegra_kbc_of_match);
static int tegra_kbc_probe(struct platform_device *pdev)
{
struct tegra_kbc *kbc;
- struct resource *res;
int err;
int num_rows = 0;
unsigned int debounce_cnt;
@@ -642,8 +641,7 @@ static int tegra_kbc_probe(struct platform_device *pdev)
timer_setup(&kbc->timer, tegra_kbc_keypress_timer, 0);
- res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
- kbc->mmio = devm_ioremap_resource(&pdev->dev, res);
+ kbc->mmio = devm_platform_get_and_ioremap_resource(pdev, 0, NULL);
if (IS_ERR(kbc->mmio))
return PTR_ERR(kbc->mmio);
--
2.25.1
^ permalink raw reply related
* [PATCH] Input: st-keyscan - Use devm_platform_get_and_ioremap_resource()
From: ye.xingchen @ 2023-01-28 8:11 UTC (permalink / raw)
To: dmitry.torokhov
Cc: andriy.shevchenko, jonathan.cameron, linux-input, linux-kernel
From: ye xingchen <ye.xingchen@zte.com.cn>
Convert platform_get_resource(), devm_ioremap_resource() to a single
call to devm_platform_get_and_ioremap_resource(), as this is exactly
what this function does.
Signed-off-by: ye xingchen <ye.xingchen@zte.com.cn>
---
drivers/input/keyboard/st-keyscan.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/drivers/input/keyboard/st-keyscan.c b/drivers/input/keyboard/st-keyscan.c
index 13735a5e8391..b6e83324f97a 100644
--- a/drivers/input/keyboard/st-keyscan.c
+++ b/drivers/input/keyboard/st-keyscan.c
@@ -125,7 +125,6 @@ static int keyscan_probe(struct platform_device *pdev)
{
struct st_keyscan *keypad_data;
struct input_dev *input_dev;
- struct resource *res;
int error;
if (!pdev->dev.of_node) {
@@ -169,8 +168,7 @@ static int keyscan_probe(struct platform_device *pdev)
input_set_drvdata(input_dev, keypad_data);
- res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
- keypad_data->base = devm_ioremap_resource(&pdev->dev, res);
+ keypad_data->base = devm_platform_get_and_ioremap_resource(pdev, 0, NULL);
if (IS_ERR(keypad_data->base))
return PTR_ERR(keypad_data->base);
--
2.25.1
^ permalink raw reply related
* [PATCH] Input: spear-keyboard - Use devm_platform_get_and_ioremap_resource()
From: ye.xingchen @ 2023-01-28 8:09 UTC (permalink / raw)
To: dmitry.torokhov; +Cc: jonathan.cameron, linux-input, linux-kernel
From: ye xingchen <ye.xingchen@zte.com.cn>
Convert platform_get_resource(), devm_ioremap_resource() to a single
call to devm_platform_get_and_ioremap_resource(), as this is exactly
what this function does.
Signed-off-by: ye xingchen <ye.xingchen@zte.com.cn>
---
drivers/input/keyboard/spear-keyboard.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/drivers/input/keyboard/spear-keyboard.c b/drivers/input/keyboard/spear-keyboard.c
index 4bb7c533147c..a50fa9915381 100644
--- a/drivers/input/keyboard/spear-keyboard.c
+++ b/drivers/input/keyboard/spear-keyboard.c
@@ -186,7 +186,6 @@ static int spear_kbd_probe(struct platform_device *pdev)
const struct matrix_keymap_data *keymap = pdata ? pdata->keymap : NULL;
struct spear_kbd *kbd;
struct input_dev *input_dev;
- struct resource *res;
int irq;
int error;
@@ -219,8 +218,7 @@ static int spear_kbd_probe(struct platform_device *pdev)
kbd->suspended_rate = pdata->suspended_rate;
}
- res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
- kbd->io_base = devm_ioremap_resource(&pdev->dev, res);
+ kbd->io_base = devm_platform_get_and_ioremap_resource(pdev, 0, NULL);
if (IS_ERR(kbd->io_base))
return PTR_ERR(kbd->io_base);
--
2.25.1
^ permalink raw reply related
* [PATCH] Input: olpc_apsp - Use devm_platform_get_and_ioremap_resource()
From: ye.xingchen @ 2023-01-28 8:08 UTC (permalink / raw)
To: dmitry.torokhov; +Cc: wsa+renesas, linux-input, linux-kernel
From: ye xingchen <ye.xingchen@zte.com.cn>
Convert platform_get_resource(), devm_ioremap_resource() to a single
call to devm_platform_get_and_ioremap_resource(), as this is exactly
what this function does.
Signed-off-by: ye xingchen <ye.xingchen@zte.com.cn>
---
drivers/input/serio/olpc_apsp.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/drivers/input/serio/olpc_apsp.c b/drivers/input/serio/olpc_apsp.c
index 04d2db982fb8..33a8e5889bd8 100644
--- a/drivers/input/serio/olpc_apsp.c
+++ b/drivers/input/serio/olpc_apsp.c
@@ -169,7 +169,6 @@ static int olpc_apsp_probe(struct platform_device *pdev)
{
struct serio *kb_serio, *pad_serio;
struct olpc_apsp *priv;
- struct resource *res;
int error;
priv = devm_kzalloc(&pdev->dev, sizeof(struct olpc_apsp), GFP_KERNEL);
@@ -178,8 +177,7 @@ static int olpc_apsp_probe(struct platform_device *pdev)
priv->dev = &pdev->dev;
- res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
- priv->base = devm_ioremap_resource(&pdev->dev, res);
+ priv->base = devm_platform_get_and_ioremap_resource(pdev, 0, NULL);
if (IS_ERR(priv->base)) {
dev_err(&pdev->dev, "Failed to map WTM registers\n");
return PTR_ERR(priv->base);
--
2.25.1
^ permalink raw reply related
* [PATCH] Input: arc_ps2 - Use devm_platform_get_and_ioremap_resource()
From: ye.xingchen @ 2023-01-28 8:06 UTC (permalink / raw)
To: dmitry.torokhov; +Cc: linux-input, linux-kernel
From: ye xingchen <ye.xingchen@zte.com.cn>
Convert platform_get_resource(), devm_ioremap_resource() to a single
call to devm_platform_get_and_ioremap_resource(), as this is exactly
what this function does.
Signed-off-by: ye xingchen <ye.xingchen@zte.com.cn>
---
drivers/input/serio/arc_ps2.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/drivers/input/serio/arc_ps2.c b/drivers/input/serio/arc_ps2.c
index 0af9fba5d16d..a6debb13d527 100644
--- a/drivers/input/serio/arc_ps2.c
+++ b/drivers/input/serio/arc_ps2.c
@@ -182,7 +182,6 @@ static int arc_ps2_create_port(struct platform_device *pdev,
static int arc_ps2_probe(struct platform_device *pdev)
{
struct arc_ps2_data *arc_ps2;
- struct resource *res;
int irq;
int error, id, i;
@@ -197,8 +196,7 @@ static int arc_ps2_probe(struct platform_device *pdev)
return -ENOMEM;
}
- res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
- arc_ps2->addr = devm_ioremap_resource(&pdev->dev, res);
+ arc_ps2->addr = devm_platform_get_and_ioremap_resource(pdev, 0, NULL);
if (IS_ERR(arc_ps2->addr))
return PTR_ERR(arc_ps2->addr);
--
2.25.1
^ permalink raw reply related
* [PATCH] Input: apbps2 - Use devm_platform_get_and_ioremap_resource()
From: ye.xingchen @ 2023-01-28 8:04 UTC (permalink / raw)
To: dmitry.torokhov; +Cc: wsa+renesas, linux-input, linux-kernel
From: ye xingchen <ye.xingchen@zte.com.cn>
Convert platform_get_resource(), devm_ioremap_resource() to a single
call to devm_platform_get_and_ioremap_resource(), as this is exactly
what this function does.
Signed-off-by: ye xingchen <ye.xingchen@zte.com.cn>
---
drivers/input/serio/apbps2.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/drivers/input/serio/apbps2.c b/drivers/input/serio/apbps2.c
index 9c9ce097f8bf..513d96e40e0e 100644
--- a/drivers/input/serio/apbps2.c
+++ b/drivers/input/serio/apbps2.c
@@ -132,7 +132,6 @@ static int apbps2_of_probe(struct platform_device *ofdev)
struct apbps2_priv *priv;
int irq, err;
u32 freq_hz;
- struct resource *res;
priv = devm_kzalloc(&ofdev->dev, sizeof(*priv), GFP_KERNEL);
if (!priv) {
@@ -141,8 +140,7 @@ static int apbps2_of_probe(struct platform_device *ofdev)
}
/* Find Device Address */
- res = platform_get_resource(ofdev, IORESOURCE_MEM, 0);
- priv->regs = devm_ioremap_resource(&ofdev->dev, res);
+ priv->regs = devm_platform_get_and_ioremap_resource(ofdev, 0, NULL);
if (IS_ERR(priv->regs))
return PTR_ERR(priv->regs);
--
2.25.1
^ permalink raw reply related
* [PATCH] Input: altera_ps2 - Use devm_platform_get_and_ioremap_resource()
From: ye.xingchen @ 2023-01-28 8:03 UTC (permalink / raw)
To: dmitry.torokhov; +Cc: wsa+renesas, linux-input, linux-kernel
From: ye xingchen <ye.xingchen@zte.com.cn>
Convert platform_get_resource(), devm_ioremap_resource() to a single
call to devm_platform_get_and_ioremap_resource(), as this is exactly
what this function does.
Signed-off-by: ye xingchen <ye.xingchen@zte.com.cn>
---
drivers/input/serio/altera_ps2.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/drivers/input/serio/altera_ps2.c b/drivers/input/serio/altera_ps2.c
index 3a92304f64fb..9f8d7b332d1b 100644
--- a/drivers/input/serio/altera_ps2.c
+++ b/drivers/input/serio/altera_ps2.c
@@ -78,7 +78,6 @@ static void altera_ps2_close(struct serio *io)
static int altera_ps2_probe(struct platform_device *pdev)
{
struct ps2if *ps2if;
- struct resource *res;
struct serio *serio;
int error, irq;
@@ -86,8 +85,7 @@ static int altera_ps2_probe(struct platform_device *pdev)
if (!ps2if)
return -ENOMEM;
- res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
- ps2if->base = devm_ioremap_resource(&pdev->dev, res);
+ ps2if->base = devm_platform_get_and_ioremap_resource(pdev, 0, NULL);
if (IS_ERR(ps2if->base))
return PTR_ERR(ps2if->base);
--
2.25.1
^ permalink raw reply related
* [PATCH] HID: apple: Set the tilde quirk flag on the Geyser 4 and later
From: Alex Henrie @ 2023-01-28 1:59 UTC (permalink / raw)
To: linux-input, jkosina; +Cc: Alex Henrie
I recently tested several old MacBooks and as far as I can tell, all
MacBooks that have an ISO keyboard have the tilde key quirk:
Product Model Year CPU Shape Labels Country Quirky
================================================================
05ac:021b A1181 2006 T5600 ISO British 13 Yes
05ac:021b A1181 2007 T7200 ISO Québécois 13 Yes
05ac:0229 A1181 2007 T8300 ANSI Usonian 33 No
05ac:022a A1181 2007 T8100 ISO English 13 Yes
05ac:022a A1181 2007 P7350 ISO Québécois 13 Yes
05ac:0237 A1278 2008 P7350 ISO Dutch 13 Yes
05ac:0237 A1278 2009 P7550 ISO British 13 Yes
The model number and year are from the laptop case. Since Apple printed
the same model and year on many different laptops, the CPU is a more
precise identifier.
Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
---
drivers/hid/hid-apple.c | 16 +++++++++-------
1 file changed, 9 insertions(+), 7 deletions(-)
diff --git a/drivers/hid/hid-apple.c b/drivers/hid/hid-apple.c
index 1ccab8aa326c..5c145775482b 100644
--- a/drivers/hid/hid-apple.c
+++ b/drivers/hid/hid-apple.c
@@ -882,7 +882,8 @@ static const struct hid_device_id apple_devices[] = {
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ANSI),
.driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ISO),
- .driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN },
+ .driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN |
+ APPLE_ISO_TILDE_QUIRK },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_JIS),
.driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN |
APPLE_RDESC_JIS },
@@ -901,7 +902,8 @@ static const struct hid_device_id apple_devices[] = {
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_HF_ANSI),
.driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_HF_ISO),
- .driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN },
+ .driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN |
+ APPLE_ISO_TILDE_QUIRK },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_HF_JIS),
.driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN |
APPLE_RDESC_JIS },
@@ -942,31 +944,31 @@ static const struct hid_device_id apple_devices[] = {
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING_ANSI),
.driver_data = APPLE_HAS_FN },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING_ISO),
- .driver_data = APPLE_HAS_FN },
+ .driver_data = APPLE_HAS_FN | APPLE_ISO_TILDE_QUIRK },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING_JIS),
.driver_data = APPLE_HAS_FN | APPLE_RDESC_JIS },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING2_ANSI),
.driver_data = APPLE_HAS_FN },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING2_ISO),
- .driver_data = APPLE_HAS_FN },
+ .driver_data = APPLE_HAS_FN | APPLE_ISO_TILDE_QUIRK },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING2_JIS),
.driver_data = APPLE_HAS_FN | APPLE_RDESC_JIS },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_ANSI),
.driver_data = APPLE_HAS_FN },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_ISO),
- .driver_data = APPLE_HAS_FN },
+ .driver_data = APPLE_HAS_FN | APPLE_ISO_TILDE_QUIRK },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_JIS),
.driver_data = APPLE_HAS_FN | APPLE_RDESC_JIS },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4_ANSI),
.driver_data = APPLE_HAS_FN },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4_ISO),
- .driver_data = APPLE_HAS_FN },
+ .driver_data = APPLE_HAS_FN | APPLE_ISO_TILDE_QUIRK },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4_JIS),
.driver_data = APPLE_HAS_FN | APPLE_RDESC_JIS },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4A_ANSI),
.driver_data = APPLE_HAS_FN },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4A_ISO),
- .driver_data = APPLE_HAS_FN },
+ .driver_data = APPLE_HAS_FN | APPLE_ISO_TILDE_QUIRK },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4A_JIS),
.driver_data = APPLE_HAS_FN | APPLE_RDESC_JIS },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING5_ANSI),
--
2.39.1
^ permalink raw reply related
* Re: [PATCH] Input: xpad - add 8BitDo Pro 2 Wired Controller support
From: Dmitry Torokhov @ 2023-01-27 22:58 UTC (permalink / raw)
To: John Butler; +Cc: linux-input
In-Reply-To: <20230124005206.80706-1-radon86dev@gmail.com>
On Tue, Jan 24, 2023 at 12:52:06AM +0000, John Butler wrote:
> Add VID and PID to the xpad_device table to allow driver
> to use the 8BitDo Pro 2 Wired Controller, which is
> XTYPE_XBOX360 compatible by default.
>
> Signed-off-by: John Butler <radon86dev@gmail.com>
> Cc: linux-input@vger.kernel.org
Applied, thank you.
--
Dmitry
^ permalink raw reply
* Re: [PATCH] Input: ipaq-micro-ts - fix DEFINE_SIMPLE_DEV_PM_OPS typo
From: Dmitry Torokhov @ 2023-01-27 22:52 UTC (permalink / raw)
To: Arnd Bergmann
Cc: Jonathan Cameron, Linus Walleij, Arnd Bergmann, linux-input,
linux-kernel
In-Reply-To: <20230117164539.1631336-1-arnd@kernel.org>
On Tue, Jan 17, 2023 at 05:45:33PM +0100, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@arndb.de>
>
> The previous change was not properly build tested and needs
> a trivial spelling change:
>
> ipaq-micro-ts.c:146:8: error: type defaults to 'int' in declaration of 'DEFINE_SIMPLE_DEV_PM' [-Werror=implicit-int]
>
> Fixes: 144ff5e03d74 ("Input: ipaq-micro-ts - use DEFINE_SIMPLE_DEV_PM_OPS() and pm_sleep_ptr()")
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Applied, thank you.
--
Dmitry
^ permalink raw reply
* Re: [PATCH 00/16] Input: Switch to new PM macros set 3
From: Dmitry Torokhov @ 2023-01-27 22:50 UTC (permalink / raw)
To: Jonathan Cameron
Cc: linux-input, Jonathan Cameron, Hans de Goede, Caleb Connolly,
Andi Shyti, Matthias Schiffer, Lyude Paul, Andrew Duggan,
Michael Hennerich, Javier Martinez Canillas, Linus Walleij
In-Reply-To: <20230114171620.42891-1-jic23@kernel.org>
On Sat, Jan 14, 2023 at 05:16:04PM +0000, Jonathan Cameron wrote:
> From: Jonathan Cameron <Jonathan.Cameron@huawei.com>
>
> Continuation of
> https://lore.kernel.org/all/20230102181842.718010-1-jic23@kernel.org/
>
> This time we have most of the remaining drivers where the changes needed
> are more complex than the earlier straight conversions.
>
> A separate series will deal with pm80x as the cleanup for that will
> extend to MFD and RTC trees and cannot easily be broken up due to
> some changes in exports.
>
> There is a general mixture of cases in here:
> 1) More complex direct conversions - typically drivers with separate
> sleep and runtime pm ops.
> 2) Cases where the callbacks or struct dev_pm_ops is exported to
> multiple modules.
> 3) Refactors that avoid duplication of callbacks or exports.
> 4) A tweak to the core input handling to use the new macros - this
> is different from the driver changes, but seemed sensible.
>
> Note there are a few cases in here where I a much more minimal
> set of callbacks is provided than DEFINE_SIMPLE_DEV_PM_OPS() and
> friends would set. I don't know the history behind those so whilst
> they might well be fine converted to the generic macros, I've
> left them alone.
Applied the lot, thank you.
--
Dmitry
^ permalink raw reply
* Re: [PATCH] dt-bindings: input: azoteq: Fix differing types
From: Jeff LaBundy @ 2023-01-27 22:37 UTC (permalink / raw)
To: Rob Herring
Cc: Dmitry Torokhov, Krzysztof Kozlowski, linux-input, devicetree,
linux-kernel
In-Reply-To: <CAL_JsqJACct1J2T357V6CSQWsRP1P7bFpNCmippbYf2rYdd2Rw@mail.gmail.com>
Hi Rob,
On Wed, Jan 25, 2023 at 09:10:33PM -0600, Rob Herring wrote:
> On Wed, Jan 25, 2023 at 7:51 PM Jeff LaBundy <jeff@labundy.com> wrote:
> >
> > Hi Rob,
> >
> > On Wed, Jan 25, 2023 at 04:14:16PM -0600, Rob Herring wrote:
> > > 'azoteq,ati-base' and 'azoteq,thresh' properties are defined in multiple
> > > bindings, but have differing types defined. Both 'uint32' and
> > > 'uint32-array' are used. Unify these to use 'uint32-array' everywhere.
> > >
> > > Signed-off-by: Rob Herring <robh@kernel.org>
> >
> > Thank you for the patch. While this is a step forward in moving toward
> > a common binding for this vendor like we have discussed in the past, I
> > do not agree with this approach and will instead propose an alternative
> > that accomplishes the same goal.
> >
> > For all of these devices, a single sensing channel takes a base and a
> > threshold property. IQS626A is unique in that a fixed number of channels
> > form a trackpad, and I decided at the time to simply define the base and
> > target properties for all channels as a uint32-array.
> >
> > For all other existing drivers, as well as others coming down the pipe,
> > base and threshold are uint32s. I find it confusing to redefine all of
> > those as single-element arrays, especially on account of one device.
> >
> > In hindsight, a better design would have been to define a child node
> > for each channel under the trackpad node, with each child node accepting
> > a uint32 base and threshold. That would follow other devices, be more
> > representative of the actual hardware, and keep the definitions the same
> > across each binding.
> >
> > So, that's what I propose to do here instead. I happen to have a fix in
> > review [1] that addresses a bug related to this parsing code, and would
> > be happy to build this solution on top assuming it can wait until the
> > next cycle. Does this compromise sound OK?
>
> Shrug
>
> How exactly are you going to change an existing property and not break
> existing users? Or are there not any users?
There are no known users at this time.
>
> We have the same properties with 2 definitions. At the end of the day,
> I just want to fix that...
Agreed on all counts. I've folded my proposal into the existing fix for
this driver and sent [1] for your consideration.
[1] https://patchwork.kernel.org/patch/13119464/
>
> Rob
Kind regards,
Jeff LaBundy
^ permalink raw reply
* [PATCH v2 2/2] dt-bindings: input: iqs626a: Redefine trackpad property types
From: Jeff LaBundy @ 2023-01-27 22:30 UTC (permalink / raw)
To: dmitry.torokhov, robh+dt; +Cc: linux-input, devicetree, jeff
In-Reply-To: <Y9RQCQa69f3TaiWf@nixie71>
Following a recent refactor of the driver to properly drop unused
device nodes, the driver expects trackpad channel touch thresholds
and ATI base values to be specified under single trackpad channel
child nodes.
This enhancement moves both properties to scalar values as opposed
to arrays, making their types consistent across bindings.
Fixes: a8f1f0dc865c ("dt-bindings: input: Add bindings for Azoteq IQS626A")
Signed-off-by: Jeff LaBundy <jeff@labundy.com>
---
Changes in v2:
- Added to series
.../devicetree/bindings/input/iqs626a.yaml | 94 +++++++++++++------
1 file changed, 67 insertions(+), 27 deletions(-)
diff --git a/Documentation/devicetree/bindings/input/iqs626a.yaml b/Documentation/devicetree/bindings/input/iqs626a.yaml
index 7a27502095f3..e424d67b0542 100644
--- a/Documentation/devicetree/bindings/input/iqs626a.yaml
+++ b/Documentation/devicetree/bindings/input/iqs626a.yaml
@@ -564,16 +564,6 @@ patternProperties:
2: Partial
3: Full
- azoteq,ati-base:
- $ref: /schemas/types.yaml#/definitions/uint32-array
- minItems: 6
- maxItems: 9
- items:
- minimum: 45
- maximum: 300
- default: [45, 45, 45, 45, 45, 45, 45, 45, 45]
- description: Specifies each individual trackpad channel's ATI base.
-
azoteq,ati-target:
$ref: /schemas/types.yaml#/definitions/uint32
multipleOf: 32
@@ -620,17 +610,6 @@ patternProperties:
description:
Tightens the ATI band from 1/8 to 1/16 of the desired target.
- azoteq,thresh:
- $ref: /schemas/types.yaml#/definitions/uint32-array
- minItems: 6
- maxItems: 9
- items:
- minimum: 0
- maximum: 255
- default: [0, 0, 0, 0, 0, 0, 0, 0, 0]
- description:
- Specifies each individual trackpad channel's touch threshold.
-
azoteq,hyst:
$ref: /schemas/types.yaml#/definitions/uint32
minimum: 0
@@ -720,6 +699,28 @@ patternProperties:
Specifies the number of points across which an axial gesture must
travel in order to be interpreted as a flick or swipe.
+ patternProperties:
+ "^channel-[0-8]$":
+ type: object
+ description: Represents a single trackpad channel.
+
+ properties:
+ azoteq,thresh:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ minimum: 0
+ maximum: 255
+ default: 0
+ description: Specifies the threshold for the channel.
+
+ azoteq,ati-base:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ minimum: 45
+ maximum: 300
+ default: 45
+ description: Specifies the channel's ATI base.
+
+ additionalProperties: false
+
dependencies:
azoteq,gesture-swipe: ["linux,keycodes"]
azoteq,timeout-tap-ms: ["linux,keycodes"]
@@ -780,14 +781,8 @@ examples:
azoteq,filt-str-lp-cnt = <1>;
azoteq,hyst = <4>;
- azoteq,thresh = <35>, <40>, <40>,
- <38>, <33>, <38>,
- <35>, <35>, <35>;
azoteq,ati-mode = <3>;
- azoteq,ati-base = <195>, <195>, <195>,
- <195>, <195>, <195>,
- <195>, <195>, <195>;
azoteq,ati-target = <512>;
azoteq,proj-bias = <1>;
@@ -804,6 +799,51 @@ examples:
azoteq,timeout-swipe-ms = <800>;
azoteq,timeout-tap-ms = <400>;
azoteq,thresh-swipe = <40>;
+
+ channel-0 {
+ azoteq,thresh = <35>;
+ azoteq,ati-base = <195>;
+ };
+
+ channel-1 {
+ azoteq,thresh = <40>;
+ azoteq,ati-base = <195>;
+ };
+
+ channel-2 {
+ azoteq,thresh = <40>;
+ azoteq,ati-base = <195>;
+ };
+
+ channel-3 {
+ azoteq,thresh = <38>;
+ azoteq,ati-base = <195>;
+ };
+
+ channel-4 {
+ azoteq,thresh = <33>;
+ azoteq,ati-base = <195>;
+ };
+
+ channel-5 {
+ azoteq,thresh = <38>;
+ azoteq,ati-base = <195>;
+ };
+
+ channel-6 {
+ azoteq,thresh = <35>;
+ azoteq,ati-base = <195>;
+ };
+
+ channel-7 {
+ azoteq,thresh = <35>;
+ azoteq,ati-base = <195>;
+ };
+
+ channel-8 {
+ azoteq,thresh = <35>;
+ azoteq,ati-base = <195>;
+ };
};
/*
--
2.34.1
^ permalink raw reply related
* [PATCH v2 1/2] Input: iqs626a - drop unused device node references
From: Jeff LaBundy @ 2023-01-27 22:29 UTC (permalink / raw)
To: dmitry.torokhov, robh+dt; +Cc: linux-input, devicetree, jeff
In-Reply-To: <Y9RQCQa69f3TaiWf@nixie71>
Each call to device/fwnode_get_named_child_node() must be matched
with a call to fwnode_handle_put() once the corresponding node is
no longer in use. This ensures a reference count remains balanced
in the case of dynamic device tree support.
Currently, the driver never calls fwnode_handle_put(); this patch
adds the missing calls. Because fwnode_handle_put() does not take
a const *fwnode_handle, the const qualifier is removed across all
corresponding *fwnode_handle instances.
As part of this change, trackpad channel touch thresholds and ATI
base values are now specified under single trackpad channel child
nodes. This enhancement moves both properties to scalar values as
opposed to arrays, making their types consistent across bindings.
Fixes: f1d2809de97a ("Input: Add support for Azoteq IQS626A")
Signed-off-by: Jeff LaBundy <jeff@labundy.com>
---
Changes in v2:
- Added support for trackpad channel child nodes and removed logic that
parsed former trackpad touch threshold and ATI base arrays
drivers/input/misc/iqs626a.c | 156 ++++++++++++++++-------------------
1 file changed, 73 insertions(+), 83 deletions(-)
diff --git a/drivers/input/misc/iqs626a.c b/drivers/input/misc/iqs626a.c
index 4727e6b95e41..90f997a905b5 100644
--- a/drivers/input/misc/iqs626a.c
+++ b/drivers/input/misc/iqs626a.c
@@ -458,18 +458,15 @@ struct iqs626_private {
static noinline_for_stack int
iqs626_parse_events(struct iqs626_private *iqs626,
- const struct fwnode_handle *ch_node,
- enum iqs626_ch_id ch_id)
+ struct fwnode_handle *ch_node, enum iqs626_ch_id ch_id)
{
struct iqs626_sys_reg *sys_reg = &iqs626->sys_reg;
struct i2c_client *client = iqs626->client;
- const struct fwnode_handle *ev_node;
+ struct fwnode_handle *ev_node;
const char *ev_name;
u8 *thresh, *hyst;
- unsigned int thresh_tp[IQS626_NUM_CH_TP_3];
unsigned int val;
- int num_ch = iqs626_channels[ch_id].num_ch;
- int error, i, j;
+ int i;
switch (ch_id) {
case IQS626_CH_ULP_0:
@@ -509,7 +506,7 @@ iqs626_parse_events(struct iqs626_private *iqs626,
* Trackpad touch events are simply described under the
* trackpad child node.
*/
- ev_node = ch_node;
+ ev_node = fwnode_handle_get(ch_node);
} else {
ev_name = iqs626_events[i].name;
ev_node = fwnode_get_named_child_node(ch_node, ev_name);
@@ -533,6 +530,7 @@ iqs626_parse_events(struct iqs626_private *iqs626,
dev_err(&client->dev,
"Invalid input type: %u\n",
val);
+ fwnode_handle_put(ev_node);
return -EINVAL;
}
@@ -547,6 +545,7 @@ iqs626_parse_events(struct iqs626_private *iqs626,
dev_err(&client->dev,
"Invalid %s channel hysteresis: %u\n",
fwnode_get_name(ch_node), val);
+ fwnode_handle_put(ev_node);
return -EINVAL;
}
@@ -567,6 +566,7 @@ iqs626_parse_events(struct iqs626_private *iqs626,
dev_err(&client->dev,
"Invalid %s channel threshold: %u\n",
fwnode_get_name(ch_node), val);
+ fwnode_handle_put(ev_node);
return -EINVAL;
}
@@ -574,32 +574,9 @@ iqs626_parse_events(struct iqs626_private *iqs626,
*thresh = val;
else
*(thresh + iqs626_events[i].th_offs) = val;
-
- continue;
- }
-
- if (!fwnode_property_present(ev_node, "azoteq,thresh"))
- continue;
-
- error = fwnode_property_read_u32_array(ev_node, "azoteq,thresh",
- thresh_tp, num_ch);
- if (error) {
- dev_err(&client->dev,
- "Failed to read %s channel thresholds: %d\n",
- fwnode_get_name(ch_node), error);
- return error;
}
- for (j = 0; j < num_ch; j++) {
- if (thresh_tp[j] > IQS626_CHx_THRESH_MAX) {
- dev_err(&client->dev,
- "Invalid %s channel threshold: %u\n",
- fwnode_get_name(ch_node), thresh_tp[j]);
- return -EINVAL;
- }
-
- sys_reg->tp_grp_reg.ch_reg_tp[j].thresh = thresh_tp[j];
- }
+ fwnode_handle_put(ev_node);
}
return 0;
@@ -607,16 +584,13 @@ iqs626_parse_events(struct iqs626_private *iqs626,
static noinline_for_stack int
iqs626_parse_ati_target(struct iqs626_private *iqs626,
- const struct fwnode_handle *ch_node,
- enum iqs626_ch_id ch_id)
+ struct fwnode_handle *ch_node, enum iqs626_ch_id ch_id)
{
struct iqs626_sys_reg *sys_reg = &iqs626->sys_reg;
struct i2c_client *client = iqs626->client;
- unsigned int ati_base[IQS626_NUM_CH_TP_3];
unsigned int val;
u8 *ati_target;
- int num_ch = iqs626_channels[ch_id].num_ch;
- int error, i;
+ int i;
switch (ch_id) {
case IQS626_CH_ULP_0:
@@ -683,40 +657,13 @@ iqs626_parse_ati_target(struct iqs626_private *iqs626,
*ati_target &= ~IQS626_CHx_ATI_BASE_MASK;
*ati_target |= val;
-
- return 0;
- }
-
- if (!fwnode_property_present(ch_node, "azoteq,ati-base"))
- return 0;
-
- error = fwnode_property_read_u32_array(ch_node, "azoteq,ati-base",
- ati_base, num_ch);
- if (error) {
- dev_err(&client->dev,
- "Failed to read %s channel ATI bases: %d\n",
- fwnode_get_name(ch_node), error);
- return error;
- }
-
- for (i = 0; i < num_ch; i++) {
- if (ati_base[i] < IQS626_TPx_ATI_BASE_MIN ||
- ati_base[i] > IQS626_TPx_ATI_BASE_MAX) {
- dev_err(&client->dev,
- "Invalid %s channel ATI base: %u\n",
- fwnode_get_name(ch_node), ati_base[i]);
- return -EINVAL;
- }
-
- ati_base[i] -= IQS626_TPx_ATI_BASE_MIN;
- sys_reg->tp_grp_reg.ch_reg_tp[i].ati_base = ati_base[i];
}
return 0;
}
static int iqs626_parse_pins(struct iqs626_private *iqs626,
- const struct fwnode_handle *ch_node,
+ struct fwnode_handle *ch_node,
const char *propname, u8 *enable)
{
struct i2c_client *client = iqs626->client;
@@ -764,13 +711,14 @@ static int iqs626_parse_pins(struct iqs626_private *iqs626,
}
static int iqs626_parse_trackpad(struct iqs626_private *iqs626,
- const struct fwnode_handle *ch_node)
+ struct fwnode_handle *ch_node,
+ enum iqs626_ch_id ch_id)
{
struct iqs626_sys_reg *sys_reg = &iqs626->sys_reg;
struct i2c_client *client = iqs626->client;
u8 *hyst = &sys_reg->tp_grp_reg.hyst;
+ int error, count, i;
unsigned int val;
- int error, count;
if (!fwnode_property_read_u32(ch_node, "azoteq,lta-update", &val)) {
if (val > IQS626_MISC_A_TPx_LTA_UPDATE_MAX) {
@@ -823,6 +771,48 @@ static int iqs626_parse_trackpad(struct iqs626_private *iqs626,
*hyst |= (val << IQS626_FILT_STR_LP_TPx_SHIFT);
}
+ for (i = 0; i < iqs626_channels[ch_id].num_ch; i++) {
+ u8 *ati_base = &sys_reg->tp_grp_reg.ch_reg_tp[i].ati_base;
+ u8 *thresh = &sys_reg->tp_grp_reg.ch_reg_tp[i].thresh;
+ struct fwnode_handle *tc_node;
+ char tc_name[10];
+
+ snprintf(tc_name, sizeof(tc_name), "channel-%d", i);
+
+ tc_node = fwnode_get_named_child_node(ch_node, tc_name);
+ if (!tc_node)
+ continue;
+
+ if (!fwnode_property_read_u32(tc_node, "azoteq,ati-base",
+ &val)) {
+ if (val < IQS626_TPx_ATI_BASE_MIN ||
+ val > IQS626_TPx_ATI_BASE_MAX) {
+ dev_err(&client->dev,
+ "Invalid %s %s ATI base: %u\n",
+ fwnode_get_name(ch_node), tc_name, val);
+ fwnode_handle_put(tc_node);
+ return -EINVAL;
+ }
+
+ *ati_base = val - IQS626_TPx_ATI_BASE_MIN;
+ }
+
+ if (!fwnode_property_read_u32(tc_node, "azoteq,thresh",
+ &val)) {
+ if (val > IQS626_CHx_THRESH_MAX) {
+ dev_err(&client->dev,
+ "Invalid %s %s threshold: %u\n",
+ fwnode_get_name(ch_node), tc_name, val);
+ fwnode_handle_put(tc_node);
+ return -EINVAL;
+ }
+
+ *thresh = val;
+ }
+
+ fwnode_handle_put(tc_node);
+ }
+
if (!fwnode_property_present(ch_node, "linux,keycodes"))
return 0;
@@ -889,8 +879,7 @@ static int iqs626_parse_trackpad(struct iqs626_private *iqs626,
static noinline_for_stack int
iqs626_parse_channel(struct iqs626_private *iqs626,
- const struct fwnode_handle *ch_node,
- enum iqs626_ch_id ch_id)
+ struct fwnode_handle *ch_node, enum iqs626_ch_id ch_id)
{
struct iqs626_sys_reg *sys_reg = &iqs626->sys_reg;
struct i2c_client *client = iqs626->client;
@@ -924,6 +913,20 @@ iqs626_parse_channel(struct iqs626_private *iqs626,
return -EINVAL;
}
+ error = iqs626_parse_ati_target(iqs626, ch_node, ch_id);
+ if (error)
+ return error;
+
+ error = iqs626_parse_events(iqs626, ch_node, ch_id);
+ if (error)
+ return error;
+
+ if (!fwnode_property_present(ch_node, "azoteq,ati-exclude"))
+ sys_reg->redo_ati |= iqs626_channels[ch_id].active;
+
+ if (!fwnode_property_present(ch_node, "azoteq,reseed-disable"))
+ sys_reg->reseed |= iqs626_channels[ch_id].active;
+
*engine |= IQS626_CHx_ENG_0_MEAS_CAP_SIZE;
if (fwnode_property_present(ch_node, "azoteq,meas-cap-decrease"))
*engine &= ~IQS626_CHx_ENG_0_MEAS_CAP_SIZE;
@@ -1057,7 +1060,7 @@ iqs626_parse_channel(struct iqs626_private *iqs626,
*(engine + 1) |= IQS626_CHx_ENG_1_ATI_BAND_TIGHTEN;
if (ch_id == IQS626_CH_TP_2 || ch_id == IQS626_CH_TP_3)
- return iqs626_parse_trackpad(iqs626, ch_node);
+ return iqs626_parse_trackpad(iqs626, ch_node, ch_id);
if (ch_id == IQS626_CH_ULP_0) {
sys_reg->ch_reg_ulp.hyst &= ~IQS626_ULP_PROJ_ENABLE;
@@ -1378,23 +1381,10 @@ static int iqs626_parse_prop(struct iqs626_private *iqs626)
continue;
error = iqs626_parse_channel(iqs626, ch_node, i);
+ fwnode_handle_put(ch_node);
if (error)
return error;
- error = iqs626_parse_ati_target(iqs626, ch_node, i);
- if (error)
- return error;
-
- error = iqs626_parse_events(iqs626, ch_node, i);
- if (error)
- return error;
-
- if (!fwnode_property_present(ch_node, "azoteq,ati-exclude"))
- sys_reg->redo_ati |= iqs626_channels[i].active;
-
- if (!fwnode_property_present(ch_node, "azoteq,reseed-disable"))
- sys_reg->reseed |= iqs626_channels[i].active;
-
sys_reg->active |= iqs626_channels[i].active;
}
--
2.34.1
^ permalink raw reply related
* [PATCH v2 0/2] Miscellaneous fixes for Azoteq IQS626A
From: Jeff LaBundy @ 2023-01-27 22:28 UTC (permalink / raw)
To: dmitry.torokhov, robh+dt; +Cc: linux-input, devicetree, jeff
This series addresses a fwnode_handle reference count leak. Tightly
coupled with this logic is that behind the discussion in [1], where
it was pointed out that two properties in question have different
types across bindings for the same vendor.
Addressing the latter in fact simplifies the former; therefore both
changes are introduced in patch [1/2]. As there are no known users
of this driver, it is safe to change the binding in this way.
Patch [2/2] makes the corresponding documentation change and carries
a fixes tag so that it accompanies patch [1/2] into stable releases.
[1] https://patchwork.kernel.org/patch/13116327/
Jeff LaBundy (2):
Input: iqs626a - drop unused device node references
dt-bindings: input: iqs626a: Redefine trackpad property types
.../devicetree/bindings/input/iqs626a.yaml | 94 ++++++++---
drivers/input/misc/iqs626a.c | 156 ++++++++----------
2 files changed, 140 insertions(+), 110 deletions(-)
--
2.34.1
^ permalink raw reply
* Re: [PATCH] HID: quirks: Add quirk for Logitech G923 Xbox steering wheel
From: Walt Holman @ 2023-01-27 22:06 UTC (permalink / raw)
To: linux-input, linux-kernel, Mattijs Korpershoek
In-Reply-To: <823df262-aa1d-4340-666f-07b991fce64b@gmail.com>
On 1/27/23 16:03, Walt Holman wrote:
> Hello,
>
> This patch adds support for the Logitech G923 Xbox edition steering
> wheel.
>
> -Walt
>
> diff -uprN linux-master-source/drivers/hid/hid-ids.h linux-master-target/drivers/hid/hid-ids.h
> --- linux-master-source/drivers/hid/hid-ids.h 2023-01-27 15:18:14.000000000 -0600
> +++ linux-master-target/drivers/hid/hid-ids.h 2023-01-27 15:50:24.077639994 -0600
> @@ -819,6 +819,7 @@
> #define USB_DEVICE_ID_LOGITECH_G510_USB_AUDIO 0xc22e
> #define USB_DEVICE_ID_LOGITECH_G29_WHEEL 0xc24f
> #define USB_DEVICE_ID_LOGITECH_G920_WHEEL 0xc262
> +#define USB_DEVICE_ID_LOGITECH_G923_XBOX_WHEEL 0xc26e
> #define USB_DEVICE_ID_LOGITECH_WINGMAN_F3D 0xc283
> #define USB_DEVICE_ID_LOGITECH_FORCE3D_PRO 0xc286
> #define USB_DEVICE_ID_LOGITECH_FLIGHT_SYSTEM_G940 0xc287
> diff -uprN linux-master-source/drivers/hid/hid-logitech-hidpp.c linux-master-target/drivers/hid/hid-logitech-hidpp.c
> --- linux-master-source/drivers/hid/hid-logitech-hidpp.c 2023-01-27 15:18:14.000000000 -0600
> +++ linux-master-target/drivers/hid/hid-logitech-hidpp.c 2023-01-27 15:50:24.077639994 -0600
> @@ -4347,6 +4347,9 @@ static const struct hid_device_id hidpp_
> { /* Logitech G920 Wheel over USB */
> HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_G920_WHEEL),
> .driver_data = HIDPP_QUIRK_CLASS_G920 | HIDPP_QUIRK_FORCE_OUTPUT_REPORTS},
> + { /* Logitech G923 Wheel (Xbox version) over USB */
> + HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_G923_XBOX_WHEEL),
> + .driver_data = HIDPP_QUIRK_CLASS_G920 | HIDPP_QUIRK_FORCE_OUTPUT_REPORTS },
> { /* Logitech G Pro Gaming Mouse over USB */
> HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, 0xC088) },
>
Signed off by: Walt Holman (waltholman09@gmail.com)
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox