All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alistair Francis <alistair@alistair23.me>
To: s.hauer@pengutronix.de, benjamin.tissoires@redhat.com,
	dmitry.torokhov@gmail.com, shawnguo@kernel.org
Cc: alistair23@gmail.com, linux-kernel@vger.kernel.org,
	linux-input@vger.kernel.org, linux-imx@nxp.com,
	linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org,
	jikos@kernel.org, Alistair Francis <alistair@alistair23.me>
Subject: [PATCH v13 1/3] HID: quirks: Allow inverting the absolute X/Y values
Date: Mon, 25 Oct 2021 20:46:03 +1000	[thread overview]
Message-ID: <20211025104605.36364-1-alistair@alistair23.me> (raw)

Add a HID_QUIRK_X_INVERT/HID_QUIRK_Y_INVERT quirk that can be used
to invert the X/Y values.

Signed-off-by: Alistair Francis <alistair@alistair23.me>
---
 drivers/hid/hid-input.c | 6 ++++++
 include/linux/hid.h     | 2 ++
 2 files changed, 8 insertions(+)

diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c
index 4b5ebeacd283..4babf369184f 100644
--- a/drivers/hid/hid-input.c
+++ b/drivers/hid/hid-input.c
@@ -1328,6 +1328,12 @@ void hidinput_hid_event(struct hid_device *hid, struct hid_field *field, struct
 
 	input = field->hidinput->input;
 
+	if (usage->type == EV_ABS &&
+		((*quirks & HID_QUIRK_X_INVERT) && usage->code == ABS_X ||
+		 (*quirks & HID_QUIRK_Y_INVERT) && usage->code == ABS_Y)) {
+			value = field->logical_maximum - value;
+	}
+
 	if (usage->hat_min < usage->hat_max || usage->hat_dir) {
 		int hat_dir = usage->hat_dir;
 		if (!hat_dir)
diff --git a/include/linux/hid.h b/include/linux/hid.h
index 9e067f937dbc..4959385ca588 100644
--- a/include/linux/hid.h
+++ b/include/linux/hid.h
@@ -349,6 +349,8 @@ struct hid_item {
 /* BIT(9) reserved for backward compatibility, was NO_INIT_INPUT_REPORTS */
 #define HID_QUIRK_ALWAYS_POLL			BIT(10)
 #define HID_QUIRK_INPUT_PER_APP			BIT(11)
+#define HID_QUIRK_X_INVERT			BIT(12)
+#define HID_QUIRK_Y_INVERT			BIT(13)
 #define HID_QUIRK_SKIP_OUTPUT_REPORTS		BIT(16)
 #define HID_QUIRK_SKIP_OUTPUT_REPORT_ID		BIT(17)
 #define HID_QUIRK_NO_OUTPUT_REPORTS_ON_INTR_EP	BIT(18)
-- 
2.31.1


WARNING: multiple messages have this Message-ID (diff)
From: Alistair Francis <alistair@alistair23.me>
To: s.hauer@pengutronix.de, benjamin.tissoires@redhat.com,
	dmitry.torokhov@gmail.com, shawnguo@kernel.org
Cc: alistair23@gmail.com, linux-kernel@vger.kernel.org,
	linux-input@vger.kernel.org, linux-imx@nxp.com,
	linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org,
	jikos@kernel.org, Alistair Francis <alistair@alistair23.me>
Subject: [PATCH v13 1/3] HID: quirks: Allow inverting the absolute X/Y values
Date: Mon, 25 Oct 2021 20:46:03 +1000	[thread overview]
Message-ID: <20211025104605.36364-1-alistair@alistair23.me> (raw)

Add a HID_QUIRK_X_INVERT/HID_QUIRK_Y_INVERT quirk that can be used
to invert the X/Y values.

Signed-off-by: Alistair Francis <alistair@alistair23.me>
---
 drivers/hid/hid-input.c | 6 ++++++
 include/linux/hid.h     | 2 ++
 2 files changed, 8 insertions(+)

diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c
index 4b5ebeacd283..4babf369184f 100644
--- a/drivers/hid/hid-input.c
+++ b/drivers/hid/hid-input.c
@@ -1328,6 +1328,12 @@ void hidinput_hid_event(struct hid_device *hid, struct hid_field *field, struct
 
 	input = field->hidinput->input;
 
+	if (usage->type == EV_ABS &&
+		((*quirks & HID_QUIRK_X_INVERT) && usage->code == ABS_X ||
+		 (*quirks & HID_QUIRK_Y_INVERT) && usage->code == ABS_Y)) {
+			value = field->logical_maximum - value;
+	}
+
 	if (usage->hat_min < usage->hat_max || usage->hat_dir) {
 		int hat_dir = usage->hat_dir;
 		if (!hat_dir)
diff --git a/include/linux/hid.h b/include/linux/hid.h
index 9e067f937dbc..4959385ca588 100644
--- a/include/linux/hid.h
+++ b/include/linux/hid.h
@@ -349,6 +349,8 @@ struct hid_item {
 /* BIT(9) reserved for backward compatibility, was NO_INIT_INPUT_REPORTS */
 #define HID_QUIRK_ALWAYS_POLL			BIT(10)
 #define HID_QUIRK_INPUT_PER_APP			BIT(11)
+#define HID_QUIRK_X_INVERT			BIT(12)
+#define HID_QUIRK_Y_INVERT			BIT(13)
 #define HID_QUIRK_SKIP_OUTPUT_REPORTS		BIT(16)
 #define HID_QUIRK_SKIP_OUTPUT_REPORT_ID		BIT(17)
 #define HID_QUIRK_NO_OUTPUT_REPORTS_ON_INTR_EP	BIT(18)
-- 
2.31.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

             reply	other threads:[~2021-10-25 10:46 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-25 10:46 Alistair Francis [this message]
2021-10-25 10:46 ` [PATCH v13 1/3] HID: quirks: Allow inverting the absolute X/Y values Alistair Francis
2021-10-25 10:46 ` [PATCH v13 2/3] HID: i2c-hid-of: Expose the touchscreen-inverted properties Alistair Francis
2021-10-25 10:46   ` Alistair Francis
2021-10-27 16:46   ` Rob Herring
2021-10-27 16:46     ` Rob Herring
2021-10-25 10:46 ` [PATCH v13 3/3] ARM: dts: imx7d: remarkable2: add wacom digitizer device Alistair Francis
2021-10-25 10:46   ` Alistair Francis
2021-10-26 13:30 ` [PATCH v13 1/3] HID: quirks: Allow inverting the absolute X/Y values kernel test robot
2021-10-26 13:30   ` kernel test robot
2021-10-26 13:30   ` kernel test robot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20211025104605.36364-1-alistair@alistair23.me \
    --to=alistair@alistair23.me \
    --cc=alistair23@gmail.com \
    --cc=benjamin.tissoires@redhat.com \
    --cc=devicetree@vger.kernel.org \
    --cc=dmitry.torokhov@gmail.com \
    --cc=jikos@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-imx@nxp.com \
    --cc=linux-input@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=s.hauer@pengutronix.de \
    --cc=shawnguo@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.