* [PATCH v3 3/4] dt-bindings: input: iqs269a: Add bindings for OTP variants
From: Jeff LaBundy @ 2024-01-01 20:02 UTC (permalink / raw)
To: dmitry.torokhov, robh+dt, krzysztof.kozlowski+dt, conor+dt
Cc: linux-input, devicetree, jeff
In-Reply-To: <ZZMZzeX77VeHdIeL@nixie71>
This patch adds bindings for the D0 order code of the device. This
order code represents an OTP variant that enables a touch-and-hold
function in place of slider 1.
Also included is the ability to specify the 00 order code (default
option with no OTP customization) explicitly.
Signed-off-by: Jeff LaBundy <jeff@labundy.com>
Reviewed-by: Rob Herring <robh@kernel.org>
---
Changes in v3:
- None
Changes in v2:
- None
.../devicetree/bindings/input/iqs269a.yaml | 30 ++++++++++++++++++-
1 file changed, 29 insertions(+), 1 deletion(-)
diff --git a/Documentation/devicetree/bindings/input/iqs269a.yaml b/Documentation/devicetree/bindings/input/iqs269a.yaml
index b42f07542d27..2c3f693b8982 100644
--- a/Documentation/devicetree/bindings/input/iqs269a.yaml
+++ b/Documentation/devicetree/bindings/input/iqs269a.yaml
@@ -20,7 +20,10 @@ description: |
properties:
compatible:
- const: azoteq,iqs269a
+ enum:
+ - azoteq,iqs269a
+ - azoteq,iqs269a-00
+ - azoteq,iqs269a-d0
reg:
maxItems: 1
@@ -207,6 +210,16 @@ properties:
default: 1
description: Specifies the slider coordinate filter strength.
+ azoteq,touch-hold-ms:
+ multipleOf: 256
+ minimum: 256
+ maximum: 65280
+ default: 5120
+ description:
+ Specifies the length of time (in ms) for which the channel selected by
+ 'azoteq,gpio3-select' must be held in a state of touch in order for an
+ approximately 60-ms pulse to be asserted on the GPIO4 pin.
+
linux,keycodes:
minItems: 1
maxItems: 8
@@ -514,6 +527,21 @@ patternProperties:
additionalProperties: false
+if:
+ properties:
+ compatible:
+ contains:
+ enum:
+ - azoteq,iqs269a-d0
+then:
+ patternProperties:
+ "^channel@[0-7]$":
+ properties:
+ azoteq,slider1-select: false
+else:
+ properties:
+ azoteq,touch-hold-ms: false
+
required:
- compatible
- reg
--
2.34.1
^ permalink raw reply related
* [PATCH v3 4/4] Input: iqs269a - add support for OTP variants
From: Jeff LaBundy @ 2024-01-01 20:02 UTC (permalink / raw)
To: dmitry.torokhov, robh+dt, krzysztof.kozlowski+dt, conor+dt
Cc: linux-input, devicetree, jeff
In-Reply-To: <ZZMZzeX77VeHdIeL@nixie71>
This patch adds support for each available OTP variant of the device.
The OTP configuration cannot be read over I2C, so it is derived from
a compatible string instead.
Early revisions of the D0 order code require their OTP-enabled func-
tionality to be manually restored following a soft reset; this patch
accommodates this erratum as well.
Signed-off-by: Jeff LaBundy <jeff@labundy.com>
---
Changes in v3:
- Replaced of_device_get_match_data() with device_get_match_data()
Changes in v2:
- Rebased onto latest driver
drivers/input/misc/iqs269a.c | 92 ++++++++++++++++++++++++++++++++++--
1 file changed, 89 insertions(+), 3 deletions(-)
diff --git a/drivers/input/misc/iqs269a.c b/drivers/input/misc/iqs269a.c
index 0d0b5cdc7830..cd14ff9f57cf 100644
--- a/drivers/input/misc/iqs269a.c
+++ b/drivers/input/misc/iqs269a.c
@@ -102,6 +102,11 @@
#define IQS269_MISC_B_TRACKING_UI_ENABLE BIT(4)
#define IQS269_MISC_B_FILT_STR_SLIDER GENMASK(1, 0)
+#define IQS269_TOUCH_HOLD_SLIDER_SEL 0x89
+#define IQS269_TOUCH_HOLD_DEFAULT 0x14
+#define IQS269_TOUCH_HOLD_MS_MIN 256
+#define IQS269_TOUCH_HOLD_MS_MAX 65280
+
#define IQS269_TIMEOUT_TAP_MS_MAX 4080
#define IQS269_TIMEOUT_SWIPE_MS_MAX 4080
#define IQS269_THRESH_SWIPE_MAX 255
@@ -151,6 +156,10 @@
#define IQS269_MAX_REG 0xFF
+#define IQS269_OTP_OPTION_DEFAULT 0x00
+#define IQS269_OTP_OPTION_TWS 0xD0
+#define IQS269_OTP_OPTION_HOLD BIT(7)
+
#define IQS269_NUM_CH 8
#define IQS269_NUM_SL 2
@@ -315,6 +324,7 @@ struct iqs269_private {
struct input_dev *slider[IQS269_NUM_SL];
unsigned int keycode[ARRAY_SIZE(iqs269_events) * IQS269_NUM_CH];
unsigned int sl_code[IQS269_NUM_SL][IQS269_NUM_GESTURES];
+ unsigned int otp_option;
unsigned int ch_num;
bool hall_enable;
bool ati_current;
@@ -325,6 +335,14 @@ static enum iqs269_slider_id iqs269_slider_type(struct iqs269_private *iqs269,
{
int i;
+ /*
+ * Slider 1 is unavailable if the touch-and-hold option is enabled via
+ * OTP. In that case, the channel selection register is repurposed for
+ * the touch-and-hold timer ceiling.
+ */
+ if (slider_num && (iqs269->otp_option & IQS269_OTP_OPTION_HOLD))
+ return IQS269_SLIDER_NONE;
+
if (!iqs269->sys_reg.slider_select[slider_num])
return IQS269_SLIDER_NONE;
@@ -565,7 +583,8 @@ static int iqs269_parse_chan(struct iqs269_private *iqs269,
if (fwnode_property_present(ch_node, "azoteq,slider0-select"))
iqs269->sys_reg.slider_select[0] |= BIT(reg);
- if (fwnode_property_present(ch_node, "azoteq,slider1-select"))
+ if (fwnode_property_present(ch_node, "azoteq,slider1-select") &&
+ !(iqs269->otp_option & IQS269_OTP_OPTION_HOLD))
iqs269->sys_reg.slider_select[1] |= BIT(reg);
ch_reg = &iqs269->sys_reg.ch_reg[reg];
@@ -990,7 +1009,43 @@ static int iqs269_parse_prop(struct iqs269_private *iqs269)
sys_reg->blocking = 0;
sys_reg->slider_select[0] = 0;
- sys_reg->slider_select[1] = 0;
+
+ /*
+ * If configured via OTP to do so, the device asserts a pulse on the
+ * GPIO4 pin for approximately 60 ms once a selected channel is held
+ * in a state of touch for a configurable length of time.
+ *
+ * In that case, the register used for slider 1 channel selection is
+ * repurposed for the touch-and-hold timer ceiling.
+ */
+ if (iqs269->otp_option & IQS269_OTP_OPTION_HOLD) {
+ if (!device_property_read_u32(&client->dev,
+ "azoteq,touch-hold-ms", &val)) {
+ if (val < IQS269_TOUCH_HOLD_MS_MIN ||
+ val > IQS269_TOUCH_HOLD_MS_MAX) {
+ dev_err(&client->dev,
+ "Invalid touch-and-hold ceiling: %u\n",
+ val);
+ return -EINVAL;
+ }
+
+ sys_reg->slider_select[1] = val / 256;
+ } else if (iqs269->ver_info.fw_num < IQS269_VER_INFO_FW_NUM_3) {
+ /*
+ * The default touch-and-hold timer ceiling initially
+ * read from early revisions of silicon is invalid if
+ * the device experienced a soft reset between power-
+ * on and the read operation.
+ *
+ * To protect against this case, explicitly cache the
+ * default value so that it is restored each time the
+ * device is re-initialized.
+ */
+ sys_reg->slider_select[1] = IQS269_TOUCH_HOLD_DEFAULT;
+ }
+ } else {
+ sys_reg->slider_select[1] = 0;
+ }
sys_reg->event_mask = ~((u8)IQS269_EVENT_MASK_SYS);
@@ -1137,12 +1192,30 @@ static int iqs269_parse_prop(struct iqs269_private *iqs269)
return 0;
}
+static const struct reg_sequence iqs269_tws_init[] = {
+ { IQS269_TOUCH_HOLD_SLIDER_SEL, IQS269_TOUCH_HOLD_DEFAULT },
+ { 0xF0, 0x580F },
+ { 0xF0, 0x59EF },
+};
+
static int iqs269_dev_init(struct iqs269_private *iqs269)
{
int error;
mutex_lock(&iqs269->lock);
+ /*
+ * Early revisions of silicon require the following workaround in order
+ * to restore any OTP-enabled functionality after a soft reset.
+ */
+ if (iqs269->otp_option == IQS269_OTP_OPTION_TWS &&
+ iqs269->ver_info.fw_num < IQS269_VER_INFO_FW_NUM_3) {
+ error = regmap_multi_reg_write(iqs269->regmap, iqs269_tws_init,
+ ARRAY_SIZE(iqs269_tws_init));
+ if (error)
+ goto err_mutex;
+ }
+
error = regmap_update_bits(iqs269->regmap, IQS269_HALL_UI,
IQS269_HALL_UI_ENABLE,
iqs269->hall_enable ? ~0 : 0);
@@ -1779,6 +1852,8 @@ static int iqs269_probe(struct i2c_client *client)
mutex_init(&iqs269->lock);
init_completion(&iqs269->ati_done);
+ iqs269->otp_option = (uintptr_t)device_get_match_data(&client->dev);
+
error = regmap_raw_read(iqs269->regmap, IQS269_VER_INFO,
&iqs269->ver_info, sizeof(iqs269->ver_info));
if (error)
@@ -1889,7 +1964,18 @@ static int iqs269_resume(struct device *dev)
static DEFINE_SIMPLE_DEV_PM_OPS(iqs269_pm, iqs269_suspend, iqs269_resume);
static const struct of_device_id iqs269_of_match[] = {
- { .compatible = "azoteq,iqs269a" },
+ {
+ .compatible = "azoteq,iqs269a",
+ .data = (void *)IQS269_OTP_OPTION_DEFAULT,
+ },
+ {
+ .compatible = "azoteq,iqs269a-00",
+ .data = (void *)IQS269_OTP_OPTION_DEFAULT,
+ },
+ {
+ .compatible = "azoteq,iqs269a-d0",
+ .data = (void *)IQS269_OTP_OPTION_TWS,
+ },
{ }
};
MODULE_DEVICE_TABLE(of, iqs269_of_match);
--
2.34.1
^ permalink raw reply related
* Re: [PATCH v3 0/4] Add support for slider gestures and OTP variants
From: Dmitry Torokhov @ 2024-01-01 21:47 UTC (permalink / raw)
To: Jeff LaBundy
Cc: robh+dt, krzysztof.kozlowski+dt, conor+dt, linux-input,
devicetree
In-Reply-To: <ZZMZzeX77VeHdIeL@nixie71>
On Mon, Jan 01, 2024 at 02:00:13PM -0600, Jeff LaBundy wrote:
> This series introduces support for some additional features offered by the
> Azoteq IQS269A capacitive touch controller.
>
> Patches 1 and 2 add support for slider gestures (e.g. tap or swipe). Gestures
> are recognized by the hardware itself based on touch activity across the chan-
> nels associated with the slider. This feature is useful for lightweight systems
> that do not post-process absolute coordinates to determine gestures expressed
> by the user.
>
> Gestures are presented to user space as keycodes. An example use-case is an
> array of multimedia keys as seen in the following demo:
>
> https://youtu.be/k_vMRQiHLgA
>
> Patches 3 and 4 add support for the device's available OTP variants, which
> trade features or exhibit errata that require workarounds.
Applied the lot, thank you.
--
Dmitry
^ permalink raw reply
* Re: [PATCH v3 1/2] dt-bindings: input: Add Himax HX83102J touchscreen
From: Allen Lin @ 2024-01-02 2:36 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: Allen Lin, dmitry.torokhov, robh+dt, krzysztof.kozlowski+dt,
conor+dt, jikos, benjamin.tissoires, linux-input, devicetree,
linux-kernel
In-Reply-To: <0a817121-620c-4630-93a3-5cf3173b924f@linaro.org>
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> 於 2023年12月30日 週六 下午10:19寫道:
>
> On 29/12/2023 10:08, Allen Lin wrote:
> > Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> 於 2023年12月28日 週四 下午6:36寫道:
> >>
> >> On 27/12/2023 06:35, Allen_Lin wrote:
> >>> Add the HX83102j touchscreen device tree bindings documents.
> >>>
> >>> Signed-off-by: Allen_Lin <allencl_lin@hotmail.com>
> >>> ---
> >>
> >> Where is the changelog? There is no cover letter attached, so changelog
> >> is supposed to be here. There were several comments, so does it mean you
> >> ignored them?
> >>
> > Cover letter is not in this mail but in the mail with this title
> > "[PATCH v3 0/2] Add HX83102j driver for HIMAX HID touchscreen"
>
> There was no cover letter attached to this thread. Don't send cover
> letters in separate threads.
>
> >
> > Hi,
> > This driver implements for Himax HID touchscreen HX83102j.
> >
> > Using SPI interface to receive/send HID packets.
> >
> > Patchs notes as below
> > 1. Add the Maintainer and devicetree bindings document for driver
> > 2. Add the driver code and modify Kconfig/Makefile to support the driver
> >
> > change in v2 :
> > - Fix kernel test robot build warnings.
> > change in v3 :
> > - Modify code according to review suggesions.
>
> Not detailed enough. What did you change exactly?
>
1. Remove function pointer coding style
2. Remove unused code/variable/structure
3. Use devm_kzalloc() to allocate memory
4. Use gpio descriptors to control gpio
5. All functions are changed to static
6. Drop all global variables.
>
> Best regards,
> Krzysztof
>
Best regards
Allen
^ permalink raw reply
* [PATCH RESEND v2] dt-bindings: input: touchscreen: goodix: clarify irq-gpios misleading text
From: Luca Ceresoli @ 2024-01-02 8:19 UTC (permalink / raw)
To: Dmitry Torokhov, devicetree
Cc: Rob Herring, Jeff LaBundy, Krzysztof Kozlowski, Conor Dooley,
linux-input, linux-kernel, Thomas Petazzoni, Luca Ceresoli,
Rob Herring
The irq-gpios description misleading, apparently saying that driving the
IRQ GPIO resets the device, which is even more puzzling as there is a reset
GPIO as well.
In reality the IRQ pin can be driven during the reset sequence to configure
the client address, as it becomes clear after checking both the datasheet
and the driver code. Improve the text to clarify that.
Also rephrase to remove reference to the driver, which is not appropriate
in the bindings.
Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
Acked-by: Rob Herring <robh@kernel.org>
Reviewed-by: Jeff LaBundy <jeff@labundy.com>
---
Changed in v2 resend:
- added ack/review tags
Changed in v2:
- reworded to clarify even further
---
.../devicetree/bindings/input/touchscreen/goodix.yaml | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/Documentation/devicetree/bindings/input/touchscreen/goodix.yaml b/Documentation/devicetree/bindings/input/touchscreen/goodix.yaml
index 3d016b87c8df..2a2d86cfd104 100644
--- a/Documentation/devicetree/bindings/input/touchscreen/goodix.yaml
+++ b/Documentation/devicetree/bindings/input/touchscreen/goodix.yaml
@@ -37,8 +37,9 @@ properties:
maxItems: 1
irq-gpios:
- description: GPIO pin used for IRQ. The driver uses the interrupt gpio pin
- as output to reset the device.
+ description: GPIO pin used for IRQ input. Additionally, this line is
+ sampled by the device on reset deassertion to select the I2C client
+ address, thus it can be driven by the host during the reset sequence.
maxItems: 1
reset-gpios:
--
2.34.1
^ permalink raw reply related
* Re: [PATCH 0/7] HID: hid-steam: Upstream more SteamOS patches
From: Jiri Kosina @ 2024-01-02 10:21 UTC (permalink / raw)
To: Vicki Pfau; +Cc: Benjamin Tissoires, linux-input
In-Reply-To: <20231220033609.2132033-1-vi@endrift.com>
On Tue, 19 Dec 2023, Vicki Pfau wrote:
> This is a slew of patches that have been in testing for a while in SteamOS
> betas in one form or another. Most of them are pretty straight-forward, though
> I expect the gamepad-only mode may be preferred to be offloaded to a userspace
> daemon. Right now, the gamepad-only mode is handled by Steam when it's running,
> but has utility when it's not running too, given the presence of Lizard Mode
> (the keyboard/mouse emulation system).
>
> Vicki Pfau (7):
> HID: hid-steam: Avoid overwriting smoothing parameter
> HID: hid-steam: Disable watchdog instead of using a heartbeat
> HID: hid-steam: Clean up locking
> HID: hid-steam: Make client_opened a counter
> HID: hid-steam: Update list of identifiers from SDL
> HID: hid-steam: Better handling of serial number length
> HID: hid-steam: Add gamepad-only mode switched to by holding options
>
> drivers/hid/hid-steam.c | 547 ++++++++++++++++++++++++++++------------
> 1 file changed, 391 insertions(+), 156 deletions(-)
This is now queued in hid.git#for-6.8/steam.
--
Jiri Kosina
SUSE Labs
^ permalink raw reply
* Re: [PATCH 0/3] Add new SFH interfaces
From: Jiri Kosina @ 2024-01-02 10:23 UTC (permalink / raw)
To: Basavaraj Natikar
Cc: benjamin.tissoires, hdegoede, ilpo.jarvinen, mario.limonciello,
Shyam-sundar.S-k, linux-input
In-Reply-To: <20231220070042.610455-1-Basavaraj.Natikar@amd.com>
On Wed, 20 Dec 2023, Basavaraj Natikar wrote:
> This series adds new interfaces to export User presence information and
> Ambient light to other drivers within the kernel.
Hi,
thanks for the patches. I'd like this to go in together with the actual
users of it on the PMF side. Does that code already exist?
Thanks,
--
Jiri Kosina
SUSE Labs
^ permalink raw reply
* Re: [PATCH 1/3] HID: make hid_bus_type const
From: Jiri Kosina @ 2024-01-02 10:30 UTC (permalink / raw)
To: Greg Kroah-Hartman; +Cc: benjamin.tissoires, linux-kernel, linux-input
In-Reply-To: <2023122045-pellet-eggbeater-8d2f@gregkh>
On Wed, 20 Dec 2023, Greg Kroah-Hartman wrote:
> Now that the driver core can properly handle constant struct bus_type,
> move the hid_bus_type variable to be a constant structure as well,
> placing it into read-only memory which can not be modified at runtime.
I have applied all three patches to hid.git now. Thanks,
--
Jiri Kosina
SUSE Labs
^ permalink raw reply
* Re: [PATCH v3 0/2] HID: i2c-hid: elan: Add ili2901 timing
From: Jiri Kosina @ 2024-01-02 10:31 UTC (permalink / raw)
To: Zhengqiao Xia
Cc: linux-input, devicetree, linux-kernel, dmitry.torokhov, robh+dt,
krzysztof.kozlowski+dt, conor+dt, benjamin.tissoires,
linus.walleij, dianders
In-Reply-To: <20231227085013.1317-1-xiazhengqiao@huaqin.corp-partner.google.com>
On Wed, 27 Dec 2023, Zhengqiao Xia wrote:
> ILI2901 requires reset to pull down time greater than 10ms,
> so the configuration post_power_delay_ms is 10, and the chipset
> initial time is required to be greater than 100ms,
> so the post_gpio_reset_on_delay_ms is set to 100.
>
> Change in v3:
> - PATCH 1/2: Modify title and commit
> - PATCH 2/2: No change
> - Link to v2: https://lore.kernel.org/all/20231226023737.25618-2-xiazhengqiao@huaqin.corp-partner.google.com/
>
> Change in v2:
> - PATCH 1/2: Modify compatible properties values
> - PATCH 2/2: No change
> - Link to v1: https://lore.kernel.org/all/20231225092843.5993-3-xiazhengqiao@huaqin.corp-partner.google.com/
>
> xiazhengqiao (2):
> dt-bindings: HID: i2c-hid: elan: Introduce Ilitek ili2901
> HID: i2c-hid: elan: Add ili2901 timing
>
> .../devicetree/bindings/input/elan,ekth6915.yaml | 5 +++--
> drivers/hid/i2c-hid/i2c-hid-of-elan.c | 8 ++++++++
> 2 files changed, 11 insertions(+), 2 deletions(-)
Now queued in hid.git#for-6.8/elan. Thanks,
--
Jiri Kosina
SUSE Labs
^ permalink raw reply
* [PATCH 1/2] i8042: Add forcenorestore quirk to leave controller untouched even on s3
From: Werner Sembach @ 2024-01-02 13:48 UTC (permalink / raw)
To: Dmitry Torokhov; +Cc: Werner Sembach, linux-input, linux-kernel
On s3 resume the i8042 driver tries to restore the controller to a known
state by reinitializing things, however can this confuses the controller
with different effects. Mostly occasionally unresponsive keyboards after
resume.
These issues do not rise on s0ix resume as here the controller is assumed
to preserved its state from before suspend.
This patch adds a quirk for devices where the reinitialization on s3 resume
is not needed and might be harmful as described above. It does this by
using the s0ix resume code path at selected locations.
This new quirk goes beyond what the preexisting reset=never quirk does,
which only skips some reinitialization steps.
Signed-off-by: Werner Sembach <wse@tuxedocomputers.com>
Cc: stable@vger.kernel.org
---
drivers/input/serio/i8042-acpipnpio.h | 10 +++++++---
drivers/input/serio/i8042.c | 10 +++++++---
2 files changed, 14 insertions(+), 6 deletions(-)
diff --git a/drivers/input/serio/i8042-acpipnpio.h b/drivers/input/serio/i8042-acpipnpio.h
index b585b1dab870e..10ec4534e5e14 100644
--- a/drivers/input/serio/i8042-acpipnpio.h
+++ b/drivers/input/serio/i8042-acpipnpio.h
@@ -83,6 +83,7 @@ static inline void i8042_write_command(int val)
#define SERIO_QUIRK_KBDRESET BIT(12)
#define SERIO_QUIRK_DRITEK BIT(13)
#define SERIO_QUIRK_NOPNP BIT(14)
+#define SERIO_QUIRK_FORCENORESTORE BIT(15)
/* Quirk table for different mainboards. Options similar or identical to i8042
* module parameters.
@@ -1657,6 +1658,8 @@ static void __init i8042_check_quirks(void)
if (quirks & SERIO_QUIRK_NOPNP)
i8042_nopnp = true;
#endif
+ if (quirks & SERIO_QUIRK_FORCENORESTORE)
+ i8042_forcenorestore = true;
}
#else
static inline void i8042_check_quirks(void) {}
@@ -1690,7 +1693,7 @@ static int __init i8042_platform_init(void)
i8042_check_quirks();
- pr_debug("Active quirks (empty means none):%s%s%s%s%s%s%s%s%s%s%s%s%s\n",
+ pr_debug("Active quirks (empty means none):%s%s%s%s%s%s%s%s%s%s%s%s%s%s\n",
i8042_nokbd ? " nokbd" : "",
i8042_noaux ? " noaux" : "",
i8042_nomux ? " nomux" : "",
@@ -1710,10 +1713,11 @@ static int __init i8042_platform_init(void)
"",
#endif
#ifdef CONFIG_PNP
- i8042_nopnp ? " nopnp" : "");
+ i8042_nopnp ? " nopnp" : "",
#else
- "");
+ "",
#endif
+ i8042_forcenorestore ? " forcenorestore" : "");
retval = i8042_pnp_init();
if (retval)
diff --git a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c
index 9fbb8d31575ae..2233d93f90e81 100644
--- a/drivers/input/serio/i8042.c
+++ b/drivers/input/serio/i8042.c
@@ -115,6 +115,10 @@ module_param_named(nopnp, i8042_nopnp, bool, 0);
MODULE_PARM_DESC(nopnp, "Do not use PNP to detect controller settings");
#endif
+static bool i8042_forcenorestore;
+module_param_named(forcenorestore, i8042_forcenorestore, bool, 0);
+MODULE_PARM_DESC(forcenorestore, "Force no restore on s3 resume, copying s2idle behaviour");
+
#define DEBUG
#ifdef DEBUG
static bool i8042_debug;
@@ -1232,7 +1236,7 @@ static int i8042_pm_suspend(struct device *dev)
{
int i;
- if (pm_suspend_via_firmware())
+ if (!i8042_forcenorestore && pm_suspend_via_firmware())
i8042_controller_reset(true);
/* Set up serio interrupts for system wakeup. */
@@ -1248,7 +1252,7 @@ static int i8042_pm_suspend(struct device *dev)
static int i8042_pm_resume_noirq(struct device *dev)
{
- if (!pm_resume_via_firmware())
+ if (i8042_forcenorestore || !pm_resume_via_firmware())
i8042_interrupt(0, NULL);
return 0;
@@ -1271,7 +1275,7 @@ static int i8042_pm_resume(struct device *dev)
* not restore the controller state to whatever it had been at boot
* time, so we do not need to do anything.
*/
- if (!pm_suspend_via_firmware())
+ if (i8042_forcenorestore || !pm_suspend_via_firmware())
return 0;
/*
--
2.34.1
^ permalink raw reply related
* [PATCH 2/2] i8042: Use new forenorestore quirk to replace old buggy quirk combination
From: Werner Sembach @ 2024-01-02 13:48 UTC (permalink / raw)
To: Dmitry Torokhov; +Cc: Werner Sembach, linux-input, linux-kernel
In-Reply-To: <20240102134833.68646-1-wse@tuxedocomputers.com>
The old quirk combination sometimes cause a laggy keyboard after boot. With
the new quirk the initial issue of an unresponsive keyboard after s3 resume
is also fixed, but it doesn't have the negative side effect of the
sometimes laggy keyboard.
Signed-off-by: Werner Sembach <wse@tuxedocomputers.com>
Cc: stable@vger.kernel.org
---
drivers/input/serio/i8042-acpipnpio.h | 10 +---------
1 file changed, 1 insertion(+), 9 deletions(-)
diff --git a/drivers/input/serio/i8042-acpipnpio.h b/drivers/input/serio/i8042-acpipnpio.h
index 10ec4534e5e14..e631a26394e92 100644
--- a/drivers/input/serio/i8042-acpipnpio.h
+++ b/drivers/input/serio/i8042-acpipnpio.h
@@ -1142,18 +1142,10 @@ static const struct dmi_system_id i8042_dmi_quirk_table[] __initconst = {
SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP)
},
{
- /*
- * Setting SERIO_QUIRK_NOMUX or SERIO_QUIRK_RESET_ALWAYS makes
- * the keyboard very laggy for ~5 seconds after boot and
- * sometimes also after resume.
- * However both are required for the keyboard to not fail
- * completely sometimes after boot or resume.
- */
.matches = {
DMI_MATCH(DMI_BOARD_NAME, "N150CU"),
},
- .driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_ALWAYS |
- SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP)
+ .driver_data = (void *)(SERIO_QUIRK_FORCENORESTORE)
},
{
.matches = {
--
2.34.1
^ permalink raw reply related
* Re: [PATCH 2/2] i8042: Use new forenorestore quirk to replace old buggy quirk combination
From: Werner Sembach @ 2024-01-02 14:08 UTC (permalink / raw)
To: Dmitry Torokhov; +Cc: linux-input, linux-kernel, Hans de Goede
In-Reply-To: <20240102134833.68646-2-wse@tuxedocomputers.com>
Hi,
Am 02.01.24 um 14:48 schrieb Werner Sembach:
> The old quirk combination sometimes cause a laggy keyboard after boot. With
> the new quirk the initial issue of an unresponsive keyboard after s3 resume
> is also fixed, but it doesn't have the negative side effect of the
> sometimes laggy keyboard.
>
> Signed-off-by: Werner Sembach <wse@tuxedocomputers.com>
> Cc: stable@vger.kernel.org
Added Hans to the loop.
As mentioned in the one on one e-Mails with Hans I wrote a new quirk in [Patch
1/2] and tested it on the device in [Patch 2/2]
At least one more device will follow which has negative side effects with the
old quirkls, but I currently don't have it at hand for testing.
I wonder if devices where the old quirk combination did not cause issue should
also be switched to the new quirk, if, after testing, it also fixes the
unresponsive keyboard issues?
Kind regards,
Werner
^ permalink raw reply
* [PATCH RESEND 2/2] Documentation: Input: support pre-stored effects
From: James Ogletree @ 2024-01-02 14:56 UTC (permalink / raw)
Cc: James Ogletree, Dmitry Torokhov, Jonathan Corbet,
open list:INPUT (KEYBOARD, MOUSE, JOYSTICK, TOUCHSCREEN)...,
open list:DOCUMENTATION, open list
In-Reply-To: <20240102145614.127736-1-jogletre@opensource.cirrus.com>
Document FF_PRESTORED.
Signed-off-by: James Ogletree <jogletre@opensource.cirrus.com>
---
Documentation/input/ff.rst | 1 +
1 file changed, 1 insertion(+)
diff --git a/Documentation/input/ff.rst b/Documentation/input/ff.rst
index 5a1da42c33b3..1e0d00a42f25 100644
--- a/Documentation/input/ff.rst
+++ b/Documentation/input/ff.rst
@@ -85,6 +85,7 @@ following bits:
- FF_FRICTION can simulate friction
- FF_DAMPER can simulate damper effects
- FF_RUMBLE rumble effects
+- FF_PRESTORED pre-stored effects
- FF_INERTIA can simulate inertia
- FF_GAIN gain is adjustable
- FF_AUTOCENTER autocenter is adjustable
--
2.25.1
^ permalink raw reply related
* [PATCH RESEND 1/2] Input: support pre-stored effects
From: James Ogletree @ 2024-01-02 14:56 UTC (permalink / raw)
Cc: James Ogletree, Jeff LaBundy, Dmitry Torokhov, Jonathan Corbet,
open list:INPUT (KEYBOARD, MOUSE, JOYSTICK, TOUCHSCREEN)...,
open list:DOCUMENTATION, open list
At present, the best way to define effects that pre-exist in device
memory is by utilizing the custom_data field of ff_periodic_effect,
which it was not intended for, and which requires extra processing
by the driver.
Provide simpler option for interacting with pre-stored effects in
device memory.
Reviewed-by: Jeff LaBundy <jeff@labundy.com>
Signed-off-by: James Ogletree <jogletre@opensource.cirrus.com>
---
include/uapi/linux/input.h | 32 ++++++++++++++++++++++----------
1 file changed, 22 insertions(+), 10 deletions(-)
diff --git a/include/uapi/linux/input.h b/include/uapi/linux/input.h
index 2557eb7b0561..689e5fa10647 100644
--- a/include/uapi/linux/input.h
+++ b/include/uapi/linux/input.h
@@ -428,17 +428,27 @@ struct ff_rumble_effect {
__u16 weak_magnitude;
};
+/**
+ * struct ff_prestored_effect - defines parameters of a pre-stored force-feedback effect
+ * @index: index of effect
+ * @bank: memory bank of effect
+ */
+struct ff_prestored_effect {
+ __u16 index;
+ __u16 bank;
+};
+
/**
* struct ff_effect - defines force feedback effect
* @type: type of the effect (FF_CONSTANT, FF_PERIODIC, FF_RAMP, FF_SPRING,
- * FF_FRICTION, FF_DAMPER, FF_RUMBLE, FF_INERTIA, or FF_CUSTOM)
+ * FF_FRICTION, FF_DAMPER, FF_RUMBLE, FF_INERTIA, FF_PRESTORED, or FF_CUSTOM)
* @id: an unique id assigned to an effect
* @direction: direction of the effect
* @trigger: trigger conditions (struct ff_trigger)
* @replay: scheduling of the effect (struct ff_replay)
* @u: effect-specific structure (one of ff_constant_effect, ff_ramp_effect,
- * ff_periodic_effect, ff_condition_effect, ff_rumble_effect) further
- * defining effect parameters
+ * ff_periodic_effect, ff_condition_effect, ff_rumble_effect, ff_prestored_effect)
+ * further defining effect parameters
*
* This structure is sent through ioctl from the application to the driver.
* To create a new effect application should set its @id to -1; the kernel
@@ -464,6 +474,7 @@ struct ff_effect {
struct ff_periodic_effect periodic;
struct ff_condition_effect condition[2]; /* One for each axis */
struct ff_rumble_effect rumble;
+ struct ff_prestored_effect prestored;
} u;
};
@@ -479,20 +490,21 @@ struct ff_effect {
#define FF_DAMPER 0x55
#define FF_INERTIA 0x56
#define FF_RAMP 0x57
+#define FF_PRESTORED 0x58
#define FF_EFFECT_MIN FF_RUMBLE
-#define FF_EFFECT_MAX FF_RAMP
+#define FF_EFFECT_MAX FF_PRESTORED
/*
* Force feedback periodic effect types
*/
-#define FF_SQUARE 0x58
-#define FF_TRIANGLE 0x59
-#define FF_SINE 0x5a
-#define FF_SAW_UP 0x5b
-#define FF_SAW_DOWN 0x5c
-#define FF_CUSTOM 0x5d
+#define FF_SQUARE 0x59
+#define FF_TRIANGLE 0x5a
+#define FF_SINE 0x5b
+#define FF_SAW_UP 0x5c
+#define FF_SAW_DOWN 0x5d
+#define FF_CUSTOM 0x5e
#define FF_WAVEFORM_MIN FF_SQUARE
#define FF_WAVEFORM_MAX FF_CUSTOM
--
2.25.1
^ permalink raw reply related
* Re: [PATCH RESEND 2/2] Documentation: Input: support pre-stored effects
From: Jeff LaBundy @ 2024-01-02 15:58 UTC (permalink / raw)
To: James Ogletree
Cc: Dmitry Torokhov, Jonathan Corbet,
open list:INPUT (KEYBOARD, MOUSE, JOYSTICK, TOUCHSCREEN)...,
open list:DOCUMENTATION, open list
In-Reply-To: <20240102145614.127736-2-jogletre@opensource.cirrus.com>
On Tue, Jan 02, 2024 at 02:56:13PM +0000, James Ogletree wrote:
> Document FF_PRESTORED.
>
> Signed-off-by: James Ogletree <jogletre@opensource.cirrus.com>
Reviewed-by: Jeff LaBundy <jeff@labundy.com>
> ---
> Documentation/input/ff.rst | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/Documentation/input/ff.rst b/Documentation/input/ff.rst
> index 5a1da42c33b3..1e0d00a42f25 100644
> --- a/Documentation/input/ff.rst
> +++ b/Documentation/input/ff.rst
> @@ -85,6 +85,7 @@ following bits:
> - FF_FRICTION can simulate friction
> - FF_DAMPER can simulate damper effects
> - FF_RUMBLE rumble effects
> +- FF_PRESTORED pre-stored effects
> - FF_INERTIA can simulate inertia
> - FF_GAIN gain is adjustable
> - FF_AUTOCENTER autocenter is adjustable
> --
> 2.25.1
>
>
^ permalink raw reply
* [PATCH v2 2/2] i8042: Use new forcenorestore quirk to replace old buggy quirk combination
From: Werner Sembach @ 2024-01-02 17:23 UTC (permalink / raw)
To: Dmitry Torokhov; +Cc: Werner Sembach, linux-input, linux-kernel
In-Reply-To: <20240102172356.78978-1-wse@tuxedocomputers.com>
The old quirk combination sometimes cause a laggy keyboard after boot. With
the new quirk the initial issue of an unresponsive keyboard after s3 resume
is also fixed, but it doesn't have the negative side effect of the
sometimes laggy keyboard.
v2: Fix typo in commit message
Signed-off-by: Werner Sembach <wse@tuxedocomputers.com>
Cc: stable@vger.kernel.org
---
drivers/input/serio/i8042-acpipnpio.h | 10 +---------
1 file changed, 1 insertion(+), 9 deletions(-)
diff --git a/drivers/input/serio/i8042-acpipnpio.h b/drivers/input/serio/i8042-acpipnpio.h
index 10ec4534e5e14..e631a26394e92 100644
--- a/drivers/input/serio/i8042-acpipnpio.h
+++ b/drivers/input/serio/i8042-acpipnpio.h
@@ -1142,18 +1142,10 @@ static const struct dmi_system_id i8042_dmi_quirk_table[] __initconst = {
SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP)
},
{
- /*
- * Setting SERIO_QUIRK_NOMUX or SERIO_QUIRK_RESET_ALWAYS makes
- * the keyboard very laggy for ~5 seconds after boot and
- * sometimes also after resume.
- * However both are required for the keyboard to not fail
- * completely sometimes after boot or resume.
- */
.matches = {
DMI_MATCH(DMI_BOARD_NAME, "N150CU"),
},
- .driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_ALWAYS |
- SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP)
+ .driver_data = (void *)(SERIO_QUIRK_FORCENORESTORE)
},
{
.matches = {
--
2.34.1
^ permalink raw reply related
* [PATCH v2 1/2] i8042: Add forcenorestore quirk to leave controller untouched even on s3
From: Werner Sembach @ 2024-01-02 17:23 UTC (permalink / raw)
To: Dmitry Torokhov; +Cc: Werner Sembach, linux-input, linux-kernel
On s3 resume the i8042 driver tries to restore the controller to a known
state by reinitializing things, however can this confuses the controller
with different effects. Mostly occasionally unresponsive keyboards after
resume.
These issues do not rise on s0ix resume as here the controller is assumed
to preserved its state from before suspend.
This patch adds a quirk for devices where the reinitialization on s3 resume
is not needed and might be harmful as described above. It does this by
using the s0ix resume code path at selected locations.
This new quirk goes beyond what the preexisting reset=never quirk does,
which only skips some reinitialization steps.
Signed-off-by: Werner Sembach <wse@tuxedocomputers.com>
Cc: stable@vger.kernel.org
---
drivers/input/serio/i8042-acpipnpio.h | 10 +++++++---
drivers/input/serio/i8042.c | 10 +++++++---
2 files changed, 14 insertions(+), 6 deletions(-)
diff --git a/drivers/input/serio/i8042-acpipnpio.h b/drivers/input/serio/i8042-acpipnpio.h
index b585b1dab870e..10ec4534e5e14 100644
--- a/drivers/input/serio/i8042-acpipnpio.h
+++ b/drivers/input/serio/i8042-acpipnpio.h
@@ -83,6 +83,7 @@ static inline void i8042_write_command(int val)
#define SERIO_QUIRK_KBDRESET BIT(12)
#define SERIO_QUIRK_DRITEK BIT(13)
#define SERIO_QUIRK_NOPNP BIT(14)
+#define SERIO_QUIRK_FORCENORESTORE BIT(15)
/* Quirk table for different mainboards. Options similar or identical to i8042
* module parameters.
@@ -1657,6 +1658,8 @@ static void __init i8042_check_quirks(void)
if (quirks & SERIO_QUIRK_NOPNP)
i8042_nopnp = true;
#endif
+ if (quirks & SERIO_QUIRK_FORCENORESTORE)
+ i8042_forcenorestore = true;
}
#else
static inline void i8042_check_quirks(void) {}
@@ -1690,7 +1693,7 @@ static int __init i8042_platform_init(void)
i8042_check_quirks();
- pr_debug("Active quirks (empty means none):%s%s%s%s%s%s%s%s%s%s%s%s%s\n",
+ pr_debug("Active quirks (empty means none):%s%s%s%s%s%s%s%s%s%s%s%s%s%s\n",
i8042_nokbd ? " nokbd" : "",
i8042_noaux ? " noaux" : "",
i8042_nomux ? " nomux" : "",
@@ -1710,10 +1713,11 @@ static int __init i8042_platform_init(void)
"",
#endif
#ifdef CONFIG_PNP
- i8042_nopnp ? " nopnp" : "");
+ i8042_nopnp ? " nopnp" : "",
#else
- "");
+ "",
#endif
+ i8042_forcenorestore ? " forcenorestore" : "");
retval = i8042_pnp_init();
if (retval)
diff --git a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c
index 9fbb8d31575ae..2233d93f90e81 100644
--- a/drivers/input/serio/i8042.c
+++ b/drivers/input/serio/i8042.c
@@ -115,6 +115,10 @@ module_param_named(nopnp, i8042_nopnp, bool, 0);
MODULE_PARM_DESC(nopnp, "Do not use PNP to detect controller settings");
#endif
+static bool i8042_forcenorestore;
+module_param_named(forcenorestore, i8042_forcenorestore, bool, 0);
+MODULE_PARM_DESC(forcenorestore, "Force no restore on s3 resume, copying s2idle behaviour");
+
#define DEBUG
#ifdef DEBUG
static bool i8042_debug;
@@ -1232,7 +1236,7 @@ static int i8042_pm_suspend(struct device *dev)
{
int i;
- if (pm_suspend_via_firmware())
+ if (!i8042_forcenorestore && pm_suspend_via_firmware())
i8042_controller_reset(true);
/* Set up serio interrupts for system wakeup. */
@@ -1248,7 +1252,7 @@ static int i8042_pm_suspend(struct device *dev)
static int i8042_pm_resume_noirq(struct device *dev)
{
- if (!pm_resume_via_firmware())
+ if (i8042_forcenorestore || !pm_resume_via_firmware())
i8042_interrupt(0, NULL);
return 0;
@@ -1271,7 +1275,7 @@ static int i8042_pm_resume(struct device *dev)
* not restore the controller state to whatever it had been at boot
* time, so we do not need to do anything.
*/
- if (!pm_suspend_via_firmware())
+ if (i8042_forcenorestore || !pm_suspend_via_firmware())
return 0;
/*
--
2.34.1
^ permalink raw reply related
* Re: [PATCH v2 2/2] i8042: Use new forcenorestore quirk to replace old buggy quirk combination
From: Werner Sembach @ 2024-01-02 17:26 UTC (permalink / raw)
To: Dmitry Torokhov; +Cc: linux-input, linux-kernel, Hans de Goede
In-Reply-To: <20240102172356.78978-2-wse@tuxedocomputers.com>
Forgot to add Hans again for git send-email to adding him again after initial send.
Am 02.01.24 um 18:23 schrieb Werner Sembach:
> The old quirk combination sometimes cause a laggy keyboard after boot. With
> the new quirk the initial issue of an unresponsive keyboard after s3 resume
> is also fixed, but it doesn't have the negative side effect of the
> sometimes laggy keyboard.
>
> v2: Fix typo in commit message
>
> Signed-off-by: Werner Sembach <wse@tuxedocomputers.com>
> Cc: stable@vger.kernel.org
> ---
> drivers/input/serio/i8042-acpipnpio.h | 10 +---------
> 1 file changed, 1 insertion(+), 9 deletions(-)
>
> diff --git a/drivers/input/serio/i8042-acpipnpio.h b/drivers/input/serio/i8042-acpipnpio.h
> index 10ec4534e5e14..e631a26394e92 100644
> --- a/drivers/input/serio/i8042-acpipnpio.h
> +++ b/drivers/input/serio/i8042-acpipnpio.h
> @@ -1142,18 +1142,10 @@ static const struct dmi_system_id i8042_dmi_quirk_table[] __initconst = {
> SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP)
> },
> {
> - /*
> - * Setting SERIO_QUIRK_NOMUX or SERIO_QUIRK_RESET_ALWAYS makes
> - * the keyboard very laggy for ~5 seconds after boot and
> - * sometimes also after resume.
> - * However both are required for the keyboard to not fail
> - * completely sometimes after boot or resume.
> - */
> .matches = {
> DMI_MATCH(DMI_BOARD_NAME, "N150CU"),
> },
> - .driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_ALWAYS |
> - SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP)
> + .driver_data = (void *)(SERIO_QUIRK_FORCENORESTORE)
> },
> {
> .matches = {
^ permalink raw reply
* [dtor-input:next] BUILD SUCCESS 992bbc9e9ab9abe5bc1ea9a1a8d61331b28f848e
From: kernel test robot @ 2024-01-02 22:39 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: 992bbc9e9ab9abe5bc1ea9a1a8d61331b28f848e Input: iqs269a - add support for OTP variants
Warning ids grouped by kconfigs:
gcc_recent_errors
|-- arc-randconfig-r051-20240102
| |-- drivers-input-misc-iqs7222.c:WARNING:Threaded-IRQ-with-no-primary-handler-requested-without-IRQF_ONESHOT-(unless-it-is-nested-IRQ)
| |-- drivers-input-touchscreen-edt-ft5x06.c:WARNING:Threaded-IRQ-with-no-primary-handler-requested-without-IRQF_ONESHOT-(unless-it-is-nested-IRQ)
| `-- drivers-input-touchscreen-iqs7211.c:WARNING:Threaded-IRQ-with-no-primary-handler-requested-without-IRQF_ONESHOT-(unless-it-is-nested-IRQ)
|-- arm-allmodconfig
| |-- WARNING:modpost:missing-MODULE_DESCRIPTION()-in-drivers-ata-pata_ftide010.o
| `-- WARNING:modpost:missing-MODULE_DESCRIPTION()-in-drivers-ata-sata_gemini.o
|-- m68k-randconfig-r061-20240102
| |-- drivers-input-misc-iqs7222.c:WARNING:Threaded-IRQ-with-no-primary-handler-requested-without-IRQF_ONESHOT-(unless-it-is-nested-IRQ)
| `-- drivers-input-touchscreen-edt-ft5x06.c:WARNING:Threaded-IRQ-with-no-primary-handler-requested-without-IRQF_ONESHOT-(unless-it-is-nested-IRQ)
|-- nios2-allmodconfig
| |-- WARNING:modpost:missing-MODULE_DESCRIPTION()-in-drivers-ata-pata_ftide010.o
| `-- WARNING:modpost:missing-MODULE_DESCRIPTION()-in-drivers-ata-sata_gemini.o
|-- riscv-allmodconfig
| |-- WARNING:modpost:missing-MODULE_DESCRIPTION()-in-drivers-ata-pata_ftide010.o
| `-- WARNING:modpost:missing-MODULE_DESCRIPTION()-in-drivers-ata-sata_gemini.o
|-- riscv-randconfig-r053-20240102
| `-- WARNING:modpost:missing-MODULE_DESCRIPTION()-in-drivers-ata-sata_gemini.o
|-- riscv-randconfig-r054-20240102
| |-- drivers-input-misc-iqs7222.c:WARNING:Threaded-IRQ-with-no-primary-handler-requested-without-IRQF_ONESHOT-(unless-it-is-nested-IRQ)
| `-- drivers-input-touchscreen-iqs7211.c:WARNING:Threaded-IRQ-with-no-primary-handler-requested-without-IRQF_ONESHOT-(unless-it-is-nested-IRQ)
|-- sparc64-randconfig-r062-20240102
| |-- drivers-input-touchscreen-edt-ft5x06.c:WARNING:Threaded-IRQ-with-no-primary-handler-requested-without-IRQF_ONESHOT-(unless-it-is-nested-IRQ)
| `-- drivers-input-touchscreen-iqs7211.c:WARNING:Threaded-IRQ-with-no-primary-handler-requested-without-IRQF_ONESHOT-(unless-it-is-nested-IRQ)
|-- x86_64-randconfig-101-20240102
| |-- drivers-input-touchscreen-edt-ft5x06.c:WARNING:Threaded-IRQ-with-no-primary-handler-requested-without-IRQF_ONESHOT-(unless-it-is-nested-IRQ)
| `-- drivers-input-touchscreen-iqs7211.c:WARNING:Threaded-IRQ-with-no-primary-handler-requested-without-IRQF_ONESHOT-(unless-it-is-nested-IRQ)
|-- x86_64-randconfig-104-20240102
| `-- drivers-input-touchscreen-iqs7211.c:WARNING:Threaded-IRQ-with-no-primary-handler-requested-without-IRQF_ONESHOT-(unless-it-is-nested-IRQ)
`-- x86_64-randconfig-r053-20240102
`-- drivers-input-misc-iqs7222.c:WARNING:Threaded-IRQ-with-no-primary-handler-requested-without-IRQF_ONESHOT-(unless-it-is-nested-IRQ)
clang_recent_errors
|-- arm-randconfig-r051-20240102
| `-- drivers-input-misc-iqs7222.c:WARNING:Threaded-IRQ-with-no-primary-handler-requested-without-IRQF_ONESHOT-(unless-it-is-nested-IRQ)
|-- arm-randconfig-r061-20240102
| |-- drivers-input-touchscreen-edt-ft5x06.c:WARNING:Threaded-IRQ-with-no-primary-handler-requested-without-IRQF_ONESHOT-(unless-it-is-nested-IRQ)
| `-- drivers-input-touchscreen-iqs7211.c:WARNING:Threaded-IRQ-with-no-primary-handler-requested-without-IRQF_ONESHOT-(unless-it-is-nested-IRQ)
|-- arm64-allmodconfig
| `-- WARNING:modpost:missing-MODULE_DESCRIPTION()-in-drivers-soc-amlogic-meson-secure-pwrc.o
|-- hexagon-randconfig-r052-20240102
| `-- drivers-input-touchscreen-edt-ft5x06.c:WARNING:Threaded-IRQ-with-no-primary-handler-requested-without-IRQF_ONESHOT-(unless-it-is-nested-IRQ)
|-- i386-allmodconfig
| |-- WARNING:modpost:missing-MODULE_DESCRIPTION()-in-drivers-ata-pata_ftide010.o
| `-- WARNING:modpost:missing-MODULE_DESCRIPTION()-in-drivers-ata-sata_gemini.o
|-- powerpc-allmodconfig
| |-- WARNING:modpost:missing-MODULE_DESCRIPTION()-in-drivers-ata-pata_ftide010.o
| `-- WARNING:modpost:missing-MODULE_DESCRIPTION()-in-drivers-ata-sata_gemini.o
|-- x86_64-allmodconfig
| |-- WARNING:modpost:missing-MODULE_DESCRIPTION()-in-drivers-ata-pata_ftide010.o
| `-- WARNING:modpost:missing-MODULE_DESCRIPTION()-in-drivers-ata-sata_gemini.o
|-- x86_64-randconfig-001-20240102
| `-- PLEASE-submit-a-bug-report-to-https:github.com-llvm-llvm-project-issues-and-include-the-crash-backtrace-preprocessed-source-and-associated-run-script.
|-- x86_64-randconfig-003-20240102
| `-- PLEASE-submit-a-bug-report-to-https:github.com-llvm-llvm-project-issues-and-include-the-crash-backtrace-preprocessed-source-and-associated-run-script.
`-- x86_64-randconfig-006-20240102
`-- PLEASE-submit-a-bug-report-to-https:github.com-llvm-llvm-project-issues-and-include-the-crash-backtrace-preprocessed-source-and-associated-run-script.
elapsed time: 1462m
configs tested: 239
configs skipped: 2
The following configs have been built successfully.
More configs may be tested in the coming days.
tested configs:
alpha allnoconfig gcc
alpha allyesconfig gcc
alpha defconfig gcc
arc alldefconfig gcc
arc allmodconfig gcc
arc allnoconfig gcc
arc allyesconfig gcc
arc defconfig gcc
arc hsdk_defconfig gcc
arc nsim_700_defconfig gcc
arc randconfig-001-20240102 gcc
arc randconfig-002-20240102 gcc
arm allmodconfig gcc
arm allnoconfig gcc
arm allyesconfig gcc
arm at91_dt_defconfig gcc
arm defconfig clang
arm keystone_defconfig gcc
arm moxart_defconfig clang
arm multi_v4t_defconfig gcc
arm mv78xx0_defconfig clang
arm neponset_defconfig clang
arm randconfig-001-20240102 gcc
arm randconfig-002-20240102 gcc
arm randconfig-003-20240102 gcc
arm randconfig-004-20240102 gcc
arm tegra_defconfig gcc
arm vf610m4_defconfig gcc
arm64 allmodconfig clang
arm64 allnoconfig gcc
arm64 defconfig gcc
arm64 randconfig-001-20240102 gcc
arm64 randconfig-002-20240102 gcc
arm64 randconfig-003-20240102 gcc
arm64 randconfig-004-20240102 gcc
csky alldefconfig gcc
csky allmodconfig gcc
csky allnoconfig gcc
csky allyesconfig gcc
csky defconfig gcc
csky randconfig-001-20240102 gcc
csky randconfig-002-20240102 gcc
hexagon allmodconfig clang
hexagon allnoconfig clang
hexagon allyesconfig clang
hexagon defconfig clang
hexagon randconfig-001-20240102 clang
hexagon randconfig-002-20240102 clang
i386 allmodconfig clang
i386 allnoconfig clang
i386 allyesconfig clang
i386 buildonly-randconfig-001-20240102 gcc
i386 buildonly-randconfig-002-20240102 gcc
i386 buildonly-randconfig-003-20240102 gcc
i386 buildonly-randconfig-004-20240102 gcc
i386 buildonly-randconfig-005-20240102 gcc
i386 buildonly-randconfig-006-20240102 gcc
i386 defconfig gcc
i386 randconfig-001-20240102 gcc
i386 randconfig-002-20240102 gcc
i386 randconfig-003-20240102 gcc
i386 randconfig-004-20240102 gcc
i386 randconfig-005-20240102 gcc
i386 randconfig-006-20240102 gcc
i386 randconfig-011-20240102 clang
i386 randconfig-011-20240103 gcc
i386 randconfig-012-20240102 clang
i386 randconfig-012-20240103 gcc
i386 randconfig-013-20240102 clang
i386 randconfig-013-20240103 gcc
i386 randconfig-014-20240102 clang
i386 randconfig-014-20240103 gcc
i386 randconfig-015-20240102 clang
i386 randconfig-015-20240103 gcc
i386 randconfig-016-20240102 clang
i386 randconfig-016-20240103 gcc
loongarch allmodconfig gcc
loongarch allnoconfig gcc
loongarch allyesconfig gcc
loongarch defconfig gcc
loongarch randconfig-001-20240102 gcc
loongarch randconfig-002-20240102 gcc
m68k allmodconfig gcc
m68k allnoconfig gcc
m68k allyesconfig gcc
m68k defconfig gcc
m68k hp300_defconfig gcc
m68k m5208evb_defconfig gcc
m68k m5307c3_defconfig gcc
m68k q40_defconfig gcc
m68k sun3x_defconfig gcc
m68k virt_defconfig gcc
microblaze allmodconfig gcc
microblaze allnoconfig gcc
microblaze allyesconfig gcc
microblaze defconfig gcc
mips allmodconfig gcc
mips allnoconfig clang
mips allyesconfig gcc
mips ip27_defconfig gcc
mips lemote2f_defconfig gcc
mips loongson1b_defconfig gcc
mips vocore2_defconfig gcc
mips xway_defconfig gcc
nios2 allmodconfig gcc
nios2 allnoconfig gcc
nios2 allyesconfig gcc
nios2 defconfig gcc
nios2 randconfig-001-20240102 gcc
nios2 randconfig-002-20240102 gcc
openrisc alldefconfig gcc
openrisc allmodconfig gcc
openrisc allnoconfig gcc
openrisc allyesconfig gcc
openrisc defconfig gcc
parisc allmodconfig gcc
parisc allnoconfig gcc
parisc allyesconfig gcc
parisc defconfig gcc
parisc randconfig-001-20240102 gcc
parisc randconfig-002-20240102 gcc
parisc64 defconfig gcc
powerpc adder875_defconfig gcc
powerpc allmodconfig clang
powerpc allnoconfig gcc
powerpc allyesconfig clang
powerpc amigaone_defconfig gcc
powerpc eiger_defconfig gcc
powerpc ep8248e_defconfig gcc
powerpc gamecube_defconfig clang
powerpc ge_imp3a_defconfig gcc
powerpc holly_defconfig gcc
powerpc katmai_defconfig clang
powerpc ksi8560_defconfig gcc
powerpc makalu_defconfig gcc
powerpc mpc8313_rdb_defconfig clang
powerpc mpc837x_rdb_defconfig gcc
powerpc mpc866_ads_defconfig clang
powerpc ppa8548_defconfig gcc
powerpc randconfig-001-20240102 gcc
powerpc randconfig-002-20240102 gcc
powerpc randconfig-003-20240102 gcc
powerpc tqm8555_defconfig gcc
powerpc tqm8xx_defconfig gcc
powerpc warp_defconfig gcc
powerpc xes_mpc85xx_defconfig gcc
powerpc64 randconfig-001-20240102 gcc
powerpc64 randconfig-002-20240102 gcc
powerpc64 randconfig-003-20240102 gcc
riscv allmodconfig gcc
riscv allnoconfig clang
riscv allyesconfig gcc
riscv defconfig gcc
riscv nommu_k210_defconfig gcc
riscv nommu_virt_defconfig clang
riscv randconfig-001-20240102 gcc
riscv randconfig-002-20240102 gcc
riscv rv32_defconfig clang
s390 allmodconfig gcc
s390 allnoconfig gcc
s390 allyesconfig gcc
s390 defconfig gcc
s390 randconfig-001-20240102 clang
s390 randconfig-002-20240102 clang
sh alldefconfig gcc
sh allmodconfig gcc
sh allnoconfig gcc
sh allyesconfig gcc
sh ap325rxa_defconfig gcc
sh apsh4a3a_defconfig gcc
sh defconfig gcc
sh espt_defconfig gcc
sh hp6xx_defconfig gcc
sh j2_defconfig gcc
sh kfr2r09-romimage_defconfig gcc
sh kfr2r09_defconfig gcc
sh polaris_defconfig gcc
sh randconfig-001-20240102 gcc
sh randconfig-002-20240102 gcc
sh rts7751r2dplus_defconfig gcc
sh sdk7780_defconfig gcc
sh se7750_defconfig gcc
sh sh7724_generic_defconfig gcc
sh sh7763rdp_defconfig gcc
sh shmin_defconfig gcc
sh titan_defconfig gcc
sparc allmodconfig gcc
sparc allyesconfig gcc
sparc64 allmodconfig gcc
sparc64 allyesconfig gcc
sparc64 defconfig gcc
sparc64 randconfig-001-20240102 gcc
sparc64 randconfig-002-20240102 gcc
um allmodconfig clang
um allnoconfig clang
um allyesconfig clang
um defconfig gcc
um i386_defconfig gcc
um randconfig-001-20240102 gcc
um randconfig-002-20240102 gcc
um x86_64_defconfig gcc
x86_64 allnoconfig gcc
x86_64 allyesconfig clang
x86_64 buildonly-randconfig-001-20240102 gcc
x86_64 buildonly-randconfig-002-20240102 gcc
x86_64 buildonly-randconfig-003-20240102 gcc
x86_64 buildonly-randconfig-004-20240102 gcc
x86_64 buildonly-randconfig-005-20240102 gcc
x86_64 buildonly-randconfig-006-20240102 gcc
x86_64 defconfig gcc
x86_64 kexec gcc
x86_64 randconfig-001-20240102 clang
x86_64 randconfig-002-20240102 clang
x86_64 randconfig-003-20240102 clang
x86_64 randconfig-004-20240102 clang
x86_64 randconfig-005-20240102 clang
x86_64 randconfig-006-20240102 clang
x86_64 randconfig-011-20240102 gcc
x86_64 randconfig-012-20240102 gcc
x86_64 randconfig-013-20240102 gcc
x86_64 randconfig-014-20240102 gcc
x86_64 randconfig-015-20240102 gcc
x86_64 randconfig-016-20240102 gcc
x86_64 randconfig-071-20240102 gcc
x86_64 randconfig-072-20240102 gcc
x86_64 randconfig-073-20240102 gcc
x86_64 randconfig-074-20240102 gcc
x86_64 randconfig-075-20240102 gcc
x86_64 randconfig-076-20240102 gcc
x86_64 rhel-8.3-rust clang
x86_64 rhel-8.3 gcc
xtensa allnoconfig gcc
xtensa allyesconfig gcc
xtensa audio_kc705_defconfig gcc
xtensa iss_defconfig gcc
xtensa nommu_kc705_defconfig gcc
xtensa randconfig-001-20240102 gcc
xtensa randconfig-002-20240102 gcc
xtensa xip_kc705_defconfig gcc
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply
* [PATCH] HID: i2c-hid: Remove SET_POWER SLEEP on system suspend
From: Kai-Heng Feng @ 2024-01-03 0:33 UTC (permalink / raw)
To: jikos, benjamin.tissoires
Cc: Kai-Heng Feng, Douglas Anderson, Maxime Ripard,
Thomas Weißschuh, Johan Hovold, Dmitry Torokhov, linux-input,
linux-kernel
There's a Cirque touchpad that wakes system up without anything touched
the touchpad. The input report is empty when this happens.
The reason is stated in HID over I2C spec, 7.2.8.2:
"If the DEVICE wishes to wake the HOST from its low power state, it can
issue a wake by asserting the interrupt."
This is fine if OS can put system back to suspend by identifying input
wakeup count stays the same on resume, like Chrome OS Dark Resume [0].
But for regular distro such policy is lacking.
According to commit d9f448e3d71f ("HID: i2c-hid: set power sleep before
shutdown"), SLEEP is required for shutdown, in addition to that, commit
67b18dfb8cfc ("HID: i2c-hid: Remove runtime power management") didn't
notice any power comsumption reduction from SET_POWER SLEEP, so also
remove that to avoid the device asserting the interrupt.
[0] https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/power_manager/docs/dark_resume.md
Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
---
drivers/hid/i2c-hid/i2c-hid-core.c | 3 ---
1 file changed, 3 deletions(-)
diff --git a/drivers/hid/i2c-hid/i2c-hid-core.c b/drivers/hid/i2c-hid/i2c-hid-core.c
index 2735cd585af0..dd513dc75cb9 100644
--- a/drivers/hid/i2c-hid/i2c-hid-core.c
+++ b/drivers/hid/i2c-hid/i2c-hid-core.c
@@ -957,9 +957,6 @@ static int i2c_hid_core_suspend(struct i2c_hid *ihid, bool force_poweroff)
if (ret < 0)
return ret;
- /* Save some power */
- i2c_hid_set_power(ihid, I2C_HID_PWR_SLEEP);
-
disable_irq(client->irq);
if (force_poweroff || !device_may_wakeup(&client->dev))
--
2.34.1
^ permalink raw reply related
* [PATCH RESEND] Input: i8042 - add Fujitsu Lifebook U728 to i8042 quirk table
From: Szilard Fabian @ 2024-01-03 1:49 UTC (permalink / raw)
To: linux-kernel, linux-input, dmitry.torokhov; +Cc: Szilard Fabian
Another Fujitsu-related patch.
In the initial boot stage the integrated keyboard of Fujitsu Lifebook U728
refuses to work and it's not possible to type for example a dm-crypt
passphrase without the help of an external keyboard.
i8042.nomux kernel parameter resolves this issue but using that a PS/2
mouse is detected. This input device is unused even when the i2c-hid-acpi
kernel module is blacklisted making the integrated ELAN touchpad
(04F3:3092) not working at all.
So this notebook uses a hid-over-i2c touchpad which is managed by the
i2c_designware input driver. Since you can't find a PS/2 mouse port on this
computer and you can't connect a PS/2 mouse to it even with an official
port replicator I think it's safe to not use the PS/2 mouse port at all.
Signed-off-by: Szilard Fabian <szfabian@bluemarch.art>
---
I think the same configuration could be applied to Lifebook U748 and U758
too but I can't test this theory on these machines.
---
drivers/input/serio/i8042-acpipnpio.h | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/drivers/input/serio/i8042-acpipnpio.h b/drivers/input/serio/i8042-acpipnpio.h
index 028e45bd050b..983f31014330 100644
--- a/drivers/input/serio/i8042-acpipnpio.h
+++ b/drivers/input/serio/i8042-acpipnpio.h
@@ -618,6 +618,14 @@ static const struct dmi_system_id i8042_dmi_quirk_table[] __initconst = {
},
.driver_data = (void *)(SERIO_QUIRK_NOMUX)
},
+ {
+ /* Fujitsu Lifebook U728 */
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK U728"),
+ },
+ .driver_data = (void *)(SERIO_QUIRK_NOAUX)
+ },
{
/* Gigabyte M912 */
.matches = {
--
2.43.0
^ permalink raw reply related
* Re: [PATCH v4 6/6] x86/vmware: Add TDX hypercall support
From: kirill.shutemov @ 2024-01-03 12:25 UTC (permalink / raw)
To: Alexey Makhalov
Cc: linux-kernel, virtualization, bp, hpa, dave.hansen, mingo, tglx,
x86, netdev, richardcochran, linux-input, dmitry.torokhov, zackr,
linux-graphics-maintainer, pv-drivers, namit, timothym, akaher,
jsipek, dri-devel, daniel, airlied, tzimmermann, mripard,
maarten.lankhorst, horms
In-Reply-To: <20231228192421.29894-7-alexey.makhalov@broadcom.com>
On Thu, Dec 28, 2023 at 11:24:21AM -0800, Alexey Makhalov wrote:
> From: Alexey Makhalov <amakhalov@vmware.com>
>
> VMware hypercalls use I/O port, VMCALL or VMMCALL instructions.
> Add __tdx_hypercall path to support TDX guests.
>
> No change in high bandwidth hypercalls, as only low bandwidth
> ones are supported for TDX guests.
>
> Co-developed-by: Tim Merrifield <timothym@vmware.com>
> Signed-off-by: Tim Merrifield <timothym@vmware.com>
> Signed-off-by: Alexey Makhalov <amakhalov@vmware.com>
> Reviewed-by: Nadav Amit <namit@vmware.com>
Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
--
Kiryl Shutsemau / Kirill A. Shutemov
^ permalink raw reply
* Re: [PATCH v4 2/6] x86/vmware: Introduce VMware hypercall API
From: Simon Horman @ 2024-01-03 16:24 UTC (permalink / raw)
To: Alexey Makhalov
Cc: linux-kernel, virtualization, bp, hpa, dave.hansen, mingo, tglx,
x86, netdev, richardcochran, linux-input, dmitry.torokhov, zackr,
linux-graphics-maintainer, pv-drivers, namit, timothym, akaher,
jsipek, dri-devel, daniel, airlied, tzimmermann, mripard,
maarten.lankhorst, kirill.shutemov
In-Reply-To: <20231228192421.29894-3-alexey.makhalov@broadcom.com>
On Thu, Dec 28, 2023 at 11:24:17AM -0800, Alexey Makhalov wrote:
> From: Alexey Makhalov <amakhalov@vmware.com>
>
> Introduce vmware_hypercall family of functions. It is a common
> implementation to be used by the VMware guest code and virtual
> device drivers in architecture independent manner.
>
> The API consists of vmware_hypercallX and vmware_hypercall_hb_{out,in}
> set of functions by analogy with KVM hypercall API. Architecture
> specific implementation is hidden inside.
>
> It will simplify future enhancements in VMware hypercalls such
> as SEV-ES and TDX related changes without needs to modify a
> caller in device drivers code.
>
> Current implementation extends an idea from commit bac7b4e84323
> ("x86/vmware: Update platform detection code for VMCALL/VMMCALL
> hypercalls") to have a slow, but safe path in VMWARE_HYPERCALL
> earlier during the boot when alternatives are not yet applied.
> This logic was inherited from VMWARE_CMD from the commit mentioned
> above. Default alternative code was optimized by size to reduce
> excessive nop alignment once alternatives are applied. Total
> default code size is 26 bytes, in worse case (3 bytes alternative)
> remaining 23 bytes will be aligned by only 3 long NOP instructions.
>
> Signed-off-by: Alexey Makhalov <amakhalov@vmware.com>
> Reviewed-by: Nadav Amit <namit@vmware.com>
> Reviewed-by: Jeff Sipek <jsipek@vmware.com>
Hi Alexey,
I'd like to flag that this breaks gcc-13 x86_64 allmodconfig builds of the
following files. And although this is resolved by the subsequent 3 patches
in this series, it does still break bisection.
drivers/gpu/drm/vmwgfx/vmwgfx_msg.c
drivers/input/mouse/vmmouse.c
drivers/ptp/ptp_vmw.c
...
^ permalink raw reply
* Re: [PATCH] input: uinput: Drop checks for abs_min > abs_max
From: Peter Hutterer @ 2024-01-03 23:22 UTC (permalink / raw)
To: Chris Morgan
Cc: Paul Cercueil, Dmitry Torokhov, Chris Morgan, linux-input, svv,
biswarupp, contact
In-Reply-To: <SN6PR06MB53421C1C9CC9EA94CBB781C6A594A@SN6PR06MB5342.namprd06.prod.outlook.com>
On Fri, Dec 22, 2023 at 11:09:46AM -0600, Chris Morgan wrote:
> On Wed, Dec 20, 2023 at 02:39:14PM +0100, Paul Cercueil wrote:
> > Hi Dmitry,
> >
> > Le mardi 19 décembre 2023 à 17:53 -0800, Dmitry Torokhov a écrit :
> > > Hi Paul,
> > >
> > > On Wed, Dec 20, 2023 at 01:38:39AM +0100, Paul Cercueil wrote:
> > > > Hi Peter,
> > > >
> > > > Le mercredi 20 décembre 2023 à 09:51 +1000, Peter Hutterer a
> > > > écrit :
> > > > > On Mon, Dec 18, 2023 at 11:16:53AM -0600, Chris Morgan wrote:
> > > > > > From: Chris Morgan <macromorgan@hotmail.com>
> > > > > >
> > > > > > Stop checking if the minimum abs value is greater than the
> > > > > > maximum
> > > > > > abs
> > > > > > value. When the axis is inverted this condition is allowed.
> > > > > > Without
> > > > > > relaxing this check, it is not possible to use uinput on
> > > > > > devices in
> > > > > > userspace with an inverted axis, such as the adc-joystick found
> > > > > > on
> > > > > > many handheld gaming devices.
> > > > >
> > > > > As mentioned in the other thread [1] a fair bit of userspace
> > > > > relies
> > > > > on
> > > > > that general assumption so removing it will likely cause all
> > > > > sorts of
> > > > > issues.
> > > >
> > > > There is some userspace that works with it though, so why restrict
> > > > it
> > > > artificially?
> > > >
> > > > The fact that some other userspace code wouldn't work with it
> > > > sounds a
> > > > bit irrelevant. They just never encountered that min>max usage
> > > > before.
> > > >
> > > > And removing this check won't cause all sort of issues, why would
> > > > it?
> > > > It's not like the current software actively probes min>max and
> > > > crash
> > > > badly if it doesn't return -EINVAL...
> > >
> > > It will cause weird movements because calculations expect min be the
> > > minimum, and max the maximum, and not encode left/right or up/down.
> > > Putting this into adc joystick binding was a mistake.
> >
> > I don't see why it was a mistake, it's only one of the ways to specify
> > that the axis is inverted. This information is between the firmware
> > (DT) and the kernel, that doesn't mean the information has to be
> > relayed as-is to the userspace.
> >
> > Unlike what you wrote in your other answer, when talking about input
> > the kernel doesn't really normalize anything - it gives you the min/max
> > values, and the raw samples, not normalized samples (they don't get
> > translated to a pre-specified range, or even clamped).
> >
> > I don't really like the idea of having the driver tamper with the
> > samples, but if the specification really is that max>min, then it would
> > be up to evdev/joydev (if the individual drivers are allowed min>max)
> > or adc-joystick (if they are not) to process the samples.
> >
> > Cheers,
> > -Paul
>
> Forgive me for such a naive question, but what would it take to get a
> bool of `inverted` added to the struct input_absinfo, and then an ioctl
> to get the inverted status? I'm honestly not sure of the ramifications
> of what this may do to userspace (good/bad/ugly?)
Perfectly valid question IMO :)
Unfortunately the struct is API and ABI, so it'll be a significant
effort. You need some negotiation with the kernel to know the size of
the struct (with our without that boolean) - that effectively requires a
new ioctl. Userspace will then need to handle both code paths (including
ifdefs) for the foreseeable future. And that's only the C layers, there
are plenty of other evdev consumers in python/rust/... that would all
need to adjust.
Assuming you can do all that, you then still have most of userspace that
doesn't know about this ioctl. And given how rare this situation seems
to be, it'll be quite a while until everything catches up.
Fixing it in the driver means userspace just works as-is. Which seems
like the better option ;)
Cheers,
Peter
> From what I am seeing thus far it sounds like we should not be setting
> the values as inverted for now because it can cause problems. We can
> either fix this in the adc-joystick driver, or my honest preference is
> to just set the range as defined as min < max and add a comment stating
> that the axis is inverted. If we can't handle reversed values
> throughout the stack I don't see any reason to handle it special just
> for the adc-joystick driver.
>
> Thank you,
> Chris
>
> >
> > > This is the definition of absinfo:
> > >
> > > /**
> > > * struct input_absinfo - used by EVIOCGABS/EVIOCSABS ioctls
> > > * @value: latest reported value for the axis.
> > > * @minimum: specifies minimum value for the axis.
> > > * @maximum: specifies maximum value for the axis.
> > > * @fuzz: specifies fuzz value that is used to filter noise from
> > > * the event stream.
> > > * @flat: values that are within this value will be discarded by
> > > * joydev interface and reported as 0 instead.
> > > * @resolution: specifies resolution for the values reported for
> > > * the axis.
> > > *
> > > * Note that input core does not clamp reported values to the
> > > * [minimum, maximum] limits, such task is left to userspace.
> > > ...
> > > */
> > >
> > > (We should change wording of the last sentence to "... does not
> > > always
> > > clamp ..." since when we do inversion/swap we do clamp values.)
> > >
> > > And note that the userspace that can handle swapped min and max will
> > > work fine if the kernel provides normalized data, but other software
> > > will/may not work.
> > >
> > > Thanks.
> > >
> >
^ permalink raw reply
* [PATCH bpf-next 0/2] Annotate kfuncs in .BTF_ids section
From: Daniel Xu @ 2024-01-03 23:31 UTC (permalink / raw)
To: coreteam, netdev, cgroups, linux-input, linux-trace-kernel,
linux-stm32, linux-kselftest, fsverity, netfilter-devel,
linux-kernel, linux-arm-kernel, bpf, alexei.starovoitov, olsajiri,
quentin, alan.maguire, memxor
This is a bpf-treewide change that annotates all kfuncs as such inside
.BTF_ids. This annotation eventually allows us to automatically generate
kfunc prototypes from bpftool.
We store this metadata inside a yet-unused flags field inside struct
btf_id_set8 (thanks Kumar!). pahole will be taught where to look.
More details about the full chain of events are available in commit 2's
description.
Daniel Xu (2):
bpf: btf: Support optional flags for BTF_SET8 sets
bpf: treewide: Annotate BPF kfuncs in BTF
drivers/hid/bpf/hid_bpf_dispatch.c | 4 ++--
fs/verity/measure.c | 2 +-
include/linux/btf_ids.h | 17 ++++++++++++-----
kernel/bpf/btf.c | 3 +++
kernel/bpf/cpumask.c | 2 +-
kernel/bpf/helpers.c | 4 ++--
kernel/bpf/map_iter.c | 2 +-
kernel/cgroup/rstat.c | 2 +-
kernel/trace/bpf_trace.c | 4 ++--
net/bpf/test_run.c | 4 ++--
net/core/filter.c | 8 ++++----
net/core/xdp.c | 2 +-
net/ipv4/bpf_tcp_ca.c | 2 +-
net/ipv4/fou_bpf.c | 2 +-
net/ipv4/tcp_bbr.c | 2 +-
net/ipv4/tcp_cubic.c | 2 +-
net/ipv4/tcp_dctcp.c | 2 +-
net/netfilter/nf_conntrack_bpf.c | 2 +-
net/netfilter/nf_nat_bpf.c | 2 +-
net/xfrm/xfrm_interface_bpf.c | 2 +-
net/xfrm/xfrm_state_bpf.c | 2 +-
.../selftests/bpf/bpf_testmod/bpf_testmod.c | 2 +-
22 files changed, 42 insertions(+), 32 deletions(-)
--
2.42.1
^ 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