* Re: [PATCH v3] Input: bcm5974 - check endpoint type before starting traffic
From: Javier Carrasco @ 2023-11-22 12:48 UTC (permalink / raw)
To: John Horan, Henrik Rydberg, Dmitry Torokhov
Cc: linux-input, linux-kernel, syzbot+348331f63b034f89b622
In-Reply-To: <20231007-topic-bcm5974_bulk-v3-1-d0f38b9d2935@gmail.com>
On 14.10.23 12:20, Javier Carrasco wrote:
> syzbot has found a type mismatch between a USB pipe and the transfer
> endpoint, which is triggered by the bcm5974 driver[1].
>
> This driver expects the device to provide input interrupt endpoints and
> if that is not the case, the driver registration should terminate.
>
> Repros are available to reproduce this issue with a certain setup for
> the dummy_hcd, leading to an interrupt/bulk mismatch which is caught in
> the USB core after calling usb_submit_urb() with the following message:
> "BOGUS urb xfer, pipe 1 != type 3"
>
> Some other device drivers (like the appletouch driver bcm5974 is mainly
> based on) provide some checking mechanism to make sure that an IN
> interrupt endpoint is available. In this particular case the endpoint
> addresses are provided by a config table, so the checking can be
> targeted to the provided endpoints.
>
> Add some basic checking to guarantee that the endpoints available match
> the expected type for both the trackpad and button endpoints.
>
> This issue was only found for the trackpad endpoint, but the checking
> has been added to the button endpoint as well for the same reasons.
>
> Given that there was never a check for the endpoint type, this bug has
> been there since the first implementation of the driver (f89bd95c5c94).
>
> [1] https://syzkaller.appspot.com/bug?extid=348331f63b034f89b622
>
> Fixes: f89bd95c5c94 ("Input: bcm5974 - add driver for Macbook Air and Pro Penryn touchpads")
> Signed-off-by: Javier Carrasco <javier.carrasco.cruz@gmail.com>
> Reported-and-tested-by: syzbot+348331f63b034f89b622@syzkaller.appspotmail.com
> ---
> Changes in v3:
> - Use usb_check_int_endpoints() to validate the endpoints.
> - Link to v2: https://lore.kernel.org/r/20231007-topic-bcm5974_bulk-v2-1-021131c83efb@gmail.com
>
> Changes in v2:
> - Keep error = -ENOMEM for the rest of the probe and return -ENODEV if
> the endpoint check fails.
> - Check function returns now bool and was renamed (_is_ for
> bool-returning functions).
> - Link to v1: https://lore.kernel.org/r/20231007-topic-bcm5974_bulk-v1-1-355be9f8ad80@gmail.com
> ---
> drivers/input/mouse/bcm5974.c | 20 ++++++++++++++++++++
> 1 file changed, 20 insertions(+)
>
> diff --git a/drivers/input/mouse/bcm5974.c b/drivers/input/mouse/bcm5974.c
> index ca150618d32f..953992b458e9 100644
> --- a/drivers/input/mouse/bcm5974.c
> +++ b/drivers/input/mouse/bcm5974.c
> @@ -19,6 +19,7 @@
> * Copyright (C) 2006 Nicolas Boichat (nicolas@boichat.ch)
> */
>
> +#include "linux/usb.h"
> #include <linux/kernel.h>
> #include <linux/errno.h>
> #include <linux/slab.h>
> @@ -193,6 +194,8 @@ enum tp_type {
>
> /* list of device capability bits */
> #define HAS_INTEGRATED_BUTTON 1
> +/* maximum number of supported endpoints (currently trackpad and button) */
> +#define MAX_ENDPOINTS 2
>
> /* trackpad finger data block size */
> #define FSIZE_TYPE1 (14 * sizeof(__le16))
> @@ -891,6 +894,18 @@ static int bcm5974_resume(struct usb_interface *iface)
> return error;
> }
>
> +static bool bcm5974_check_endpoints(struct usb_interface *iface,
> + const struct bcm5974_config *cfg)
> +{
> + u8 ep_addr[MAX_ENDPOINTS + 1] = {0};
> +
> + ep_addr[0] = cfg->tp_ep;
> + if (cfg->tp_type == TYPE1)
> + ep_addr[1] = cfg->bt_ep;
> +
> + return usb_check_int_endpoints(iface, ep_addr);
> +}
> +
> static int bcm5974_probe(struct usb_interface *iface,
> const struct usb_device_id *id)
> {
> @@ -903,6 +918,11 @@ static int bcm5974_probe(struct usb_interface *iface,
> /* find the product index */
> cfg = bcm5974_get_config(udev);
>
> + if (!bcm5974_check_endpoints(iface, cfg)) {
> + dev_err(&iface->dev, "Unexpected non-int endpoint\n");
> + return -ENODEV;
> + }
> +
> /* allocate memory for our device state and initialize it */
> dev = kzalloc(sizeof(struct bcm5974), GFP_KERNEL);
> input_dev = input_allocate_device();
>
> ---
> base-commit: 401644852d0b2a278811de38081be23f74b5bb04
> change-id: 20231007-topic-bcm5974_bulk-c66b743ba7ba
>
> Best regards,
Gentle ping, syzbot keeps on reporting this bug (last report 7 days ago).
Thanks and best regards,
Javier Carrasco
^ permalink raw reply
* Re: [PATCH v5 22/39] dt-bindings: input: Add Cirrus EP93xx keypad
From: Rob Herring @ 2023-11-22 11:02 UTC (permalink / raw)
To: Nikita Shubin
Cc: Conor Dooley, linux-kernel, Krzysztof Kozlowski, linux-input,
Rob Herring, Alexander Sverdlin, Dmitry Torokhov,
Krzysztof Kozlowski, devicetree
In-Reply-To: <20231122-ep93xx-v5-22-d59a76d5df29@maquefel.me>
On Wed, 22 Nov 2023 12:00:00 +0300, Nikita Shubin wrote:
> Add YAML bindings for ep93xx SoC keypad.
>
> Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
> Signed-off-by: Nikita Shubin <nikita.shubin@maquefel.me>
> ---
> .../bindings/input/cirrus,ep9307-keypad.yaml | 87 ++++++++++++++++++++++
> 1 file changed, 87 insertions(+)
>
My bot found errors running 'make DT_CHECKER_FLAGS=-m dt_binding_check'
on your patch (DT_CHECKER_FLAGS is new in v5.13):
yamllint warnings/errors:
dtschema/dtc warnings/errors:
Documentation/devicetree/bindings/dma/cirrus,ep9301-dma-m2m.example.dts:24:18: fatal error: dt-bindings/soc/cirrus,ep9301-syscon.h: No such file or directory
make[2]: *** [scripts/Makefile.lib:419: Documentation/devicetree/bindings/dma/cirrus,ep9301-dma-m2m.example.dtb] Error 1
doc reference errors (make refcheckdocs):
See https://patchwork.ozlabs.org/project/devicetree-bindings/patch/20231122-ep93xx-v5-22-d59a76d5df29@maquefel.me
The base for the series is generally the latest rc1. A different dependency
should be noted in *this* patch.
If you already ran 'make dt_binding_check' and didn't see the above
error(s), then make sure 'yamllint' is installed and dt-schema is up to
date:
pip3 install dtschema --upgrade
Please check and re-submit after running the above command yourself. Note
that DT_SCHEMA_FILES can be set to your schema file to speed up checking
your schema. However, it must be unset to test all examples with your schema.
^ permalink raw reply
* Re: [PATCH RESEND] HID: multitouch: Add quirk for HONOR GLO-GXXX touchpad
From: Jiri Kosina @ 2023-11-22 10:28 UTC (permalink / raw)
To: Aoba K
Cc: Dmitry Torokhov, Jiri Kosina, Benjamin Tissoires, Henrik Rydberg,
linux-input
In-Reply-To: <DM6PR04MB412153443FCC205E5A9DF20DCEBBA@DM6PR04MB4121.namprd04.prod.outlook.com>
On Tue, 21 Nov 2023, Aoba K wrote:
> Honor MagicBook 13 2023 has a touchpad which do not switch to the
> multitouch mode until the input mode feature is written by the host.
> The touchpad do report the input mode at touchpad(3), while itself
> working under mouse mode. As a workaround, it is possible to call
> MT_QUIRE_FORCE_GET_FEATURE to force set feature in mt_set_input_mode
> for such device.
> The touchpad reports as BLTP7853, which cannot retrive any useful
> manufacture information on the internel by this string at present.
> As the serial number of the laptop is GLO-G52, while DMI info reports
> the laptop serial number as GLO-GXXX, this workaround should applied
> to all models which has the GLO-GXXX.
Applied, thanks.
--
Jiri Kosina
SUSE Labs
^ permalink raw reply
* Re: [PATCH v5 00/39] ep93xx device tree conversion
From: Andy Shevchenko @ 2023-11-22 10:26 UTC (permalink / raw)
To: nikita.shubin
Cc: Hartley Sweeten, Alexander Sverdlin, Russell King,
Lukasz Majewski, Linus Walleij, Bartosz Golaszewski,
Michael Turquette, Stephen Boyd, Sebastian Reichel, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Vinod Koul, Wim Van Sebroeck,
Guenter Roeck, Thierry Reding, Uwe Kleine-König, Mark Brown,
David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Miquel Raynal, Richard Weinberger, Vignesh Raghavendra,
Damien Le Moal, Sergey Shtylyov, Dmitry Torokhov, Liam Girdwood,
Jaroslav Kysela, Takashi Iwai, linux-arm-kernel, linux-kernel,
linux-gpio, linux-clk, linux-pm, devicetree, dmaengine,
linux-watchdog, linux-pwm, linux-spi, netdev, linux-mtd,
linux-ide, linux-input, linux-sound, Bartosz Golaszewski,
Krzysztof Kozlowski, Andrew Lunn
In-Reply-To: <20231122-ep93xx-v5-0-d59a76d5df29@maquefel.me>
On Wed, Nov 22, 2023 at 11:59:38AM +0300, Nikita Shubin via B4 Relay wrote:
> This series aims to convert ep93xx from platform to full device tree support.
>
> The main goal is to receive ACK's to take it via Arnd's arm-soc branch.
>
> Bit thanks to Krzysztof Kozlowski for his zero-day review.
>
> Krzysztof, Sergey, i've changed some files that you have already provided tag:
> - dt-bindings: spi: Add Cirrus EP93xx
> - ata: pata_ep93xx: add device tree support
>
> Added DMA and renamed clock header file.
>
> Sergey, Damien, i've changed some files that you have already provided tag:
> - ata: pata_ep93xx: add device tree support
>
> Added OF DMA setup and dropped platform file.
>
> Mark, i've changed some files that you have already provided tag:
> - spi: ep93xx: add DT support for Cirrus EP93xx
>
> Added OF DMA setup and dropped platform file.
>
> Major updates:
>
> - reboot, pinctrl, clk are now auxiliary and instantiated from SoC driver as
> Stephen Boyd suggested
> - i moved all clock code to clk-ep93xx.c, as it no longer has a separate dt node,
> so XTALI is externalk for this driver and passed as index 0, and pll1, pll2 are
> internal and passed via pointer for parent_data
> - reboot bindings dropped
> - pinctrl and clk bindings moved to syscon YAML
> - xlate added for DMA, so now all DMA users use it via device tree, otherwise probe
> order messed up and we might end up probing before DMA with no possibility to defer probing
> - DMA port bindings dropped, they are described in YAML file
> - DMA platform code dropped
> - i2s, spi, pata now use OF DMA
> - YAML and dtsi/dts changed to reflect auxiliary conversion and DMA changes
> Patches should be now formated with '--patience'
It seems we are a step behind on Torvalds' mind :-)
A few weeks ago he suggested to use --histogram is the best option.
But hey, --patience probably is good enough for this version, so
thank you for using it!
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply
* Re: [PATCH 0/2] hid-asus: reset the backlight brightness level on resume
From: Jiri Kosina @ 2023-11-22 10:25 UTC (permalink / raw)
To: Luke Jones; +Cc: Denis Benato, benjamin.tissoires, linux-input, linux-kernel
In-Reply-To: <MRNH4S.965MCNIAPCDV2@ljones.dev>
On Wed, 22 Nov 2023, Luke Jones wrote:
> >> I want to express my gratitude toward Luke for his guidance and his help
> >> in submitting this fix.
> >>
> >> I confirm those patches were sent in my behalf.
> >
> > Luke, as you were in the supply chain of the patches, could you please
> > provide Signed-off-by: tags so that I can add them into the chain?
>
> Signed-off-by: Luke D. Jones <luke@ljones.dev>
Applied, thanks.
--
Jiri Kosina
SUSE Labs
^ permalink raw reply
* [PATCH v5 23/39] input: keypad: ep93xx: add DT support for Cirrus EP93xx
From: Nikita Shubin via B4 Relay @ 2023-11-22 9:00 UTC (permalink / raw)
To: Hartley Sweeten, Alexander Sverdlin, Russell King,
Dmitry Torokhov, Jonathan Cameron, Nikita Shubin, Linus Walleij,
Sergey Shtylyov, Damien Le Moal, Thierry Reding
Cc: Uwe Kleine-König, linux-arm-kernel, linux-kernel,
linux-input, Alexander Sverdlin
In-Reply-To: <20231122-ep93xx-v5-0-d59a76d5df29@maquefel.me>
From: Nikita Shubin <nikita.shubin@maquefel.me>
- drop flags, they were not used anyway
- add OF ID match table
- process "autorepeat", "debounce-delay-ms", prescale from device tree
- drop platform data usage and it's header
- keymap goes from device tree now on
Acked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Nikita Shubin <nikita.shubin@maquefel.me>
---
arch/arm/mach-ep93xx/core.c | 46 ---------------------
drivers/input/keyboard/ep93xx_keypad.c | 74 ++++++++++------------------------
include/linux/soc/cirrus/ep93xx.h | 4 --
3 files changed, 22 insertions(+), 102 deletions(-)
diff --git a/arch/arm/mach-ep93xx/core.c b/arch/arm/mach-ep93xx/core.c
index c81a2e84821b..c60a9d3632dd 100644
--- a/arch/arm/mach-ep93xx/core.c
+++ b/arch/arm/mach-ep93xx/core.c
@@ -696,52 +696,6 @@ void __init ep93xx_register_keypad(struct ep93xx_keypad_platform_data *data)
platform_device_register(&ep93xx_keypad_device);
}
-int ep93xx_keypad_acquire_gpio(struct platform_device *pdev)
-{
- int err;
- int i;
-
- for (i = 0; i < 8; i++) {
- err = gpio_request(EP93XX_GPIO_LINE_C(i), dev_name(&pdev->dev));
- if (err)
- goto fail_gpio_c;
- err = gpio_request(EP93XX_GPIO_LINE_D(i), dev_name(&pdev->dev));
- if (err)
- goto fail_gpio_d;
- }
-
- /* Enable the keypad controller; GPIO ports C and D used for keypad */
- ep93xx_devcfg_clear_bits(EP93XX_SYSCON_DEVCFG_KEYS |
- EP93XX_SYSCON_DEVCFG_GONK);
-
- return 0;
-
-fail_gpio_d:
- gpio_free(EP93XX_GPIO_LINE_C(i));
-fail_gpio_c:
- for (--i; i >= 0; --i) {
- gpio_free(EP93XX_GPIO_LINE_C(i));
- gpio_free(EP93XX_GPIO_LINE_D(i));
- }
- return err;
-}
-EXPORT_SYMBOL(ep93xx_keypad_acquire_gpio);
-
-void ep93xx_keypad_release_gpio(struct platform_device *pdev)
-{
- int i;
-
- for (i = 0; i < 8; i++) {
- gpio_free(EP93XX_GPIO_LINE_C(i));
- gpio_free(EP93XX_GPIO_LINE_D(i));
- }
-
- /* Disable the keypad controller; GPIO ports C and D used for GPIO */
- ep93xx_devcfg_set_bits(EP93XX_SYSCON_DEVCFG_KEYS |
- EP93XX_SYSCON_DEVCFG_GONK);
-}
-EXPORT_SYMBOL(ep93xx_keypad_release_gpio);
-
/*************************************************************************
* EP93xx I2S audio peripheral handling
*************************************************************************/
diff --git a/drivers/input/keyboard/ep93xx_keypad.c b/drivers/input/keyboard/ep93xx_keypad.c
index 55075addcac2..50b2082ed51b 100644
--- a/drivers/input/keyboard/ep93xx_keypad.c
+++ b/drivers/input/keyboard/ep93xx_keypad.c
@@ -6,20 +6,13 @@
*
* Based on the pxa27x matrix keypad controller by Rodolfo Giometti.
*
- * NOTE:
- *
- * The 3-key reset is triggered by pressing the 3 keys in
- * Row 0, Columns 2, 4, and 7 at the same time. This action can
- * be disabled by setting the EP93XX_KEYPAD_DISABLE_3_KEY flag.
- *
- * Normal operation for the matrix does not autorepeat the key press.
- * This action can be enabled by setting the EP93XX_KEYPAD_AUTOREPEAT
- * flag.
*/
#include <linux/bits.h>
+#include <linux/mod_devicetable.h>
#include <linux/module.h>
#include <linux/platform_device.h>
+#include <linux/property.h>
#include <linux/interrupt.h>
#include <linux/clk.h>
#include <linux/io.h>
@@ -27,7 +20,6 @@
#include <linux/input/matrix_keypad.h>
#include <linux/slab.h>
#include <linux/soc/cirrus/ep93xx.h>
-#include <linux/platform_data/keypad-ep93xx.h>
#include <linux/pm_wakeirq.h>
/*
@@ -61,12 +53,16 @@
#define KEY_REG_KEY1_MASK GENMASK(5, 0)
#define KEY_REG_KEY1_SHIFT 0
+#define EP93XX_MATRIX_ROWS (8)
+#define EP93XX_MATRIX_COLS (8)
+
#define EP93XX_MATRIX_SIZE (EP93XX_MATRIX_ROWS * EP93XX_MATRIX_COLS)
struct ep93xx_keypad {
- struct ep93xx_keypad_platform_data *pdata;
struct input_dev *input_dev;
struct clk *clk;
+ unsigned int debounce;
+ uint16_t prescale;
void __iomem *mmio_base;
@@ -133,23 +129,11 @@ static irqreturn_t ep93xx_keypad_irq_handler(int irq, void *dev_id)
static void ep93xx_keypad_config(struct ep93xx_keypad *keypad)
{
- struct ep93xx_keypad_platform_data *pdata = keypad->pdata;
unsigned int val = 0;
- clk_set_rate(keypad->clk, pdata->clk_rate);
+ val |= ((keypad->debounce << KEY_INIT_DBNC_SHIFT) & KEY_INIT_DBNC_MASK);
- if (pdata->flags & EP93XX_KEYPAD_DISABLE_3_KEY)
- val |= KEY_INIT_DIS3KY;
- if (pdata->flags & EP93XX_KEYPAD_DIAG_MODE)
- val |= KEY_INIT_DIAG;
- if (pdata->flags & EP93XX_KEYPAD_BACK_DRIVE)
- val |= KEY_INIT_BACK;
- if (pdata->flags & EP93XX_KEYPAD_TEST_MODE)
- val |= KEY_INIT_T2;
-
- val |= ((pdata->debounce << KEY_INIT_DBNC_SHIFT) & KEY_INIT_DBNC_MASK);
-
- val |= ((pdata->prescale << KEY_INIT_PRSCL_SHIFT) & KEY_INIT_PRSCL_MASK);
+ val |= ((keypad->prescale << KEY_INIT_PRSCL_SHIFT) & KEY_INIT_PRSCL_MASK);
__raw_writel(val, keypad->mmio_base + KEY_INIT);
}
@@ -220,17 +204,10 @@ static int ep93xx_keypad_resume(struct device *dev)
static DEFINE_SIMPLE_DEV_PM_OPS(ep93xx_keypad_pm_ops,
ep93xx_keypad_suspend, ep93xx_keypad_resume);
-static void ep93xx_keypad_release_gpio_action(void *_pdev)
-{
- struct platform_device *pdev = _pdev;
-
- ep93xx_keypad_release_gpio(pdev);
-}
-
static int ep93xx_keypad_probe(struct platform_device *pdev)
{
+ struct device *dev = &pdev->dev;
struct ep93xx_keypad *keypad;
- const struct matrix_keymap_data *keymap_data;
struct input_dev *input_dev;
int err;
@@ -238,14 +215,6 @@ static int ep93xx_keypad_probe(struct platform_device *pdev)
if (!keypad)
return -ENOMEM;
- keypad->pdata = dev_get_platdata(&pdev->dev);
- if (!keypad->pdata)
- return -EINVAL;
-
- keymap_data = keypad->pdata->keymap_data;
- if (!keymap_data)
- return -EINVAL;
-
keypad->irq = platform_get_irq(pdev, 0);
if (keypad->irq < 0)
return keypad->irq;
@@ -254,19 +223,13 @@ static int ep93xx_keypad_probe(struct platform_device *pdev)
if (IS_ERR(keypad->mmio_base))
return PTR_ERR(keypad->mmio_base);
- err = ep93xx_keypad_acquire_gpio(pdev);
- if (err)
- return err;
-
- err = devm_add_action_or_reset(&pdev->dev,
- ep93xx_keypad_release_gpio_action, pdev);
- if (err)
- return err;
-
keypad->clk = devm_clk_get(&pdev->dev, NULL);
if (IS_ERR(keypad->clk))
return PTR_ERR(keypad->clk);
+ device_property_read_u32(dev, "debounce-delay-ms", &keypad->debounce);
+ device_property_read_u16(dev, "cirrus,prescale", &keypad->prescale);
+
input_dev = devm_input_allocate_device(&pdev->dev);
if (!input_dev)
return -ENOMEM;
@@ -278,13 +241,13 @@ static int ep93xx_keypad_probe(struct platform_device *pdev)
input_dev->open = ep93xx_keypad_open;
input_dev->close = ep93xx_keypad_close;
- err = matrix_keypad_build_keymap(keymap_data, NULL,
+ err = matrix_keypad_build_keymap(NULL, NULL,
EP93XX_MATRIX_ROWS, EP93XX_MATRIX_COLS,
keypad->keycodes, input_dev);
if (err)
return err;
- if (keypad->pdata->flags & EP93XX_KEYPAD_AUTOREPEAT)
+ if (device_property_read_bool(&pdev->dev, "autorepeat"))
__set_bit(EV_REP, input_dev->evbit);
input_set_drvdata(input_dev, keypad);
@@ -315,10 +278,17 @@ static int ep93xx_keypad_remove(struct platform_device *pdev)
return 0;
}
+static const struct of_device_id ep93xx_keypad_of_ids[] = {
+ { .compatible = "cirrus,ep9307-keypad" },
+ { /* sentinel */ }
+};
+MODULE_DEVICE_TABLE(of, ep93xx_keypad_of_ids);
+
static struct platform_driver ep93xx_keypad_driver = {
.driver = {
.name = "ep93xx-keypad",
.pm = pm_sleep_ptr(&ep93xx_keypad_pm_ops),
+ .of_match_table = ep93xx_keypad_of_ids,
},
.probe = ep93xx_keypad_probe,
.remove = ep93xx_keypad_remove,
diff --git a/include/linux/soc/cirrus/ep93xx.h b/include/linux/soc/cirrus/ep93xx.h
index fc35be3af723..ea2b2c1074e4 100644
--- a/include/linux/soc/cirrus/ep93xx.h
+++ b/include/linux/soc/cirrus/ep93xx.h
@@ -41,8 +41,6 @@ int ep93xx_pwm_acquire_gpio(struct platform_device *pdev);
void ep93xx_pwm_release_gpio(struct platform_device *pdev);
int ep93xx_ide_acquire_gpio(struct platform_device *pdev);
void ep93xx_ide_release_gpio(struct platform_device *pdev);
-int ep93xx_keypad_acquire_gpio(struct platform_device *pdev);
-void ep93xx_keypad_release_gpio(struct platform_device *pdev);
int ep93xx_i2s_acquire(void);
void ep93xx_i2s_release(void);
unsigned int ep93xx_chip_revision(void);
@@ -52,8 +50,6 @@ static inline int ep93xx_pwm_acquire_gpio(struct platform_device *pdev) { return
static inline void ep93xx_pwm_release_gpio(struct platform_device *pdev) {}
static inline int ep93xx_ide_acquire_gpio(struct platform_device *pdev) { return 0; }
static inline void ep93xx_ide_release_gpio(struct platform_device *pdev) {}
-static inline int ep93xx_keypad_acquire_gpio(struct platform_device *pdev) { return 0; }
-static inline void ep93xx_keypad_release_gpio(struct platform_device *pdev) {}
static inline int ep93xx_i2s_acquire(void) { return 0; }
static inline void ep93xx_i2s_release(void) {}
static inline unsigned int ep93xx_chip_revision(void) { return 0; }
--
2.41.0
^ permalink raw reply related
* [PATCH v5 22/39] dt-bindings: input: Add Cirrus EP93xx keypad
From: Nikita Shubin via B4 Relay @ 2023-11-22 9:00 UTC (permalink / raw)
To: Dmitry Torokhov, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Alexander Sverdlin
Cc: linux-input, devicetree, linux-kernel, Alexander Sverdlin,
Krzysztof Kozlowski
In-Reply-To: <20231122-ep93xx-v5-0-d59a76d5df29@maquefel.me>
From: Nikita Shubin <nikita.shubin@maquefel.me>
Add YAML bindings for ep93xx SoC keypad.
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Signed-off-by: Nikita Shubin <nikita.shubin@maquefel.me>
---
.../bindings/input/cirrus,ep9307-keypad.yaml | 87 ++++++++++++++++++++++
1 file changed, 87 insertions(+)
diff --git a/Documentation/devicetree/bindings/input/cirrus,ep9307-keypad.yaml b/Documentation/devicetree/bindings/input/cirrus,ep9307-keypad.yaml
new file mode 100644
index 000000000000..c4f9850d8cdd
--- /dev/null
+++ b/Documentation/devicetree/bindings/input/cirrus,ep9307-keypad.yaml
@@ -0,0 +1,87 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/input/cirrus,ep9307-keypad.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Cirrus ep93xx keypad
+
+maintainers:
+ - Alexander Sverdlin <alexander.sverdlin@gmail.com>
+
+allOf:
+ - $ref: /schemas/input/matrix-keymap.yaml#
+
+description:
+ The KPP is designed to interface with a keypad matrix with 2-point contact
+ or 3-point contact keys. The KPP is designed to simplify the software task
+ of scanning a keypad matrix. The KPP is capable of detecting, debouncing,
+ and decoding one or multiple keys pressed simultaneously on a keypad.
+
+properties:
+ compatible:
+ oneOf:
+ - const: cirrus,ep9307-keypad
+ - items:
+ - enum:
+ - cirrus,ep9312-keypad
+ - cirrus,ep9315-keypad
+ - const: cirrus,ep9307-keypad
+
+ reg:
+ maxItems: 1
+
+ interrupts:
+ maxItems: 1
+
+ clocks:
+ maxItems: 1
+
+ debounce-delay-ms:
+ description: |
+ Time in microseconds that key must be pressed or
+ released for state change interrupt to trigger.
+
+ cirrus,prescale:
+ description: row/column counter pre-scaler load value
+ $ref: /schemas/types.yaml#/definitions/uint16
+ maximum: 1023
+
+required:
+ - compatible
+ - reg
+ - interrupts
+ - clocks
+ - linux,keymap
+
+unevaluatedProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/input/input.h>
+ #include <dt-bindings/soc/cirrus,ep9301-syscon.h>
+ keypad@800f0000 {
+ compatible = "cirrus,ep9307-keypad";
+ reg = <0x800f0000 0x0c>;
+ interrupt-parent = <&vic0>;
+ interrupts = <29>;
+ clocks = <&eclk EP93XX_CLK_KEYPAD>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&keypad_default_pins>;
+ linux,keymap = <KEY_UP>,
+ <KEY_DOWN>,
+ <KEY_VOLUMEDOWN>,
+ <KEY_HOME>,
+ <KEY_RIGHT>,
+ <KEY_LEFT>,
+ <KEY_ENTER>,
+ <KEY_VOLUMEUP>,
+ <KEY_F6>,
+ <KEY_F8>,
+ <KEY_F9>,
+ <KEY_F10>,
+ <KEY_F1>,
+ <KEY_F2>,
+ <KEY_F3>,
+ <KEY_POWER>;
+ };
--
2.41.0
^ permalink raw reply related
* [PATCH v5 00/39] ep93xx device tree conversion
From: Nikita Shubin via B4 Relay @ 2023-11-22 8:59 UTC (permalink / raw)
To: Hartley Sweeten, Alexander Sverdlin, Russell King,
Lukasz Majewski, Linus Walleij, Bartosz Golaszewski,
Andy Shevchenko, Michael Turquette, Stephen Boyd,
Sebastian Reichel, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Nikita Shubin, Vinod Koul, Wim Van Sebroeck, Guenter Roeck,
Thierry Reding, Uwe Kleine-König, Mark Brown,
David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Miquel Raynal, Richard Weinberger, Vignesh Raghavendra,
Damien Le Moal, Sergey Shtylyov, Dmitry Torokhov, Liam Girdwood,
Jaroslav Kysela, Takashi Iwai
Cc: linux-arm-kernel, linux-kernel, linux-gpio, linux-clk, linux-pm,
devicetree, dmaengine, linux-watchdog, linux-pwm, linux-spi,
netdev, linux-mtd, linux-ide, linux-input, linux-sound,
Bartosz Golaszewski, Krzysztof Kozlowski, Andrew Lunn,
Andy Shevchenko
This series aims to convert ep93xx from platform to full device tree support.
The main goal is to receive ACK's to take it via Arnd's arm-soc branch.
Bit thanks to Krzysztof Kozlowski for his zero-day review.
Krzysztof, Sergey, i've changed some files that you have already provided tag:
- dt-bindings: spi: Add Cirrus EP93xx
- ata: pata_ep93xx: add device tree support
Added DMA and renamed clock header file.
Sergey, Damien, i've changed some files that you have already provided tag:
- ata: pata_ep93xx: add device tree support
Added OF DMA setup and dropped platform file.
Mark, i've changed some files that you have already provided tag:
- spi: ep93xx: add DT support for Cirrus EP93xx
Added OF DMA setup and dropped platform file.
Major updates:
- reboot, pinctrl, clk are now auxiliary and instantiated from SoC driver as
Stephen Boyd suggested
- i moved all clock code to clk-ep93xx.c, as it no longer has a separate dt node,
so XTALI is externalk for this driver and passed as index 0, and pll1, pll2 are
internal and passed via pointer for parent_data
- reboot bindings dropped
- pinctrl and clk bindings moved to syscon YAML
- xlate added for DMA, so now all DMA users use it via device tree, otherwise probe
order messed up and we might end up probing before DMA with no possibility to defer probing
- DMA port bindings dropped, they are described in YAML file
- DMA platform code dropped
- i2s, spi, pata now use OF DMA
- YAML and dtsi/dts changed to reflect auxiliary conversion and DMA changes
Patches should be now formated with '--patience'
---
Changes in v5:
- gpio: ep93xx: split device in multiple
- ordered headers
- use irqd_to_hwirq()
- s/platform_get_irq()/platform_get_irq_optional()/
- [PATCH v4 02/42] ARM: ep93xx: add swlocked prototypes
- replaced with ARM: ep93xx: add regmap aux_dev
- [PATCH v4 03/42] dt-bindings: clock: Add Cirrus EP93xx
- fixed identation
- removed EP93XX_CLK_END
- and dropped it
- clock bindings moved to syscon with renaming to cirrus,ep9301-syscon.h
- clk: ep93xx: add DT support for Cirrus EP93xx
- convert to auxiliary and use parent device tree node
- moved all clocks except XTALI here
- used devm version everywhere and *_parent_hw() instead of passing name where it's possible
- unfortunately devm_clk_hw_register_fixed_rate doesn't have a parent index version
- [PATCH v4 05/42] dt-bindings: pinctrl: Add Cirrus EP93xx
- "unevaluatedProperties: false" for pins
- returned "additionalProperties: false" where it was
- and dropped it
- pinctrl: add a Cirrus ep93xx SoC pin controller
- sorted includes
- convert to auxiliary and use parent device tree node
- power: reset: Add a driver for the ep93xx reset
- convert to auxiliary device
- dt-bindings: soc: Add Cirrus EP93xx
- dropped all ref to reboot, clk, pinctrl subnodes
- added pins, as it's now used for pinctrl
- added #clock-cells, as it's now used for clk
- dt-bindings: pwm: Add Cirrus EP93xx
- $ref to pwm.yaml
- fixed 'pwm-cells'
- s/additionalProperties/unevaluatedProperties/
- soc: Add SoC driver for Cirrus ep93xx
- removed clocks, they are moved to clk auxiliary driver, as we dropped the clk dt node
- removed all swlocked exported functions
- dropped static spinlock
- added instantiating auxiliary reboot, clk, pinctrl
- dt-bindings: spi: Add Cirrus EP93xx
- Document DMA support
- spi: ep93xx: add DT support for Cirrus EP93xx
- dropped CONFIG_OF and SPI/DMA platform data entirely
- s/master/host/
- reworked DMA setup so we can use probe defer
- dt-bindings: dma: Add Cirrus EP93xx
- dropped bindings header (moved ports description to YAML)
- changed '#dma-cells' to 2, we use port, direction in cells so we can drop platform code completely
- dma: cirrus: add DT support for Cirrus EP93xx
- dropped platform probing completely
- dropped struct ep93xx_dma_data replaced with internal struct ep93xx_dma_chan_cfg with port/direction
- added xlate functions for m2m/m2p
- we require filters to set dma_cfg before hw_setup
- dt-bindings: ata: Add Cirrus EP93xx
- Document DMA support
- ata: pata_ep93xx: add device tree support
- drop DMA platform header with data
- use DMA OF so we can defer probing until DMA is up
- ARM: dts: add Cirrus EP93XX SoC .dtsi
- ARM: dts: ep93xx: add ts7250 board
- ARM: dts: ep93xx: Add EDB9302 DT
- replaced "eclk: clock-controller" to syscon reference
- replaced "pinctrl: pinctrl" to syscon reference
- gpios are now "enabled" by default
- reworked i2s node
- change all dma nodes and refs
- new additions to I2S
- Document DMA
- Document Audio Port usage
- drop legacy DMA support
- Link to v4: https://lore.kernel.org/r/20230915-ep93xx-v4-0-a1d779dcec10@maquefel.me
Changes in v4:
- gpio: ep93xx: split device in multiple
- s/generic_handle_irq/generic_handle_domain_irq/
- s/int offset/irq_hw_number_t offset/ though now it looks a bit odd to me
- drop i = 0
- drop 'error'
- use dev_err_probe withour printing devname once again
dt-bindings: clock: Add Cirrus EP93xx
- renamed cirrus,ep93xx-clock.h -> cirrus,ep9301-clk.h
clk: ep93xx: add DT support for Cirrus EP93xx
- drop unused includes
- use .name only for xtali, pll1, pll2 parents
- convert // to /*
- pass clk_parent_data instead of char* clock name
dt-bindings: pinctrl: Add Cirrus EP93xx
- s/additionalProperties/unevaluatedProperties/
dt-bindings: soc: Add Cirrus EP93xx
- move syscon to soc directory
- add vendor prefix
- make reboot same style as pinctrl, clk
- use absolute path for ref
- expand example
soc: Add SoC driver for Cirrus ep93xx
- s/0xf0000000/GENMASK(31, 28)/
- s/ret/ep93xx_chip_revision(map)/
- drop symbol exports
- convert to platform driver
dt-bindings: rtc: Add Cirrus EP93xx
- allOf: with $ref to rtc.yaml
- s/additionalProperties/unevaluatedProperties/
dt-bindings: watchdog: Add Cirrus EP93x
- drop description
- reword
power: reset: Add a driver for the ep93xx reset
- lets use 'GPL-2.0+' instead of '(GPL-2.0)'
- s/of_device/of/
- drop mdelay with warning
- return 0 at the end
net: cirrus: add DT support for Cirrus EP93xx
- fix leaking np
mtd: nand: add support for ts72xx
- +bits.h
- drop comment
- ok to fwnode_get_next_child_node
- use goto to put handle and nand and report error
ARM: dts: add Cirrus EP93XX SoC .dtsi
- add simple-bus for ebi, as we don't require to setup anything
- add arm,pl011 compatible to uart nodes
- drop i2c-gpio, as it's isn't used anywhere
ARM: dts: ep93xx: add ts7250 board
- generic node name for temperature-sensor
- drop i2c
- move nand, rtc, watchdog to ebi node
- Link to v3: https://lore.kernel.org/r/20230605-ep93xx-v3-0-3d63a5f1103e@maquefel.me
---
Alexander Sverdlin (3):
ASoC: ep93xx: Drop legacy DMA support
ARM: dts: ep93xx: Add EDB9302 DT
ASoC: cirrus: edb93xx: Delete driver
Nikita Shubin (36):
gpio: ep93xx: split device in multiple
ARM: ep93xx: add regmap aux_dev
clk: ep93xx: add DT support for Cirrus EP93xx
pinctrl: add a Cirrus ep93xx SoC pin controller
power: reset: Add a driver for the ep93xx reset
dt-bindings: soc: Add Cirrus EP93xx
soc: Add SoC driver for Cirrus ep93xx
dt-bindings: dma: Add Cirrus EP93xx
dma: cirrus: add DT support for Cirrus EP93xx
dt-bindings: watchdog: Add Cirrus EP93x
watchdog: ep93xx: add DT support for Cirrus EP93xx
dt-bindings: pwm: Add Cirrus EP93xx
pwm: ep93xx: add DT support for Cirrus EP93xx
dt-bindings: spi: Add Cirrus EP93xx
spi: ep93xx: add DT support for Cirrus EP93xx
dt-bindings: net: Add Cirrus EP93xx
net: cirrus: add DT support for Cirrus EP93xx
dt-bindings: mtd: Add ts7200 nand-controller
mtd: rawnand: add support for ts72xx
dt-bindings: ata: Add Cirrus EP93xx
ata: pata_ep93xx: add device tree support
dt-bindings: input: Add Cirrus EP93xx keypad
input: keypad: ep93xx: add DT support for Cirrus EP93xx
dt-bindings: wdt: Add ts72xx
wdt: ts72xx: add DT support for ts72xx
gpio: ep93xx: add DT support for gpio-ep93xx
ASoC: dt-bindings: ep93xx: Document DMA support
ASoC: dt-bindings: ep93xx: Document Audio Port support
ARM: dts: add Cirrus EP93XX SoC .dtsi
ARM: dts: ep93xx: add ts7250 board
ARM: ep93xx: DT for the Cirrus ep93xx SoC platforms
pwm: ep93xx: drop legacy pinctrl
ata: pata_ep93xx: remove legacy pinctrl use
ARM: ep93xx: delete all boardfiles
ARM: ep93xx: soc: drop defines
dma: cirrus: remove platform code
.../bindings/arm/cirrus/cirrus,ep9301.yaml | 38 +
.../bindings/ata/cirrus,ep9312-pata.yaml | 42 +
.../bindings/dma/cirrus,ep9301-dma-m2m.yaml | 84 ++
.../bindings/dma/cirrus,ep9301-dma-m2p.yaml | 144 ++
.../bindings/input/cirrus,ep9307-keypad.yaml | 87 ++
.../devicetree/bindings/mtd/technologic,nand.yaml | 45 +
.../devicetree/bindings/net/cirrus,ep9301-eth.yaml | 59 +
.../devicetree/bindings/pwm/cirrus,ep9301-pwm.yaml | 53 +
.../bindings/soc/cirrus/cirrus,ep9301-syscon.yaml | 83 ++
.../bindings/sound/cirrus,ep9301-i2s.yaml | 16 +
.../devicetree/bindings/spi/cirrus,ep9301-spi.yaml | 70 +
.../bindings/watchdog/cirrus,ep9301-wdt.yaml | 42 +
.../bindings/watchdog/technologic,ts7200-wdt.yaml | 45 +
arch/arm/Makefile | 1 -
arch/arm/boot/dts/cirrus/Makefile | 4 +
arch/arm/boot/dts/cirrus/ep93xx-bk3.dts | 126 ++
arch/arm/boot/dts/cirrus/ep93xx-edb9302.dts | 182 +++
arch/arm/boot/dts/cirrus/ep93xx-ts7250.dts | 145 ++
arch/arm/boot/dts/cirrus/ep93xx.dtsi | 442 ++++++
arch/arm/mach-ep93xx/Kconfig | 20 +-
arch/arm/mach-ep93xx/Makefile | 11 -
arch/arm/mach-ep93xx/clock.c | 733 ----------
arch/arm/mach-ep93xx/core.c | 1017 --------------
arch/arm/mach-ep93xx/dma.c | 114 --
arch/arm/mach-ep93xx/edb93xx.c | 344 -----
arch/arm/mach-ep93xx/ep93xx-regs.h | 38 -
arch/arm/mach-ep93xx/gpio-ep93xx.h | 111 --
arch/arm/mach-ep93xx/hardware.h | 25 -
arch/arm/mach-ep93xx/irqs.h | 76 --
arch/arm/mach-ep93xx/platform.h | 42 -
arch/arm/mach-ep93xx/soc.h | 212 ---
arch/arm/mach-ep93xx/timer-ep93xx.c | 143 --
arch/arm/mach-ep93xx/ts72xx.c | 422 ------
arch/arm/mach-ep93xx/ts72xx.h | 94 --
arch/arm/mach-ep93xx/vision_ep9307.c | 311 -----
drivers/ata/pata_ep93xx.c | 106 +-
drivers/clk/Kconfig | 8 +
drivers/clk/Makefile | 1 +
drivers/clk/clk-ep93xx.c | 855 ++++++++++++
drivers/dma/ep93xx_dma.c | 292 +++-
drivers/gpio/gpio-ep93xx.c | 345 ++---
drivers/input/keyboard/ep93xx_keypad.c | 74 +-
drivers/mtd/nand/raw/Kconfig | 7 +
drivers/mtd/nand/raw/Makefile | 1 +
drivers/mtd/nand/raw/technologic-nand-controller.c | 223 +++
drivers/net/ethernet/cirrus/ep93xx_eth.c | 63 +-
drivers/pinctrl/Kconfig | 7 +
drivers/pinctrl/Makefile | 1 +
drivers/pinctrl/pinctrl-ep93xx.c | 1433 ++++++++++++++++++++
drivers/power/reset/Kconfig | 10 +
drivers/power/reset/Makefile | 1 +
drivers/power/reset/ep93xx-restart.c | 81 ++
drivers/pwm/pwm-ep93xx.c | 26 +-
drivers/soc/Kconfig | 1 +
drivers/soc/Makefile | 1 +
drivers/soc/cirrus/Kconfig | 13 +
drivers/soc/cirrus/Makefile | 2 +
drivers/soc/cirrus/soc-ep93xx.c | 247 ++++
drivers/spi/spi-ep93xx.c | 68 +-
drivers/watchdog/ep93xx_wdt.c | 8 +
drivers/watchdog/ts72xx_wdt.c | 8 +
include/dt-bindings/soc/cirrus,ep9301-syscon.h | 46 +
include/linux/platform_data/dma-ep93xx.h | 94 --
include/linux/platform_data/eth-ep93xx.h | 10 -
include/linux/platform_data/keypad-ep93xx.h | 32 -
include/linux/platform_data/spi-ep93xx.h | 15 -
include/linux/soc/cirrus/ep93xx.h | 47 +-
sound/soc/cirrus/Kconfig | 9 -
sound/soc/cirrus/Makefile | 4 -
sound/soc/cirrus/edb93xx.c | 117 --
sound/soc/cirrus/ep93xx-i2s.c | 19 -
sound/soc/cirrus/ep93xx-pcm.c | 19 +-
72 files changed, 5200 insertions(+), 4515 deletions(-)
---
base-commit: be3ca57cfb777ad820c6659d52e60bbdd36bf5ff
change-id: 20230605-ep93xx-01c76317e2d2
Best regards,
--
Nikita Shubin <nikita.shubin@maquefel.me>
^ permalink raw reply
* Re: [PATCH v6 1/2] dt-bindings: input: microchip,cap11xx: add advanced sensitivity settings
From: Krzysztof Kozlowski @ 2023-11-22 8:29 UTC (permalink / raw)
To: Jiri Valek - 2N, krzysztof.kozlowski+dt, dmitry.torokhov
Cc: devicetree, linux-input, linux-kernel, robh+dt, u.kleine-koenig
In-Reply-To: <20231121155250.613242-2-jiriv@axis.com>
On 21/11/2023 16:52, Jiri Valek - 2N wrote:
> Add support for advanced sensitivity settings and signal guard feature.
>
> Signed-off-by: Jiri Valek - 2N <jiriv@axis.com>
> ---
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Best regards,
Krzysztof
^ permalink raw reply
* Re: [PATCH v10 2/2] input: joystick: driver for Adafruit Seesaw Gamepad
From: kernel test robot @ 2023-11-21 22:52 UTC (permalink / raw)
To: Anshul Dalal, linux-input, devicetree
Cc: oe-kbuild-all, Anshul Dalal, Conor Dooley, Dmitry Torokhov,
Thomas Weißschuh, linux-kernel, Krzysztof Kozlowski,
Rob Herring, Jeff LaBundy, linux-kernel-mentees
In-Reply-To: <20231121123409.2231115-2-anshulusr@gmail.com>
Hi Anshul,
kernel test robot noticed the following build warnings:
[auto build test WARNING on dtor-input/next]
[also build test WARNING on dtor-input/for-linus hid/for-next linus/master v6.7-rc2 next-20231121]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Anshul-Dalal/input-joystick-driver-for-Adafruit-Seesaw-Gamepad/20231121-204243
base: https://git.kernel.org/pub/scm/linux/kernel/git/dtor/input.git next
patch link: https://lore.kernel.org/r/20231121123409.2231115-2-anshulusr%40gmail.com
patch subject: [PATCH v10 2/2] input: joystick: driver for Adafruit Seesaw Gamepad
config: alpha-randconfig-r112-20231122 (https://download.01.org/0day-ci/archive/20231122/202311220544.BV7xhjMy-lkp@intel.com/config)
compiler: alpha-linux-gcc (GCC) 13.2.0
reproduce: (https://download.01.org/0day-ci/archive/20231122/202311220544.BV7xhjMy-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202311220544.BV7xhjMy-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> drivers/input/joystick/adafruit-seesaw.c:300:34: warning: 'seesaw_of_table' defined but not used [-Wunused-const-variable=]
300 | static const struct of_device_id seesaw_of_table[] = {
| ^~~~~~~~~~~~~~~
vim +/seesaw_of_table +300 drivers/input/joystick/adafruit-seesaw.c
299
> 300 static const struct of_device_id seesaw_of_table[] = {
301 { .compatible = "adafruit,seesaw-gamepad"},
302 { /* Sentinel */ }
303 };
304 MODULE_DEVICE_TABLE(of, seesaw_of_table);
305
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply
* Re: [PATCH] HID: glorious: fix Glorious Model I HID report
From: Rahul Rameshbabu @ 2023-11-21 22:15 UTC (permalink / raw)
To: Jiri Kosina; +Cc: Brett Raye, benjamin.tissoires, linux-input
In-Reply-To: <nycvar.YFH.7.76.2311210938070.29220@cbobk.fhfr.pm>
On Tue, 21 Nov, 2023 09:38:16 +0100 Jiri Kosina <jikos@kernel.org> wrote:
> On Thu, 2 Nov 2023, Brett Raye wrote:
>
>> The Glorious Model I mouse has a buggy HID report descriptor for its
>> keyboard endpoint (used for programmable buttons). For report ID 2, there
>> is a mismatch between Logical Minimum and Usage Minimum in the array that
>> reports keycodes.
>>
>> The offending portion of the descriptor: (from hid-decode)
>>
>> 0x95, 0x05, // Report Count (5) 30
>> 0x75, 0x08, // Report Size (8) 32
>> 0x15, 0x00, // Logical Minimum (0) 34
>> 0x25, 0x65, // Logical Maximum (101) 36
>> 0x05, 0x07, // Usage Page (Keyboard) 38
>> 0x19, 0x01, // Usage Minimum (1) 40
>> 0x29, 0x65, // Usage Maximum (101) 42
>> 0x81, 0x00, // Input (Data,Arr,Abs) 44
>>
>> This bug shifts all programmed keycodes up by 1. Importantly, this causes
>> "empty" array indexes of 0x00 to be interpreted as 0x01, ErrorRollOver.
>> The presence of ErrorRollOver causes the system to ignore all keypresses
>> from the endpoint and breaks the ability to use the programmable buttons.
>>
>> Setting byte 41 to 0x00 fixes this, and causes keycodes to be interpreted
>> correctly.
>>
>> Also, USB_VENDOR_ID_GLORIOUS is changed to USB_VENDOR_ID_SINOWEALTH,
>> and a new ID for Laview Technology is added. Glorious seems to be
>> white-labeling controller boards or mice from these vendors. There isn't a
>> single canonical vendor ID for Glorious products.
>>
>> Signed-off-by: Brett Raye <braye@fastmail.com>
>
> Applied, thanks.
Hi Jiri,
Did you apply the v2 of this patch or the v1?
https://lore.kernel.org/linux-input/20231106235557.8741-1-braye@fastmail.com/
I think the v2 would be better given the patch split.
--
Thanks,
Rahul Rameshbabu
^ permalink raw reply
* [PATCH] i8042: add forceat2 parameter to force PS/2 keyboard to use AT Translated Set 2 protocol
From: Thierry Laurion @ 2023-11-21 21:17 UTC (permalink / raw)
To: linux-kernel; +Cc: linux-input, dmitry.torokhov
[-- Attachment #1.1: Type: text/plain, Size: 3664 bytes --]
Hello,
I am Thierry Laurion, the maintainer of the Heads project, which is a
coreboot Linux payload that follows the linuxboot ideology. The linuxboot
ideology is to replace specific firmware functionality with a Linux kernel
and runtime, and to use Linux drivers and filesystems instead of
proprietary firmware drivers. This improves boot reliability, speed,
flexibility, and security.
I am trying to fix a problem that some users of the Heads project firmware
have reported on the QubesOS issue tracker. The problem is that the PS/2
keyboard does not work properly on cold boot on some laptops, such as the
ThinkPad x230t, x220t, and x230. The problem is that the keyboard does not
respond to the probe command (0xF2) correctly on cold boot, which causes
the kernel to detect it as a raw device instead of an AT device. This
results in incorrect key mapping and other issues. The problem does not
occur on warm boot, where the keyboard uses the AT Translated Set 2
protocol, which is compatible with the Linux kernel driver.
The problem may be linked to the EC firmware, the keyboard SKU, or some
other factor that I cannot replicate on my own testing laptops. Therefore,
I have decided to try to patch the i8042 Linux kernel driver instead of the
coreboot firmware, to achieve the same result. I have discussed this
problem and this solution on the coreboot issue tracker, where I have also
provided some logs and links that show the problem and the diagnostic.
I have come up with two alternative solutions to patch the i8042 driver:
- The first solution is to modify the i8042_command function to send the
command 0xF0 to the keyboard port, followed by the argument 0x02, which
sets the keyboard to use the AT Translated Set 2 protocol. This is similar
to what I did in the coreboot firmware. This solution also adds a new
kernel parameter, i8042.forceat2, that enables this modification. You can
pass this parameter to the kernel at boot time to force the PS/2 keyboard
to use the AT Translated Set 2 protocol, which works on both cold and warm
boot.
- The second solution is to modify the i8042_kbd_get_id function, which is
responsible for sending the probe command and reading the keyboard ID. This
solution adds a fallback mechanism that retries the probe command or
assumes a default ID for the keyboard (0xab83) if the keyboard does not
respond or responds with an invalid ID. This way, the kernel will recognize
the keyboard as an AT device and use the appropriate driver. This solution
also uses the same kernel parameter, i8042.forceat2, to enable this
modification.
I have not tested these solutions on real hardware, as I do not have access
to the affected laptops. Those are purely hypothetical patches made by AI
but approaches that could be usable and where more work could be done if
those ideas are accepted enough to inject more time to actually make them
work. Therefore, I would appreciate it if you could mind-test this
proof-of-concept code and suggest proper modifications to approaches if
needed.
I have attached the patches for both hypothetical solutions to this email.
Please review them and let me know what you think.
Thank you for your time and attention.
Sincerely,
Thierry Laurion
Attached:
[PATCH 1/2] i8042: add forceat2 parameter to force PS/2 keyboard to use AT
Translated Set 2 protocol
[PATCH 2/2] i8042: add forceat2 parameter to retry probe command or assume
default ID for PS/2 keyboard
: https://github.com/QubesOS/qubes-issues/issues/6520
: https://review.coreboot.org/c/coreboot/+/515
:
https://github.com/osresearch/heads/pull/1026/commits/5f1c1a1f0b0f0a9c6c0e0c5f8a8a9f0c0f0c0f0f
--
Thierry Laurion
[-- Attachment #1.2: Type: text/html, Size: 4182 bytes --]
[-- Attachment #2: 2.patch --]
[-- Type: text/x-patch, Size: 2078 bytes --]
--- a/drivers/input/serio/i8042.c
+++ b/drivers/input/serio/i8042.c
@@ -38,6 +38,7 @@
#define I8042_KBD_IRQ 1
#define I8042_AUX_IRQ 12
+#define I8042_CMD_SET_AT2 0xF0
#define I8042_CMD_GETID 0xF2
#define I8042_CMD_AUX_LOOP 0xD3
#define I8042_CMD_AUX_SEND 0xD4
@@ -105,6 +106,7 @@ static bool i8042_bypass_aux_irq_test;
static bool i8042_check_reset;
static bool i8042_dritek;
static bool i8042_dumbkbd;
+static bool i8042_forceat2;
static bool i8042_noaux;
static bool i8042_nokbd;
static bool i8042_nomux;
@@ -122,6 +124,7 @@ module_param_named(bypass_aux_irq_test, i8042_bypass_aux_irq_test, bool, 0);
module_param_named(check_reset, i8042_check_reset, bool, 0);
module_param_named(dritek, i8042_dritek, bool, 0);
module_param_named(dumbkbd, i8042_dumbkbd, bool, 0);
+module_param_named(forceat2, i8042_forceat2, bool, 0);
module_param_named(noaux, i8042_noaux, bool, 0);
module_param_named(nokbd, i8042_nokbd, bool, 0);
module_param_named(nomux, i8042_nomux, bool, 0);
@@ -1070,6 +1073,16 @@ static int i8042_kbd_get_id(struct i8042_port *port)
if (retval)
return retval;
+ if (i8042_forceat2) {
+ retval = i8042_wait_write();
+ if (retval)
+ return retval;
+
+ dbg("%02x -> i8042 (kbd get id)", I8042_CMD_SET_AT2);
+ i8042_write_data(I8042_CMD_SET_AT2);
+ i8042_write_data(0x02);
+ }
+
retval = i8042_wait_write();
if (retval)
return retval;
@@ -1081,6 +1094,15 @@ static int i8042_kbd_get_id(struct i8042_port *port)
if (retval)
return retval;
+ if (i8042_forceat2 && !port->exists) {
+ dbg("keyboard did not respond to probe command, retrying");
+ retval = i8042_wait_write();
+ if (retval)
+ return retval;
+
+ i8042_write_data(I8042_CMD_GETID);
+ }
+
if (port->exists) {
retval = i8042_wait_read();
if (retval == 0) {
@@ -1094,6 +1116,12 @@ static int i8042_kbd_get_id(struct i8042_port *port)
}
}
}
+
+ if (i8042_forceat2 && !port->exists) {
+ dbg("keyboard still did not respond to probe command, assuming AT Translated Set 2");
+ port->exists = true;
+ port->id = 0xab83;
+ }
return 0;
}
[-- Attachment #3: 1.patch --]
[-- Type: text/x-patch, Size: 1466 bytes --]
--- a/drivers/input/serio/i8042.c
+++ b/drivers/input/serio/i8042.c
@@ -38,6 +38,7 @@
#define I8042_KBD_IRQ 1
#define I8042_AUX_IRQ 12
+#define I8042_CMD_SET_AT2 0xF0
#define I8042_CMD_GETID 0xF2
#define I8042_CMD_AUX_LOOP 0xD3
#define I8042_CMD_AUX_SEND 0xD4
@@ -105,6 +106,7 @@ static bool i8042_bypass_aux_irq_test;
static bool i8042_check_reset;
static bool i8042_dritek;
static bool i8042_dumbkbd;
+static bool i8042_forceat2;
static bool i8042_noaux;
static bool i8042_nokbd;
static bool i8042_nomux;
@@ -122,6 +124,7 @@ module_param_named(bypass_aux_irq_test, i8042_bypass_aux_irq_test, bool, 0);
module_param_named(check_reset, i8042_check_reset, bool, 0);
module_param_named(dritek, i8042_dritek, bool, 0);
module_param_named(dumbkbd, i8042_dumbkbd, bool, 0);
+module_param_named(forceat2, i8042_forceat2, bool, 0);
module_param_named(noaux, i8042_noaux, bool, 0);
module_param_named(nokbd, i8042_nokbd, bool, 0);
module_param_named(nomux, i8042_nomux, bool, 0);
@@ -1004,6 +1007,16 @@ static int i8042_command(struct i8042_port *port, unsigned char *param, int comm
return retval;
}
+ if (i8042_forceat2 && port == &i8042_ports[I8042_KBD_PORT]) {
+ retval = i8042_wait_write();
+ if (retval)
+ return retval;
+
+ dbg("%02x -> i8042 (command)", I8042_CMD_SET_AT2);
+ i8042_write_data(I8042_CMD_SET_AT2);
+ i8042_write_data(0x02);
+ }
+
if (command & I8042_CMD_AUX_SEND) {
retval = i8042_wait_write();
if (retval)
^ permalink raw reply
* Re: [PATCH] Input: i8042 - add quirk for Lenovo ThinkPad T14 Gen 1
From: Jonathan Denose @ 2023-11-21 20:23 UTC (permalink / raw)
To: Hans de Goede
Cc: linux-input, Jonathan Denose, Dmitry Torokhov, Huacai Chen,
Mattijs Korpershoek, Takashi Iwai, Werner Sembach, linux-kernel
In-Reply-To: <fbcf0fee-b97d-8f47-9df4-44bc1b475144@redhat.com>
Hello Hans,
On Tue, Sep 26, 2023 at 5:37 AM Hans de Goede <hdegoede@redhat.com> wrote:
>
> Hi,
>
> On 9/25/23 23:33, Jonathan Denose wrote:
> > The ThinkPad T14 Gen 1 touchpad works fine except that clicking
> > and dragging by tapping the touchpad or depressing the touchpad
> > do not work. Disabling PNP for controller setting discovery enables
> > click and drag without negatively impacting other touchpad features.
> >
> > Signed-off-by: Jonathan Denose <jdenose@google.com>
>
> Thanks, patch looks good to me:
>
> Reviewed-by: Hans de Goede <hdegoede@redhat.com>
>
> Regards,
>
> Hans
I just wanted to double check that I haven't missed anything, has this
patch been applied yet?
Best,
Jonathan
^ permalink raw reply
* Re: [PATCH 0/2] hid-asus: reset the backlight brightness level on resume
From: Luke Jones @ 2023-11-21 19:35 UTC (permalink / raw)
To: Jiri Kosina; +Cc: Denis Benato, benjamin.tissoires, linux-input, linux-kernel
In-Reply-To: <nycvar.YFH.7.76.2311210951340.29220@cbobk.fhfr.pm>
On Tue, Nov 21 2023 at 09:52:11 AM +01:00:00, Jiri Kosina
<jikos@kernel.org> wrote:
> On Fri, 17 Nov 2023, Denis Benato wrote:
>
>> > From: Denis Benato <benato.denis96@gmail.com>
>>
>> I want to express my gratitude toward Luke for his guidance and his
>> help
>> in submitting this fix.
>>
>> I confirm those patches were sent in my behalf.
>
> Luke, as you were in the supply chain of the patches, could you please
> provide Signed-off-by: tags so that I can add them into the chain?
Signed-off-by: Luke D. Jones <luke@ljones.dev>
^ permalink raw reply
* Re: [RFC v2 4/7] HID: i2c-hid: Move i2c_hid_finish_hwreset() to after reading the report-descriptor
From: Hans de Goede @ 2023-11-21 16:05 UTC (permalink / raw)
To: Doug Anderson
Cc: Jiri Kosina, Benjamin Tissoires, Julian Sax, ahormann,
Bruno Jesus, Dietrich, kloxdami, Tim Aldridge, Rene Wagner,
Federico Ricchiuto, linux-input
In-Reply-To: <CAD=FV=UPiW+6CyawQXUvSOj0QH8_ynFq0GZapHCrDVc7LNAmVQ@mail.gmail.com>
Hi,
On 11/21/23 16:25, Doug Anderson wrote:
> Hi,
>
> On Tue, Nov 21, 2023 at 1:53 AM Hans de Goede <hdegoede@redhat.com> wrote:
>>
>>> Right after this loop, you have:
>>>
>>> if (ret)
>>> return ret;
>>>
>>> That will return with the mutex held. It needs to be a "goto
>>> abort_reset". You'd also need to init `use_override` then, I think.
>>
>> Ah, good catch, I will fix this for the next version.
>>
>> Assuming there will be a next version. Did you read the cover-letter
>> part about the moving of the wait for reset to after the descriptor
>> read not fixing the missing reset ack 100% but rather only 50% or
>> so of the time ?
>>
>> And do you have any opinion on if we should still move forward with
>> this patch-set or not ?
>
> I'd tend to leave it to your judgement. I have a bias towards landing
> it because it improves probe speed in a way that matches what the spec
> suggests and, IMO, probe speed is important.
I'm tending towards still merging this myself too. So when I've some
time I'll address your remarks and post a non RFC v3.
Regards,
Hans
^ permalink raw reply
* [PATCH v6 2/2] Input: cap11xx - add advanced sensitivity settings
From: Jiri Valek - 2N @ 2023-11-21 15:52 UTC (permalink / raw)
To: krzysztof.kozlowski+dt, dmitry.torokhov
Cc: jiriv, devicetree, linux-input, linux-kernel, robh+dt,
u.kleine-koenig
In-Reply-To: <20231121155250.613242-1-jiriv@axis.com>
Add support for advanced sensitivity settings that allows more precise
tunig of touch buttons. Input-treshold allows to set the sensitivity for
each channel separately. Also add signal guard feature for CAP129x chips.
Signed-off-by: Jiri Valek - 2N <jiriv@axis.com>
---
drivers/input/keyboard/cap11xx.c | 242 +++++++++++++++++++++++++------
1 file changed, 196 insertions(+), 46 deletions(-)
diff --git a/drivers/input/keyboard/cap11xx.c b/drivers/input/keyboard/cap11xx.c
index 1b4937dce672..e6210f8b66ee 100644
--- a/drivers/input/keyboard/cap11xx.c
+++ b/drivers/input/keyboard/cap11xx.c
@@ -14,6 +14,7 @@
#include <linux/regmap.h>
#include <linux/i2c.h>
#include <linux/gpio/consumer.h>
+#include <linux/bitfield.h>
#define CAP11XX_REG_MAIN_CONTROL 0x00
#define CAP11XX_REG_MAIN_CONTROL_GAIN_SHIFT (6)
@@ -24,6 +25,7 @@
#define CAP11XX_REG_NOISE_FLAG_STATUS 0x0a
#define CAP11XX_REG_SENOR_DELTA(X) (0x10 + (X))
#define CAP11XX_REG_SENSITIVITY_CONTROL 0x1f
+#define CAP11XX_REG_SENSITIVITY_CONTROL_DELTA_SENSE_MASK 0x70
#define CAP11XX_REG_CONFIG 0x20
#define CAP11XX_REG_SENSOR_ENABLE 0x21
#define CAP11XX_REG_SENSOR_CONFIG 0x22
@@ -32,6 +34,7 @@
#define CAP11XX_REG_CALIBRATION 0x26
#define CAP11XX_REG_INT_ENABLE 0x27
#define CAP11XX_REG_REPEAT_RATE 0x28
+#define CAP11XX_REG_SIGNAL_GUARD_ENABLE 0x29
#define CAP11XX_REG_MT_CONFIG 0x2a
#define CAP11XX_REG_MT_PATTERN_CONFIG 0x2b
#define CAP11XX_REG_MT_PATTERN 0x2d
@@ -47,6 +50,8 @@
#define CAP11XX_REG_SENSOR_BASE_CNT(X) (0x50 + (X))
#define CAP11XX_REG_LED_POLARITY 0x73
#define CAP11XX_REG_LED_OUTPUT_CONTROL 0x74
+#define CAP11XX_REG_CALIB_SENSITIVITY_CONFIG 0x80
+#define CAP11XX_REG_CALIB_SENSITIVITY_CONFIG2 0x81
#define CAP11XX_REG_LED_DUTY_CYCLE_1 0x90
#define CAP11XX_REG_LED_DUTY_CYCLE_2 0x91
@@ -78,12 +83,20 @@ struct cap11xx_led {
struct cap11xx_priv {
struct regmap *regmap;
+ struct device *dev;
struct input_dev *idev;
+ const struct cap11xx_hw_model *model;
+ u8 id;
struct cap11xx_led *leds;
int num_leds;
/* config */
+ u8 analog_gain;
+ u8 sensitivity_delta_sense;
+ u8 signal_guard_inputs_mask;
+ u32 thresholds[8];
+ u32 calib_sensitivities[8];
u32 keycodes[];
};
@@ -181,6 +194,178 @@ static const struct regmap_config cap11xx_regmap_config = {
.volatile_reg = cap11xx_volatile_reg,
};
+static int
+cap11xx_write_calib_sens_config_1(struct cap11xx_priv *priv)
+{
+ return regmap_write(priv->regmap,
+ CAP11XX_REG_CALIB_SENSITIVITY_CONFIG,
+ (priv->calib_sensitivities[3] << 6) |
+ (priv->calib_sensitivities[2] << 4) |
+ (priv->calib_sensitivities[1] << 2) |
+ priv->calib_sensitivities[0]);
+}
+
+static int
+cap11xx_write_calib_sens_config_2(struct cap11xx_priv *priv)
+{
+ return regmap_write(priv->regmap,
+ CAP11XX_REG_CALIB_SENSITIVITY_CONFIG2,
+ (priv->calib_sensitivities[7] << 6) |
+ (priv->calib_sensitivities[6] << 4) |
+ (priv->calib_sensitivities[5] << 2) |
+ priv->calib_sensitivities[4]);
+}
+
+static int
+cap11xx_init_keys(struct cap11xx_priv *priv)
+{
+ struct device_node *node = priv->dev->of_node;
+ struct device *dev = priv->dev;
+ int i, error;
+ u32 u32_val;
+
+ if (!node) {
+ dev_err(dev, "Corresponding DT entry is not available\n");
+ return -ENODEV;
+ }
+
+ if (!of_property_read_u32(node, "microchip,sensor-gain", &u32_val)) {
+ if (priv->model->no_gain) {
+ dev_warn(dev,
+ "This model doesn't support 'sensor-gain'\n");
+ } else if (is_power_of_2(u32_val) && u32_val <= 8) {
+ priv->analog_gain = (u8)ilog2(u32_val);
+
+ error = regmap_update_bits(priv->regmap,
+ CAP11XX_REG_MAIN_CONTROL,
+ CAP11XX_REG_MAIN_CONTROL_GAIN_MASK,
+ priv->analog_gain << CAP11XX_REG_MAIN_CONTROL_GAIN_SHIFT);
+ if (error)
+ return error;
+ } else {
+ dev_err(dev, "Invalid sensor-gain value %u\n", u32_val);
+ return -EINVAL;
+ }
+ }
+
+ if (of_property_read_bool(node, "microchip,irq-active-high")) {
+ if (priv->id == CAP1106 ||
+ priv->id == CAP1126 ||
+ priv->id == CAP1188) {
+ error = regmap_update_bits(priv->regmap,
+ CAP11XX_REG_CONFIG2,
+ CAP11XX_REG_CONFIG2_ALT_POL,
+ 0);
+ if (error)
+ return error;
+ } else {
+ dev_warn(dev,
+ "This model doesn't support 'irq-active-high'\n");
+ }
+ }
+
+ if (!of_property_read_u32(node,
+ "microchip,sensitivity-delta-sense", &u32_val)) {
+ if (!is_power_of_2(u32_val) || u32_val > 128) {
+ dev_err(dev, "Invalid sensitivity-delta-sense value %u\n", u32_val);
+ return -EINVAL;
+ }
+
+ priv->sensitivity_delta_sense = (u8)ilog2(u32_val);
+ u32_val = ~(FIELD_PREP(CAP11XX_REG_SENSITIVITY_CONTROL_DELTA_SENSE_MASK,
+ priv->sensitivity_delta_sense));
+
+ error = regmap_update_bits(priv->regmap,
+ CAP11XX_REG_SENSITIVITY_CONTROL,
+ CAP11XX_REG_SENSITIVITY_CONTROL_DELTA_SENSE_MASK,
+ u32_val);
+ if (error)
+ return error;
+ }
+
+ if (!of_property_read_u32_array(node, "microchip,input-threshold",
+ priv->thresholds, priv->model->num_channels)) {
+ for (i = 0; i < priv->model->num_channels; i++) {
+ if (priv->thresholds[i] > 127) {
+ dev_err(dev, "Invalid input-threshold value %u\n",
+ priv->thresholds[i]);
+ return -EINVAL;
+ }
+
+ error = regmap_write(priv->regmap,
+ CAP11XX_REG_SENSOR_THRESH(i),
+ priv->thresholds[i]);
+ if (error)
+ return error;
+ }
+ }
+
+ if (!of_property_read_u32_array(node, "microchip,calib-sensitivity",
+ priv->calib_sensitivities, priv->model->num_channels)) {
+ if (priv->id == CAP1293 || priv->id == CAP1298) {
+ for (i = 0; i < priv->model->num_channels; i++) {
+ if (!is_power_of_2(priv->calib_sensitivities[i]) ||
+ priv->calib_sensitivities[i] > 4) {
+ dev_err(dev, "Invalid calib-sensitivity value %u\n",
+ priv->calib_sensitivities[i]);
+ return -EINVAL;
+ }
+ priv->calib_sensitivities[i] = ilog2(priv->calib_sensitivities[i]);
+ }
+
+ error = cap11xx_write_calib_sens_config_1(priv);
+ if (error)
+ return error;
+
+ if (priv->id == CAP1298) {
+ error = cap11xx_write_calib_sens_config_2(priv);
+ if (error)
+ return error;
+ }
+ } else {
+ dev_warn(dev,
+ "This model doesn't support 'calib-sensitivity'\n");
+ }
+ }
+
+ for (i = 0; i < priv->model->num_channels; i++) {
+ if (!of_property_read_u32_index(node, "microchip,signal-guard",
+ i, &u32_val)) {
+ if (u32_val > 1)
+ return -EINVAL;
+ if (u32_val)
+ priv->signal_guard_inputs_mask |= 0x01 << i;
+ }
+ }
+
+ if (priv->signal_guard_inputs_mask) {
+ if (priv->id == CAP1293 || priv->id == CAP1298) {
+ error = regmap_write(priv->regmap,
+ CAP11XX_REG_SIGNAL_GUARD_ENABLE,
+ priv->signal_guard_inputs_mask);
+ if (error)
+ return error;
+ } else {
+ dev_warn(dev,
+ "This model doesn't support 'signal-guard'\n");
+ }
+ }
+
+ /* Provide some useful defaults */
+ for (i = 0; i < priv->model->num_channels; i++)
+ priv->keycodes[i] = KEY_A + i;
+
+ of_property_read_u32_array(node, "linux,keycodes",
+ priv->keycodes, priv->model->num_channels);
+
+ /* Disable autorepeat. The Linux input system has its own handling. */
+ error = regmap_write(priv->regmap, CAP11XX_REG_REPEAT_RATE, 0);
+ if (error)
+ return error;
+
+ return 0;
+}
+
static irqreturn_t cap11xx_thread_func(int irq_num, void *data)
{
struct cap11xx_priv *priv = data;
@@ -332,11 +517,9 @@ static int cap11xx_i2c_probe(struct i2c_client *i2c_client)
const struct i2c_device_id *id = i2c_client_get_device_id(i2c_client);
struct device *dev = &i2c_client->dev;
struct cap11xx_priv *priv;
- struct device_node *node;
const struct cap11xx_hw_model *cap;
- int i, error, irq, gain = 0;
+ int i, error, irq;
unsigned int val, rev;
- u32 gain32;
if (id->driver_data >= ARRAY_SIZE(cap11xx_devices)) {
dev_err(dev, "Invalid device ID %lu\n", id->driver_data);
@@ -355,6 +538,8 @@ static int cap11xx_i2c_probe(struct i2c_client *i2c_client)
if (!priv)
return -ENOMEM;
+ priv->dev = dev;
+
priv->regmap = devm_regmap_init_i2c(i2c_client, &cap11xx_regmap_config);
if (IS_ERR(priv->regmap))
return PTR_ERR(priv->regmap);
@@ -384,50 +569,15 @@ static int cap11xx_i2c_probe(struct i2c_client *i2c_client)
return error;
dev_info(dev, "CAP11XX detected, model %s, revision 0x%02x\n",
- id->name, rev);
- node = dev->of_node;
-
- if (!of_property_read_u32(node, "microchip,sensor-gain", &gain32)) {
- if (cap->no_gain)
- dev_warn(dev,
- "This version doesn't support sensor gain\n");
- else if (is_power_of_2(gain32) && gain32 <= 8)
- gain = ilog2(gain32);
- else
- dev_err(dev, "Invalid sensor-gain value %d\n", gain32);
- }
+ id->name, rev);
- if (id->driver_data == CAP1106 ||
- id->driver_data == CAP1126 ||
- id->driver_data == CAP1188) {
- if (of_property_read_bool(node, "microchip,irq-active-high")) {
- error = regmap_update_bits(priv->regmap,
- CAP11XX_REG_CONFIG2,
- CAP11XX_REG_CONFIG2_ALT_POL,
- 0);
- if (error)
- return error;
- }
- }
+ priv->model = cap;
+ priv->id = id->driver_data;
- /* Provide some useful defaults */
- for (i = 0; i < cap->num_channels; i++)
- priv->keycodes[i] = KEY_A + i;
-
- of_property_read_u32_array(node, "linux,keycodes",
- priv->keycodes, cap->num_channels);
-
- if (!cap->no_gain) {
- error = regmap_update_bits(priv->regmap,
- CAP11XX_REG_MAIN_CONTROL,
- CAP11XX_REG_MAIN_CONTROL_GAIN_MASK,
- gain << CAP11XX_REG_MAIN_CONTROL_GAIN_SHIFT);
- if (error)
- return error;
- }
+ dev_info(dev, "CAP11XX device detected, model %s, revision 0x%02x\n",
+ id->name, rev);
- /* Disable autorepeat. The Linux input system has its own handling. */
- error = regmap_write(priv->regmap, CAP11XX_REG_REPEAT_RATE, 0);
+ error = cap11xx_init_keys(priv);
if (error)
return error;
@@ -439,7 +589,7 @@ static int cap11xx_i2c_probe(struct i2c_client *i2c_client)
priv->idev->id.bustype = BUS_I2C;
priv->idev->evbit[0] = BIT_MASK(EV_KEY);
- if (of_property_read_bool(node, "autorepeat"))
+ if (of_property_read_bool(dev->of_node, "autorepeat"))
__set_bit(EV_REP, priv->idev->evbit);
for (i = 0; i < cap->num_channels; i++)
@@ -474,7 +624,7 @@ static int cap11xx_i2c_probe(struct i2c_client *i2c_client)
if (error)
return error;
- irq = irq_of_parse_and_map(node, 0);
+ irq = irq_of_parse_and_map(dev->of_node, 0);
if (!irq) {
dev_err(dev, "Unable to parse or map IRQ\n");
return -ENXIO;
--
2.25.1
^ permalink raw reply related
* [PATCH v6 1/2] dt-bindings: input: microchip,cap11xx: add advanced sensitivity settings
From: Jiri Valek - 2N @ 2023-11-21 15:52 UTC (permalink / raw)
To: krzysztof.kozlowski+dt, dmitry.torokhov
Cc: jiriv, devicetree, linux-input, linux-kernel, robh+dt,
u.kleine-koenig
In-Reply-To: <20231121155250.613242-1-jiriv@axis.com>
Add support for advanced sensitivity settings and signal guard feature.
Signed-off-by: Jiri Valek - 2N <jiriv@axis.com>
---
.../bindings/input/microchip,cap11xx.yaml | 80 ++++++++++++++++++-
1 file changed, 77 insertions(+), 3 deletions(-)
diff --git a/Documentation/devicetree/bindings/input/microchip,cap11xx.yaml b/Documentation/devicetree/bindings/input/microchip,cap11xx.yaml
index 5b5d4f7d3482..7f20c2cd53a8 100644
--- a/Documentation/devicetree/bindings/input/microchip,cap11xx.yaml
+++ b/Documentation/devicetree/bindings/input/microchip,cap11xx.yaml
@@ -45,13 +45,13 @@ properties:
Enables the Linux input system's autorepeat feature on the input device.
linux,keycodes:
- minItems: 6
- maxItems: 6
+ minItems: 3
+ maxItems: 8
description: |
Specifies an array of numeric keycode values to
be used for the channels. If this property is
omitted, KEY_A, KEY_B, etc are used as defaults.
- The array must have exactly six entries.
+ The number of entries must correspond to the number of channels.
microchip,sensor-gain:
$ref: /schemas/types.yaml#/definitions/uint32
@@ -70,6 +70,59 @@ properties:
open drain. This property allows using the active
high push-pull output.
+ microchip,sensitivity-delta-sense:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ default: 32
+ enum: [1, 2, 4, 8, 16, 32, 64, 128]
+ description:
+ Controls the sensitivity multiplier of a touch detection.
+ Higher value means more sensitive settings.
+ At the more sensitive settings, touches are detected for a smaller delta
+ capacitance corresponding to a "lighter" touch.
+
+ microchip,signal-guard:
+ $ref: /schemas/types.yaml#/definitions/uint32-array
+ minItems: 3
+ maxItems: 8
+ items:
+ enum: [0, 1]
+ description: |
+ 0 - off
+ 1 - on
+ The signal guard isolates the signal from virtual grounds.
+ If enabled then the behavior of the channel is changed to signal guard.
+ The number of entries must correspond to the number of channels.
+
+ microchip,input-threshold:
+ $ref: /schemas/types.yaml#/definitions/uint32-array
+ minItems: 3
+ maxItems: 8
+ items:
+ minimum: 0
+ maximum: 127
+ description:
+ Specifies the delta threshold that is used to determine if a touch has
+ been detected. A higher value means a larger difference in capacitance
+ is required for a touch to be registered, making the touch sensor less
+ sensitive.
+ The number of entries must correspond to the number of channels.
+
+ microchip,calib-sensitivity:
+ $ref: /schemas/types.yaml#/definitions/uint32-array
+ minItems: 3
+ maxItems: 8
+ items:
+ enum: [1, 2, 4]
+ description: |
+ Specifies an array of numeric values that controls the gain
+ used by the calibration routine to enable sensor inputs
+ to be more sensitive for proximity detection.
+ Gain is based on touch pad capacitance range
+ 1 - 5-50pF
+ 2 - 0-25pF
+ 4 - 0-12.5pF
+ The number of entries must correspond to the number of channels.
+
patternProperties:
"^led@[0-7]$":
type: object
@@ -99,10 +152,29 @@ allOf:
contains:
enum:
- microchip,cap1106
+ - microchip,cap1203
+ - microchip,cap1206
+ - microchip,cap1293
+ - microchip,cap1298
then:
patternProperties:
"^led@[0-7]$": false
+ - if:
+ properties:
+ compatible:
+ contains:
+ enum:
+ - microchip,cap1106
+ - microchip,cap1126
+ - microchip,cap1188
+ - microchip,cap1203
+ - microchip,cap1206
+ then:
+ properties:
+ microchip,signal-guard: false
+ microchip,calib-sensitivity: false
+
required:
- compatible
- interrupts
@@ -122,6 +194,8 @@ examples:
reg = <0x28>;
autorepeat;
microchip,sensor-gain = <2>;
+ microchip,sensitivity-delta-sense = <16>;
+ microchip,input-threshold = <21>, <18>, <46>, <46>, <46>, <21>;
linux,keycodes = <103>, /* KEY_UP */
<106>, /* KEY_RIGHT */
--
2.25.1
^ permalink raw reply related
* [PATCH v6 0/2] Input: cap11xx add advanced sensitivity settings
From: Jiri Valek - 2N @ 2023-11-21 15:52 UTC (permalink / raw)
To: krzysztof.kozlowski+dt, dmitry.torokhov
Cc: jiriv, devicetree, linux-input, linux-kernel, robh+dt,
u.kleine-koenig
PATCH 1 - add documentation for new options
PATCH 2 - add support for advanced settings into driver
Changes in v2:
- Removed "sensitivity-base-shift" parameter (not HW propertie) in PATCH 2.
- Used IRQ from I2C subsystem instead of parsing it again.
- Fixed some documentation issues in PATCH 1
Changes in v3:
- Remove incorrectly used "Reviewed-by" tag in PATCH 1 and 2
Changes in v4:
- Remove unused variable in PATCH 2
Changes in v5:
- Revert IRQ parsing in PATCH 2 and move to separate PATCH 3
- Fix 'if' condition for properties in PATCH 1
Changes in v6:
- Fix typo in PATCH 1 and 2
- Added more description to some params in PATCH 1
- Removed redundant "optional" label in PATCH 1
- PATCH 3 already applied, so it's not part of this set
Jiri Valek - 2N (2):
dt-bindings: input: microchip,cap11xx: add advanced sensitivity
settings
Input: cap11xx - add advanced sensitivity settings
.../bindings/input/microchip,cap11xx.yaml | 80 +++++-
drivers/input/keyboard/cap11xx.c | 242 ++++++++++++++----
2 files changed, 273 insertions(+), 49 deletions(-)
--
2.25.1
^ permalink raw reply
* Re: [RFC v2 4/7] HID: i2c-hid: Move i2c_hid_finish_hwreset() to after reading the report-descriptor
From: Doug Anderson @ 2023-11-21 15:25 UTC (permalink / raw)
To: Hans de Goede
Cc: Jiri Kosina, Benjamin Tissoires, Julian Sax, ahormann,
Bruno Jesus, Dietrich, kloxdami, Tim Aldridge, Rene Wagner,
Federico Ricchiuto, linux-input
In-Reply-To: <32d4a384-2fb3-4f67-9f14-7a639a0621bb@redhat.com>
Hi,
On Tue, Nov 21, 2023 at 1:53 AM Hans de Goede <hdegoede@redhat.com> wrote:
>
> > Right after this loop, you have:
> >
> > if (ret)
> > return ret;
> >
> > That will return with the mutex held. It needs to be a "goto
> > abort_reset". You'd also need to init `use_override` then, I think.
>
> Ah, good catch, I will fix this for the next version.
>
> Assuming there will be a next version. Did you read the cover-letter
> part about the moving of the wait for reset to after the descriptor
> read not fixing the missing reset ack 100% but rather only 50% or
> so of the time ?
>
> And do you have any opinion on if we should still move forward with
> this patch-set or not ?
I'd tend to leave it to your judgement. I have a bias towards landing
it because it improves probe speed in a way that matches what the spec
suggests and, IMO, probe speed is important. It also has the potential
to avoid the need for quirks on some devices, even if it didn't work
out that way for the device you tested with.
The only downside you have listed is the potential for regressions,
but that's something that's a risk for nearly any change. This doesn't
feel like an excessively risky change to me and, as you've pointed
out, it's documented in the spec. If someone reports a regression then
it seems like we should address it as it comes...
> > I'll also note that it seems awkward that
> > `clear_bit(I2C_HID_RESET_PENDING, &ihid->flags)` is scattered in so
> > many places for error handling, but I couldn't really find a better
> > way to do it. :-P
>
> I guess we could just no clear it? Only the wait for reset
> wait_event_timeout() cares about its value and if we run that
> a second time then the bit will be set to 1 again before calling
> it anyways... Not sure I like my own suggestion here, but
> it is an option. I'm afraid it may bite us later thogh if we
> ever decide to check for the bit in another place.
Yeah, I didn't have any great ideas either and I think it's fine as
you have it. It just bothered me as I was reviewing and so I figured
I'd mention it in case some brilliant idea occurred to you. ;-)
^ permalink raw reply
* Re: Fwd: Logitech G915 Wireless Keyboard acts weird on 6.6.0
From: Mavroudis Chatzilazaridis @ 2023-11-21 14:15 UTC (permalink / raw)
To: Jiri Kosina, Bagas Sanjaya
Cc: Linux Kernel Mailing List, Linux Regressions, Linux Input Devices,
Thorsten Leemhuis, Filipe Laíns, Bastien Nocera, LinuxCat,
Marcelo, Takashi Iwai, Hans de Goede, Linus Torvalds
In-Reply-To: <nycvar.YFH.7.76.2311211435050.29220@cbobk.fhfr.pm>
On 2023-11-21 15:37, Jiri Kosina wrote:
> On Tue, 21 Nov 2023, Bagas Sanjaya wrote:
>
>> Hi Thorsten and all,
>>
>> On Thu, Nov 02, 2023 at 09:11:42PM +0700, Bagas Sanjaya wrote:
>>> Hi,
>>>
>>> I notice a regression report on Bugzilla [1]. Quoting from it:
>>>
>>>> Hello,
>>>> After upgrading from 6.5.9 to 6.6.0, my keyboard started acting really weird in its wireless mode, key actions sent are completely wrong, see video attached.
>>>>
>>>> Most keys are perceived as either E, 3 or F7, with F8 and <, as well.
>>>>
>>>> Modifier keys (CTRL, ALT, ALT GR, Shift and Super) are working normally, as well as media control keys (pause/play, previous, next, mute and sound up/down).
>>>>
>>>> The keyboard works as expected if it's wired.
>>>
>>> Another reporter bisected the regression:
>>>
>>>> Bisected to
>>>>
>>>> 9d1bd9346241cd6963b58da7ffb7ed303285f684 is the first bad commit
>>>> commit 9d1bd9346241cd6963b58da7ffb7ed303285f684
>>>> Author: Mavroudis Chatzilazaridis <mavchatz@protonmail.com>
>>>> Date: Sun Jul 16 18:23:44 2023 +0000
>>>>
>>>> HID: logitech-dj: Add support for a new lightspeed receiver iteration
>>>>
>>>> The lightspeed receiver for the Pro X Superlight uses 13 byte mouse reports
>>>> without a report id. The workaround for such cases has been adjusted to
>>>> handle these larger packets.
>>>>
>>>> The device now reports the status of its battery in wireless mode and
>>>> libratbag now recognizes the device and it can be configured with Piper.
>>>>
>>>> https://github.com/libratbag/libratbag/pull/1122
>>>>
>>>> Co-developed-by: Filipe Laíns <lains@riseup.net>
>>>> Signed-off-by: Filipe Laíns <lains@riseup.net>
>>>> Signed-off-by: Mavroudis Chatzilazaridis <mavchatz@protonmail.com>
>>>> Reviewed-by: Bastien Nocera <hadess@hadess.net>
>>>> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
>>>>
>>>> drivers/hid/hid-ids.h | 1 +
>>>> drivers/hid/hid-logitech-dj.c | 11 ++++++++---
>>>> 2 files changed, 9 insertions(+), 3 deletions(-)
>>>
>>> See Bugzilla for the full thread.
>>>
>>> Anyway, I'm adding this regression to regzbot:
>>>
>>> #regzbot introduced: 9d1bd9346241cd https://bugzilla.kernel.org/show_bug.cgi?id=218094
>>> #regzbot title: Logitech G915 Wireless Keyboard key event only detects few key codes
>>> #regzbot link: https://streamable.com/ac6l8u
>>>
>>
>> There's no reply from culprit author nor linux-input people (did they miss
>> this regression?). And on Bugzilla, other reporters replied that reverting
>> the culprit fixed the regression.
>>
>> FYI, there's similar Bugzilla report on [1].
>
> As there was no reaction from Mavroudis in order to figure out why he is
> not observing the issues the other reporters do and what to do to fix
> those, I already do have revert in my queue for -rc3.
>
> My first guess would be that the extra buttons in the extended report are
> not properly reflected in the emulated report descriptor, but that
> wouldn't explain why it worked for the author of the commit.
>
> So revert it is, and once Marvoudis resurfaces, we can try again for some
> of later releases.
>
> --
> Jiri Kosina
> SUSE Labs
>
Apologies for not requesting a revert earlier, I was away on vacation
and didn't realize it would take me this long to get to it.
As I mentioned in this bugzilla report [0], I think the extra buttons
are handled by vendor defined bytes at the end of the descriptor, so it
boils down to the emulated descriptor not being updated.
This patch worked for me as the Superlight X that I own only has two
side buttons. In addition, I was unaware of how many devices this would
affect.
For now let's make sure this commit is reverted so that people have
working devices and I will get to fixing the issues that showed up.
Once again, apologies for this.
[0] https://bugzilla.kernel.org/show_bug.cgi?id=218172#c9
^ permalink raw reply
* Re: Fwd: Logitech G915 Wireless Keyboard acts weird on 6.6.0
From: Bagas Sanjaya @ 2023-11-21 14:03 UTC (permalink / raw)
To: Jiri Kosina, Linux regressions mailing list
Cc: Linux Kernel Mailing List, Linux Input Devices,
Mavroudis Chatzilazaridis, Filipe Laíns, Bastien Nocera,
LinuxCat, Marcelo, Takashi Iwai, Hans de Goede, Linus Torvalds,
Benjamin Tissoires
In-Reply-To: <nycvar.YFH.7.76.2311211458030.29220@cbobk.fhfr.pm>
[-- Attachment #1: Type: text/plain, Size: 1040 bytes --]
On Tue, Nov 21, 2023 at 03:00:50PM +0100, Jiri Kosina wrote:
> On Tue, 21 Nov 2023, Linux regression tracking (Thorsten Leemhuis) wrote:
>
> > I guess part of the problem is that Bastien got reassigned and might not
> > care about the kernel anymore.
> >
> > Another part of it is that Jiri was CCed, but Benjamin was not.
> >
> > Ideally of course Mavroudis Chatzilazaridis, the culprit's author would
> > look into this, but from a quick search on lore it looks like Mavroudis
> > is not a regular kernel contributor and thus might not even know how we
> > expect situations like this to be handled.
>
> A comment from Mavroudis just appeared in
>
> https://bugzilla.kernel.org/show_bug.cgi?id=218172
>
> pointing out that indeed the report descriptor of the device he is working
> on is different than the ones from the reporter.
>
> Until this mess gets figured out, I am now pretty sure revert is the way
> to go for 6.7.
>
OK, thanks!
--
An old man doll... just what I always wanted! - Clara
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply
* Re: Fwd: Logitech G915 Wireless Keyboard acts weird on 6.6.0
From: Jiri Kosina @ 2023-11-21 14:00 UTC (permalink / raw)
To: Linux regressions mailing list
Cc: Bagas Sanjaya, Linux Kernel Mailing List, Linux Input Devices,
Mavroudis Chatzilazaridis, Filipe Laíns, Bastien Nocera,
LinuxCat, Marcelo, Takashi Iwai, Hans de Goede, Linus Torvalds,
Benjamin Tissoires
In-Reply-To: <0e10112a-7560-4dd8-8a03-5fdfc838168f@leemhuis.info>
On Tue, 21 Nov 2023, Linux regression tracking (Thorsten Leemhuis) wrote:
> I guess part of the problem is that Bastien got reassigned and might not
> care about the kernel anymore.
>
> Another part of it is that Jiri was CCed, but Benjamin was not.
>
> Ideally of course Mavroudis Chatzilazaridis, the culprit's author would
> look into this, but from a quick search on lore it looks like Mavroudis
> is not a regular kernel contributor and thus might not even know how we
> expect situations like this to be handled.
A comment from Mavroudis just appeared in
https://bugzilla.kernel.org/show_bug.cgi?id=218172
pointing out that indeed the report descriptor of the device he is working
on is different than the ones from the reporter.
Until this mess gets figured out, I am now pretty sure revert is the way
to go for 6.7.
--
Jiri Kosina
SUSE Labs
^ permalink raw reply
* Re: Fwd: Logitech G915 Wireless Keyboard acts weird on 6.6.0
From: Bagas Sanjaya @ 2023-11-21 14:00 UTC (permalink / raw)
To: Linux regression tracking (Thorsten Leemhuis),
Linux Kernel Mailing List, Linux Regressions, Linux Input Devices
Cc: Mavroudis Chatzilazaridis, Filipe Laíns, Bastien Nocera,
Jiri Kosina, LinuxCat, Marcelo, Takashi Iwai, Hans de Goede,
Linus Torvalds, Benjamin Tissoires
In-Reply-To: <0e10112a-7560-4dd8-8a03-5fdfc838168f@leemhuis.info>
[-- Attachment #1: Type: text/plain, Size: 1849 bytes --]
On Tue, Nov 21, 2023 at 02:53:17PM +0100, Linux regression tracking (Thorsten Leemhuis) wrote:
> On 21.11.23 14:09, Bagas Sanjaya wrote:
> > On Thu, Nov 02, 2023 at 09:11:42PM +0700, Bagas Sanjaya wrote:
> > <snip>...
> > There's no reply from culprit author nor linux-input people (did they
> > miss this regression?).
>
> I guess part of the problem is that Bastien got reassigned and might not
> care about the kernel anymore.
>
> Another part of it is that Jiri was CCed, but Benjamin was not.
>
> Ideally of course Mavroudis Chatzilazaridis, the culprit's author would
> look into this, but from a quick search on lore it looks like Mavroudis
> is not a regular kernel contributor and thus might not even know how we
> expect situations like this to be handled.
>
> > And on Bugzilla, other reporters replied that
> > reverting the culprit fixed the regression.
>
> From Takashi's comments like
> https://bugzilla.kernel.org/show_bug.cgi?id=218094#c33 it sounds like
> this can be fixed by resolving another regression as discussed earlier
> today here:
> https://lore.kernel.org/all/87edgjo2kr.wl-tiwai@suse.de/
>
> I think that might be the better solution, but Takashi, Hans, or the
> input people will know best.
>
> > FYI, there's similar Bugzilla report on [1].
> > [1] https://bugzilla.kernel.org/show_bug.cgi?id=218172
>
> Not sure, that might be a different problem, guess Hans is the best to
> judge.
>
> > Also Cc'ed Linus.
>
> Linus can speak for himself, but I guess he gets enough mail already.
> I'd say in a situation like this it thus might best to not CC him;
> instead poke me when things apparently are not handled well, then we
> together can decide if it's worth bringing Linus in.
Thanks for the pro tip!
--
An old man doll... just what I always wanted! - Clara
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply
* Re: [PATCH v2 0/2] Input: ilitek_ts_i2c - Fix spurious input events
From: Francesco Dolcini @ 2023-11-21 14:00 UTC (permalink / raw)
To: Dmitry Torokhov
Cc: Emanuele Ghidoli, Emanuele Ghidoli, linux-kernel, linux-input,
Joe Hung
In-Reply-To: <ZTU7_ICOgw9tka8I@livingston.pivistrello.it>
Hello Dmitry,
On Sun, Oct 22, 2023 at 05:13:00PM +0200, Francesco Dolcini wrote:
> On Wed, Sep 20, 2023 at 09:46:48AM +0200, Emanuele Ghidoli wrote:
> > From: Emanuele Ghidoli <emanuele.ghidoli@toradex.com>
> >
> > A couple of fixes to prevent spurious events when the data buffer is not the expected one.
> >
> > Emanuele Ghidoli (2):
> > Input: ilitek_ts_i2c - avoid wrong input subsystem sync
> > Input: ilitek_ts_i2c - add report id message validation
> >
> > drivers/input/touchscreen/ilitek_ts_i2c.c | 9 ++++++++-
> > 1 file changed, 8 insertions(+), 1 deletion(-)
>
> Just a gently ping on this series.
Apologize for nagging you again on this small series, I assume it just
got lost through the cracks, but if this is not the case and you need
anything just let me know.
Thanks,
Francesco
^ permalink raw reply
* Re: Fwd: Logitech G915 Wireless Keyboard acts weird on 6.6.0
From: Bagas Sanjaya @ 2023-11-21 13:58 UTC (permalink / raw)
To: Jiri Kosina
Cc: Linux Kernel Mailing List, Linux Regressions, Linux Input Devices,
Thorsten Leemhuis, Mavroudis Chatzilazaridis, Filipe Laíns,
Bastien Nocera, LinuxCat, Marcelo, Takashi Iwai, Hans de Goede,
Linus Torvalds
In-Reply-To: <nycvar.YFH.7.76.2311211435050.29220@cbobk.fhfr.pm>
[-- Attachment #1: Type: text/plain, Size: 1043 bytes --]
On Tue, Nov 21, 2023 at 02:37:52PM +0100, Jiri Kosina wrote:
> On Tue, 21 Nov 2023, Bagas Sanjaya wrote:
>
> > Hi Thorsten and all,
> >
> > <snip>...
> > There's no reply from culprit author nor linux-input people (did they miss
> > this regression?). And on Bugzilla, other reporters replied that reverting
> > the culprit fixed the regression.
> >
> > FYI, there's similar Bugzilla report on [1].
>
> As there was no reaction from Mavroudis in order to figure out why he is
> not observing the issues the other reporters do and what to do to fix
> those, I already do have revert in my queue for -rc3.
>
> My first guess would be that the extra buttons in the extended report are
> not properly reflected in the emulated report descriptor, but that
> wouldn't explain why it worked for the author of the commit.
>
> So revert it is, and once Marvoudis resurfaces, we can try again for some
> of later releases.
>
Thanks for letting us know!
--
An old man doll... just what I always wanted! - Clara
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ 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