From: Marc Dietrich <marvin24@gmx.de>
To: linux-staging@lists.linux.dev
Cc: linux-tegra@vger.kernel.org, gregkh@linuxfoundation.org,
thierry.reding@gmail.com, dan.carpenter@linaro.org,
Marc Dietrich <marvin24@gmx.de>
Subject: [PATCH 3/5] staging: nvec: make touchpad init synchronous
Date: Sat, 6 Apr 2024 14:31:21 +0200 [thread overview]
Message-ID: <20240406123123.37148-4-marvin24@gmx.de> (raw)
In-Reply-To: <20240406123123.37148-1-marvin24@gmx.de>
Currently, we are constantly sending commands to the EC without waiting for them to be
executed. For the touchpad initialization this only worked because we were waiting 200 µs
between each submitted command byte, so the EC had enough time to execute. In the furture
we like to avoid this delay, so we need to wait for each command to be executed first.
Do this by switching from asynchronous to synchronous command transmission.
Signed-off-by: Marc Dietrich <marvin24@gmx.de>
---
drivers/staging/nvec/nvec_ps2.c | 31 +++++++++++++++++++++----------
1 file changed, 21 insertions(+), 10 deletions(-)
diff --git a/drivers/staging/nvec/nvec_ps2.c b/drivers/staging/nvec/nvec_ps2.c
index cb6d71b8dc83..f34016c4a26b 100644
--- a/drivers/staging/nvec/nvec_ps2.c
+++ b/drivers/staging/nvec/nvec_ps2.c
@@ -60,16 +60,6 @@ static void ps2_stopstreaming(struct serio *ser_dev)
nvec_write_async(ps2_dev.nvec, buf, sizeof(buf));
}
-static int ps2_sendcommand(struct serio *ser_dev, unsigned char cmd)
-{
- unsigned char buf[] = { NVEC_PS2, SEND_COMMAND, ENABLE_MOUSE, 1 };
-
- buf[2] = cmd & 0xff;
-
- dev_dbg(&ser_dev->dev, "Sending ps2 cmd %02x\n", cmd);
- return nvec_write_async(ps2_dev.nvec, buf, sizeof(buf));
-}
-
static int nvec_ps2_notifier(struct notifier_block *nb,
unsigned long event_type, void *data)
{
@@ -98,6 +88,27 @@ static int nvec_ps2_notifier(struct notifier_block *nb,
return NOTIFY_DONE;
}
+static int ps2_sendcommand(struct serio *ser_dev, unsigned char cmd)
+{
+ unsigned char buf[] = { NVEC_PS2, SEND_COMMAND, ENABLE_MOUSE, 1 };
+ struct nvec_msg *msg;
+ int ret;
+
+ buf[2] = cmd & 0xff;
+
+ dev_dbg(&ser_dev->dev, "Sending ps2 cmd %02x\n", cmd);
+
+ ret = nvec_write_sync(ps2_dev.nvec, buf, sizeof(buf), &msg);
+ if (ret < 0)
+ return ret;
+
+ nvec_ps2_notifier(NULL, NVEC_PS2, msg->data);
+
+ nvec_msg_free(ps2_dev.nvec, msg);
+
+ return 0;
+}
+
static int nvec_mouse_probe(struct platform_device *pdev)
{
struct nvec_chip *nvec = dev_get_drvdata(pdev->dev.parent);
--
2.43.0
next prev parent reply other threads:[~2024-04-06 12:31 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-06 12:31 [PATCH V2 0/4] staging: nvec: improve robustnes during initialization Marc Dietrich
2024-04-06 12:31 ` [PATCH 1/5] staging: nvec: add ability to ignore EC responses in sync writes Marc Dietrich
2024-04-06 12:31 ` [PATCH 2/5] staging: nvec: make keyboard init synchronous Marc Dietrich
2024-04-06 12:31 ` Marc Dietrich [this message]
2024-04-06 12:31 ` [PATCH 4/5] staging: nvec: make i2c controller register writes robust Marc Dietrich
2024-04-11 12:00 ` Greg KH
2024-04-14 15:09 ` [PATCH V2 " Marc Dietrich
2024-04-15 6:07 ` Dan Carpenter
2024-04-06 12:31 ` [PATCH 5/5] staging: nvec: update TODO Marc Dietrich
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=20240406123123.37148-4-marvin24@gmx.de \
--to=marvin24@gmx.de \
--cc=dan.carpenter@linaro.org \
--cc=gregkh@linuxfoundation.org \
--cc=linux-staging@lists.linux.dev \
--cc=linux-tegra@vger.kernel.org \
--cc=thierry.reding@gmail.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox