All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alistair Francis <alistair@alistair23.me>
To: s.hauer@pengutronix.de, shawnguo@kernel.org,
	dmitry.torokhov@gmail.com, benjamin.tissoires@redhat.com
Cc: jikos@kernel.org, linux-kernel@vger.kernel.org,
	alistair23@gmail.com, linux-arm-kernel@lists.infradead.org,
	linux-input@vger.kernel.org, Jason.Gerecke@wacom.com,
	linux-imx@nxp.com, Ping.Cheng@wacom.com,
	devicetree@vger.kernel.org, martin.chen@wacom.com,
	tatsunosuke.tobita@wacom.com,
	Alistair Francis <alistair@alistair23.me>
Subject: [PATCH v16 1/3] HID: quirks: Allow inverting the absolute X/Y values
Date: Wed,  8 Dec 2021 22:40:43 +1000	[thread overview]
Message-ID: <20211208124045.61815-2-alistair@alistair23.me> (raw)
In-Reply-To: <20211208124045.61815-1-alistair@alistair23.me>

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 217f2d1b91c5..83ee803186a1 100644
--- a/drivers/hid/hid-input.c
+++ b/drivers/hid/hid-input.c
@@ -1331,6 +1331,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, shawnguo@kernel.org,
	dmitry.torokhov@gmail.com, benjamin.tissoires@redhat.com
Cc: jikos@kernel.org, linux-kernel@vger.kernel.org,
	alistair23@gmail.com, linux-arm-kernel@lists.infradead.org,
	linux-input@vger.kernel.org, Jason.Gerecke@wacom.com,
	linux-imx@nxp.com, Ping.Cheng@wacom.com,
	devicetree@vger.kernel.org, martin.chen@wacom.com,
	tatsunosuke.tobita@wacom.com,
	Alistair Francis <alistair@alistair23.me>
Subject: [PATCH v16 1/3] HID: quirks: Allow inverting the absolute X/Y values
Date: Wed,  8 Dec 2021 22:40:43 +1000	[thread overview]
Message-ID: <20211208124045.61815-2-alistair@alistair23.me> (raw)
In-Reply-To: <20211208124045.61815-1-alistair@alistair23.me>

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 217f2d1b91c5..83ee803186a1 100644
--- a/drivers/hid/hid-input.c
+++ b/drivers/hid/hid-input.c
@@ -1331,6 +1331,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-12-08 12:41 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-12-08 12:40 [PATCH v16 0/3] Add Wacom I2C support to rM2 Alistair Francis
2021-12-08 12:40 ` Alistair Francis
2021-12-08 12:40 ` Alistair Francis [this message]
2021-12-08 12:40   ` [PATCH v16 1/3] HID: quirks: Allow inverting the absolute X/Y values Alistair Francis
2021-12-08 12:40 ` [PATCH v16 2/3] HID: i2c-hid-of: Expose the touchscreen-inverted properties Alistair Francis
2021-12-08 12:40   ` Alistair Francis
2021-12-08 12:40 ` [PATCH v16 3/3] ARM: dts: imx7d: remarkable2: add wacom digitizer device Alistair Francis
2021-12-08 12:40   ` Alistair Francis
2021-12-16  3:08   ` Shawn Guo
2021-12-16  3:08     ` Shawn Guo
2021-12-14 12:33 ` [PATCH v16 0/3] Add Wacom I2C support to rM2 Benjamin Tissoires
2021-12-14 12:33   ` Benjamin Tissoires

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=20211208124045.61815-2-alistair@alistair23.me \
    --to=alistair@alistair23.me \
    --cc=Jason.Gerecke@wacom.com \
    --cc=Ping.Cheng@wacom.com \
    --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=martin.chen@wacom.com \
    --cc=s.hauer@pengutronix.de \
    --cc=shawnguo@kernel.org \
    --cc=tatsunosuke.tobita@wacom.com \
    /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.