From: "Mario Limonciello (AMD) (kernel.org)" <superm1@kernel.org>
To: LI Qingwu <Qing-wu.Li@leica-geosystems.com.cn>,
jikos@kernel.org, bentiss@kernel.org, dianders@chromium.org,
treapking@chromium.org, alex.vinarskis@gmail.com,
dan.carpenter@linaro.org, guanwentao@uniontech.com, kl@kl.wtf,
linux-input@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] HID: i2c-hid: Add API to wait for device reset completion
Date: Fri, 14 Nov 2025 10:13:04 -0600 [thread overview]
Message-ID: <dc85cf29-7b89-4eb3-99a0-b66572ceca9c@kernel.org> (raw)
In-Reply-To: <20251114112418.3275211-1-Qing-wu.Li@leica-geosystems.com.cn>
On 11/14/2025 5:24 AM, LI Qingwu wrote:
> Some HID over I2C devices need to signal reset completion to the host
> after firmware updates or device resets. Per the HID over I2C spec,
> devices signal completion by sending an empty input report (0x0000).
>
> Add i2c_hid_wait_reset_complete() to allow drivers to synchronize
> with device reset operations. The function sets I2C_HID_RESET_PENDING
> and waits for the device's completion signal.
>
> Returns: 0 on success, -ETIMEDOUT on timeout, -ENODEV if invalid device.
>
> Upstream-Status: Pending
This tag is probably useful for your downstream tree, but it's not
useful upstream. You should strip it when submitting upstream.
> Signed-off-by: LI Qingwu <Qing-wu.Li@leica-geosystems.com.cn>
> ---
> drivers/hid/i2c-hid/i2c-hid-core.c | 24 ++++++++++++++++++++++++
> drivers/hid/i2c-hid/i2c-hid.h | 1 +
> 2 files changed, 25 insertions(+)
>
> diff --git a/drivers/hid/i2c-hid/i2c-hid-core.c b/drivers/hid/i2c-hid/i2c-hid-core.c
> index d3912e3f2f13a..4feab2327e92d 100644
> --- a/drivers/hid/i2c-hid/i2c-hid-core.c
> +++ b/drivers/hid/i2c-hid/i2c-hid-core.c
> @@ -1365,6 +1365,30 @@ const struct dev_pm_ops i2c_hid_core_pm = {
> };
> EXPORT_SYMBOL_GPL(i2c_hid_core_pm);
>
> +int i2c_hid_wait_reset_complete(struct device *dev, unsigned long timeout_ms)
> +{
> + struct i2c_client *client;
> + struct i2c_hid *ihid;
> + long ret;
> +
> + if (!dev)
> + return -ENODEV;
> +
> + client = to_i2c_client(dev);
Check if client is NULL?
> + ihid = i2c_get_clientdata(client);
> + if (!ihid)
> + return -ENODEV;
> + set_bit(I2C_HID_RESET_PENDING, &ihid->flags);
> + ret = wait_event_timeout(ihid->wait,
> + !test_bit(I2C_HID_RESET_PENDING, &ihid->flags),
> + msecs_to_jiffies(timeout_ms));
> + if (ret == 0) {
Shouldn't need curly braces for a one line statement.
> + clear_bit(I2C_HID_RESET_PENDING, &ihid->flags);
> + }
> + return ret ? 0 : -ETIMEDOUT;
Why not just:
return ret;
> +}
> +EXPORT_SYMBOL_GPL(i2c_hid_wait_reset_complete);
Can you please include a second patch in your series demonstrating the
usage of this in a driver?
> +
> MODULE_DESCRIPTION("HID over I2C core driver");
> MODULE_AUTHOR("Benjamin Tissoires <benjamin.tissoires@gmail.com>");
> MODULE_LICENSE("GPL");
> diff --git a/drivers/hid/i2c-hid/i2c-hid.h b/drivers/hid/i2c-hid/i2c-hid.h
> index 2c7b66d5caa0f..1c6d959716858 100644
> --- a/drivers/hid/i2c-hid/i2c-hid.h
> +++ b/drivers/hid/i2c-hid/i2c-hid.h
> @@ -40,6 +40,7 @@ void i2c_hid_core_remove(struct i2c_client *client);
>
> void i2c_hid_core_shutdown(struct i2c_client *client);
>
> +int i2c_hid_wait_reset_complete(struct device *dev, unsigned long timeout_ms);
> extern const struct dev_pm_ops i2c_hid_core_pm;
>
> #endif
prev parent reply other threads:[~2025-11-14 16:13 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-14 11:24 LI Qingwu
2025-11-14 16:13 ` Mario Limonciello (AMD) (kernel.org) [this message]
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=dc85cf29-7b89-4eb3-99a0-b66572ceca9c@kernel.org \
--to=superm1@kernel.org \
--cc=Qing-wu.Li@leica-geosystems.com.cn \
--cc=alex.vinarskis@gmail.com \
--cc=bentiss@kernel.org \
--cc=dan.carpenter@linaro.org \
--cc=dianders@chromium.org \
--cc=guanwentao@uniontech.com \
--cc=jikos@kernel.org \
--cc=kl@kl.wtf \
--cc=linux-input@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=treapking@chromium.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®