From nobody Sun Apr 5 21:27:36 2026 Received: from mail-dy1-f169.google.com (mail-dy1-f169.google.com [74.125.82.169]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CFF73241103 for ; Tue, 24 Feb 2026 01:32:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.169 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771896751; cv=none; b=DSKPHAF6HnbScc/jiFyjlmgQ5gO7Lync6TwBPAg8Nau3jCmF26LEGfWb335EydcY+CkOiyGm+pGNyc6jXevwGAqIrVsXIi4iWJoj9n9YOAQvb04p/wR9jN67tlxPjlPkSeYq9RAQCHK8VgpJHVUuH18JPHYnI1sHAP3aJFbDGwA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771896751; c=relaxed/simple; bh=hUo1MvYccpbWMaWLjJzMWrm+A+W/DdILFntNUVeXgaY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=JMHTQHUNfHDYH4ThEBsWhb/CSXbIT6dl9Srg3e8c2S0yHbKRGmQP63Y+0cVFfuErykrkUjsJvyBkU97uXWhHHQpe+rqWTQeHGXmQ+5/n3298CRqujUGCbN2D5CvfKivhAMjJIa0zLVB3UOC7D9acvSBXtAHX1C7JGmQbRh3sQNY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=d8UnYf+g; arc=none smtp.client-ip=74.125.82.169 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="d8UnYf+g" Received: by mail-dy1-f169.google.com with SMTP id 5a478bee46e88-2ba94dbf739so5433073eec.1 for ; Mon, 23 Feb 2026 17:32:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1771896749; x=1772501549; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=yFj2OTG3aeriS2nQMueP/Sb6Nx66D9fuh6qoYGYRpGo=; b=d8UnYf+gk0hMIczhCOELyg7sTflNdW7BIdBSON78kI5jIzgeyJWlecBztQyZBqyen5 nFKMbRZTGskMnFh8R1N3ibPaK014yS+TTGC0BN0RB/SlPwUjVr/ZXLP3+jpto6i4R8f9 qtJvQk96LkxLzetYnK98ysqoCfm/BiaVl/lZKL2qnJ63v06UyWxuA0QNUhrAzwuxBL1J wEe1HCHEEPGhOw98dtEt1NnvA7qnC1g+mFmQU8PhSoO6Cv/gAJnGtaowkAF4Pe0snuWb WmDF0eANy/NfuD0E/0Xkh9MJVHw9TeYEh6xBgxfCeilYYir7bhwXHm1CGKXopCnKIpe5 npIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771896749; x=1772501549; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=yFj2OTG3aeriS2nQMueP/Sb6Nx66D9fuh6qoYGYRpGo=; b=r0OzbDu+fRVwI7B7DTGVFS9yEltdakWJZOwZEvwZ9xU/Di4LGHk+YpJV2rwSpydYsV K3iJl0WZ/0z75kt2+oS+04axXtkra/yUgIbsVuNmFZYppbq/jIAml0nb0PbNi5n7QsqV bteveXBs2IiwJKRFl6yWibFIT6Cx8lrcRcVKt1iGjwDYsOIllamafGZa68H1ELgpTFlT z32P8zzTObXSaOqCjSCGK5jRw5f6rXXHzpIEsz1BvJA8L+my0EeDggTSjX6U8yeUKVi7 LoXx1Agt7D2EQUxbXZMO6SbSYTCzr/f/sBhqTg96Qr/YxUOO1So0a2wFfqljNdrlKFMX Ru6w== X-Forwarded-Encrypted: i=1; AJvYcCW/wWkmXrAZSrvC6V7LeaKmxpy4eFbmEx6bNjFMg7NlAf0iCE5yw7taAapf+sXm+ZzpJyO6baoSqygMw6k=@vger.kernel.org X-Gm-Message-State: AOJu0YxuGh374ffCWUSMQrGGmoeoFTq0QLuQ3ob5C56wrye/PC9Nv1nQ Zt2EtrCTF2H5D2BhfxKfc+Ql4gl5VAJlBmkJpxTUbhb5lSQMK7N8yXZU X-Gm-Gg: ATEYQzwF9BLxkiiflEIRqgguWqkmiZbCkvly1zeeooHmT+aArWQy9xh2UTLXzAP3ET6 GgUDhNCTI/P8oKIvKA8dpkv7nQnyZoCH4RpbgiHR6xc10fuYpw1IOsq7KyOmalZXUVLQdFv/9ZL /0Sr1bofISyyZzVOnF1GfSQj7ZY0tZX7PmzjGrnqQR4vf0y9bgZltp3IJelhBgdWEtS8PKrXPj4 WI2koJDpKggoDDeRk9aLaI2meKuQexEgVXQIRy3lVz4cibggACJVT6gbnZKYLUcob8Niqw9xl1+ Sn89pp26PHc6kfXXdbMPfrK0fmDRFTvsDbX1IxRD/62utL/+sXTYsSpIe0uvVlI0Oue6lXeX4Gj lxcOJb8wPnqb06J28bu595r8iQf96YL0igM8bCeRr434R7zySFs0WDLOdKm+5vsuE+DCAIOYJDg DxRwHXXcgGOjRl10yuH/O4GKB7gpLyTiJI8aYtN1HmZLgF2980zNRU2KTw4PKtdZM2uCIGDNccj /I= X-Received: by 2002:a05:7301:3e07:b0:2a4:3593:466d with SMTP id 5a478bee46e88-2bd7baea76emr2780020eec.9.1771896748880; Mon, 23 Feb 2026 17:32:28 -0800 (PST) Received: from lappy (108-228-232-20.lightspeed.sndgca.sbcglobal.net. [108.228.232.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2bd7daa027fsm6485015eec.9.2026.02.23.17.32.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Feb 2026 17:32:28 -0800 (PST) From: "Derek J. Clark" To: Jiri Kosina , Benjamin Tissoires Cc: Richard Hughes , Mario Limonciello , Zhixin Zhang , Mia Shao , Mark Pearson , "Pierre-Loup A . Griffais" , "Derek J . Clark" , linux-input@vger.kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v5 09/16] HID: Include firmware version in the uevent Date: Tue, 24 Feb 2026 01:32:10 +0000 Message-ID: <20260224013217.1363996-10-derekjohn.clark@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260224013217.1363996-1-derekjohn.clark@gmail.com> References: <20260224013217.1363996-1-derekjohn.clark@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Mario Limonciello Userspace software fwupd probes some HID devices when the daemon starts up to determine the current firmware version in order to be able to offer updated firmware if the manufacturer has made it available. In order to do this fwupd will detach the existing kernel driver if one is present, send a HID command and then reattach the kernel driver. This can be problematic if the user is using the HID device at the time that fwupd probes the hardware and can cause a few frames of input to be dropped. In some cases HID drivers already have a command to look up the firmware version, and so if that is exported to userspace fwupd can discover it and avoid needing to detach the kernel driver until it's time to update the device. Introduce a new member in the struct hid_device for the version and export a new uevent variable HID_FIRMWARE_VERSION that will display the version that HID drivers obtained. Reviewed-by: Mark Pearson Cc: Richard Hughes Signed-off-by: Mario Limonciello --- drivers/hid/hid-core.c | 5 +++++ include/linux/hid.h | 1 + 2 files changed, 6 insertions(+) diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c index a5b3a8ca2fcbc..524f2b9ed5121 100644 --- a/drivers/hid/hid-core.c +++ b/drivers/hid/hid-core.c @@ -2887,6 +2887,11 @@ static int hid_uevent(const struct device *dev, stru= ct kobj_uevent_env *env) if (add_uevent_var(env, "MODALIAS=3Dhid:b%04Xg%04Xv%08Xp%08X", hdev->bus, hdev->group, hdev->vendor, hdev->product)) return -ENOMEM; + if (hdev->firmware_version) { + if (add_uevent_var(env, "HID_FIRMWARE_VERSION=3D0x%04llX", + hdev->firmware_version)) + return -ENOMEM; + } =20 return 0; } diff --git a/include/linux/hid.h b/include/linux/hid.h index dce862cafbbd3..ce728c8d5bdc4 100644 --- a/include/linux/hid.h +++ b/include/linux/hid.h @@ -698,6 +698,7 @@ struct hid_device { char name[128]; /* Device name */ char phys[64]; /* Device physical location */ char uniq[64]; /* Device unique identifier (serial #) */ + u64 firmware_version; /* Firmware version */ =20 void *driver_data; =20 --=20 2.52.0