From nobody Fri Apr 3 10:54:52 2026 Received: from mail-dy1-f175.google.com (mail-dy1-f175.google.com [74.125.82.175]) (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 331243EBF12 for ; Tue, 10 Mar 2026 07:29:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.175 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773127791; cv=none; b=s37rIyVYIvVwBIUKIzEl1UZyBRg1YENE5s12fRg5y8o6XsX+Dcowt+xClZniFBAXidDfxpoArub6sbKLBoh2aK9aL0lrYZ6fDyQoz9Tw8xsyu8tswX2szcoajndBC9Ac6IbU0Ei8sTqebb7yL1E6o//zeSJ6wY7ksX5EppOLN3Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773127791; c=relaxed/simple; bh=FqJg3tER+3ZakLbAqodEwX5qMpqX5ohA1t7cv/evT/s=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=UXjpEUdubGm53cXX//u6TaGwkdJsUxruZsJ/64mVjd84MOsSRcaOikhsGYK/29Ah/yRDJmDgdhpZgihvuab1dPQCjf/ZIMhstaMyHzkQfoiMOl3LNuepuNAAvutLdBK6j1X4KE6ETrtNm+dru1Mf3yJZ+ewEiUm5ENrgtPaOK58= 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=ke85yFH0; arc=none smtp.client-ip=74.125.82.175 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="ke85yFH0" Received: by mail-dy1-f175.google.com with SMTP id 5a478bee46e88-2be1d9c356cso7336484eec.0 for ; Tue, 10 Mar 2026 00:29:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773127789; x=1773732589; 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=rfIfejfLL8bAkAX0LN1/a1iIMrdC2id01EppEdgKGLI=; b=ke85yFH0OglxdcpWrXuZso0k+xZp+5KO3yAfeNuPzEzGmhyD/rECSg6uJ2jXstAnc8 f+hEDxHbKyvz7es7Ct1P9d8r2A8Ht4wQ7bTIyWGwoGU8+/y5KT4HvoENd2AtpNxMc8tE n23gMWIeHV+f4CXpIpa8VNr/KI2MJ01LSnrwAIwUk19JCn26lFU40F4+Ms1rbdBDGGOS VhqiTs0UitWevlNtJJX1xFQSRp8Zx/QWxU9E6N1w7qGisoGruxIS3+gmoaueqbZCN2EK 9qvm1yFa5yPX5n1lUKGvPIEa/WAWt28vtbdr1w3Xj7qDHBH6/I7puE/EvN/puo5wvgR3 qnNw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773127789; x=1773732589; 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=rfIfejfLL8bAkAX0LN1/a1iIMrdC2id01EppEdgKGLI=; b=B60/j+X2sm3RrMzRYDwGInVyiLFVN/kc1NBBTzsWtE2yXfMOJebxX8y4soKyszYH5h hUfoYjE/k3G8GXqBoRrKFFwOVgjKddUB6q06LMgJEDDiY1D7UDzXX1PBQegmKluH0u3d OKh8gasQbID74UpeBRymkE+vnzQtPnLYdQmnh368/qDphJWOdsOjnA4UgK9+99A8L+a+ FfwwAzFkP0XLd/CcvoedMyt/Ai7dG3ZOOR6ffrsfwLk+FbdzOd2rIznCmW4bF4qRHEZM l05qivLCSkpEYCC/7rP+FY/CTCV4f41gnQCvewAx4GaEd7D/f8SKTxp0g6hfGIBMMD9D xo3Q== X-Forwarded-Encrypted: i=1; AJvYcCUSmrt5TVDN/CNyz5CGQaeXfiFifDG2NB2hztd8nTaRFGRtCNh00QAP4emM3iaIbTBSM5NBxWvKe+nl9p0=@vger.kernel.org X-Gm-Message-State: AOJu0Yy8eU2sOPFSe/YQnRVBl82gQqzi+8ZaFBJS5aSZk8OHkYdnVqkP kib+SgUuXVll9dqIvX7LC+MUbylEFI/3pgMGlI4QhyH4f0dEHzFp3Gyi X-Gm-Gg: ATEYQzwAK+v4coSmqGx7XTnVk3IR2RvWsFERZElp9X0tBcs2GLF7ac5BQkhjVDujQEu c5FhkcS6ic1blOtdqeulvAmSdBg9FGqtWrbVC7KHc/1hhxomhyiPkK51KwsKdpevgyNwc/kv7wV NhOZI6iZS/ljbeJ89I0WbDVrEKUAfyzROpDHcxdv2M/KtPx0E/VP4Z4cdTyG4W5DytvMHleAdxF wZrrK2M8L0BFib3ZRBV9p6uGkyPWH97jC3dZZbq2bFa17SB4EOlRrIjkX6NNwdphz4ej1Akvs0r OWIsyqv43bgAwQBrpmqaRWgIkuQntSFNs5FguVEojjlucUEFN0DHsiZgmTmBRU5SNGLdANC9BKc M+B8XXLpeCQaOn8QPhQSrYP7WUJrqQPJOEpZcm7b18SpxIeZgNSDhUeOD/x8FzO+15ubD46w+wJ ZC9x8209NH8lqO6z/Um5yNe6sjY0M480jzfXY/1puGF2EcEPI32DoFaZKG4cQZyWT2/IU8C4Iou W5X X-Received: by 2002:a05:7300:3724:b0:2be:27db:b16 with SMTP id 5a478bee46e88-2be4deaedb6mr6266093eec.15.1773127789119; Tue, 10 Mar 2026 00:29:49 -0700 (PDT) Received: from lappy (108-228-232-20.lightspeed.sndgca.sbcglobal.net. [108.228.232.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2be81209142sm721925eec.12.2026.03.10.00.29.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Mar 2026 00:29:48 -0700 (PDT) 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 v6 09/19] HID: Include firmware version in the uevent Date: Tue, 10 Mar 2026 07:29:27 +0000 Message-ID: <20260310072937.3295875-10-derekjohn.clark@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260310072937.3295875-1-derekjohn.clark@gmail.com> References: <20260310072937.3295875-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: Derek J. Clark 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 a5b3a8ca2fcb..524f2b9ed512 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 dce862cafbbd..ce728c8d5bdc 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.53.0