From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pj1-f66.google.com (mail-pj1-f66.google.com [209.85.216.66]) (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 8E21630B513 for ; Mon, 22 Dec 2025 07:54:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.66 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766390086; cv=none; b=Png4q/qK7v5v0IhABGoLKRrkbta5CgPWj6KuQTIQGq/rvsU6y9AkHshWrhyaDkgdit9Ok8lf1Ny65leLbc7FbBOixH7insCF1WcwXzUnNiNdBeQaJTwt/7xhKCEdJpzOsRs7kEujPgXBw2dECLko2BS/IBqzJsSgb1CGxKXdEgo= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766390086; c=relaxed/simple; bh=7NnfB95d/qjSb47h2oPcevWqYAT/LhhPCnd3bmfXZg8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=mMaMe4xljzBps+roEALxYDSpmCXLqrh4O4xj2VanSXHn7mjUl0xMJ24/h7CGV9Syx+EOARYur1on01c2sUVOT+0LjAkY0hF4f2v4CaBHzmODkzVp9rPTgcjl1S2ZMTzJ4U2vduFOW+p9f5+wteXW2InZA8xOP+zHBxg3YT9cqtM= 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=XvGwXDhk; arc=none smtp.client-ip=209.85.216.66 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="XvGwXDhk" Received: by mail-pj1-f66.google.com with SMTP id 98e67ed59e1d1-34abc7da414so3061177a91.0 for ; Sun, 21 Dec 2025 23:54:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1766390083; x=1766994883; 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=g2Fdnpcojf4DLWy5W3E6d4c2QXgA2ovsHAVLQ3QTW4Y=; b=XvGwXDhkEfsCE+BPLgxA5Y8mI7i1tfBlKnVE1KLqPeKaDOSKYF9xtxzoFr9U1DisHU 6B/S48xf0YzgXLSgkooHYB1AujDfz6Mr/Ojue4AvI22wCWhHI1cEWQEp61DPDSRwECdU LqUlhr9VGfghNtq8pq31YXw0T601ktZ6TdK7rq4ao3gOWbNSPJXj0+TpwC+4FNhc8XjE x5TYgSArFDxKYujEOHBzH87l/41fK0wPAmImA1OdNMxrfoaG1Q7Ozp9YFRpP5NzmcflZ +MMmzQpiqFoK8zhbqrfXQ/yEh/qDam/KSYv4f6r85tuc4J5xcArirOrZAERSUgsrP8FG bzKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766390083; x=1766994883; 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=g2Fdnpcojf4DLWy5W3E6d4c2QXgA2ovsHAVLQ3QTW4Y=; b=WHtRPKp5EWcMf7f4tmEz4lewSl8AVrsgH3/fb+d/iUeeVQEeKof2khsW9l3Sn8vG0P qeW/74M3M3xn+d1YWiAIZ3dl+bVQjHRCqUPYwuao5PcpO6ZwVfsccjSh25f9yw6XFCdg i4BzVe8A+p9Kjvo08pQS5XwnXFY2Hf0reWc4zZ6VDsIWQ/gHaZNZ4OMBMWcdwzO5rnRh 3ft8B8t9F2U8MzcjqRCUIDh9FSqjVBKWaop0uP+bIXzw3kFL9tbkPdNhXTwtMXdAQCOt rqtBQ8tx8UeY6ZroTqyuM5ep333a9+SaKj2B6oy9Blh7br3ZJINff97OWLGN3tgCgfSN n12g== X-Forwarded-Encrypted: i=1; AJvYcCV+C5OM8BZCSPXQ3ubI80EM1UgTFc5f9qRgnIkcyefn0KE4zZ7Zt7Hd6Df71c+3XDZNJOCsJQMB+FC6D7E=@vger.kernel.org X-Gm-Message-State: AOJu0YxA7Kde7qWqztZ4wibwUF1ZcbeztSnkISv+DXsggA0Kt22cLPO/ 9ScYBxpAaYDVC3stIllMhLAhgbM3+pLGA4hyA2gGdhRnBJZYCpODvOea X-Gm-Gg: AY/fxX4X2NHOH5m8RMtJqsYbbIXu0v+iGSH2nQ2uct/kdXkELM6YiKKqWC3UPCs8lkr +2lyJR2KVo3XynxbArELDHB/Nu6KEMt/nK+1w2HpSiBSzk5WxwcPdA19iZuvRtTC+Zm7rraslza cbHrFuzZA+MmU1J6iKN8Nzd/Ne1FStkCMR7GiP6DmcPTlX6smTV60qGkAFzfQWE19jDq9bnTSo+ V0qQ0loOagZ9rG9WS+0ylquXW65yQC0gnhx5zruuiSED2uWb1AsWGD3kLOq7Bd6ZZg9dpZgJ/0V PPhdLRXIPoLJKz+wwxCgxnw6/mhgFusF8JjO0phmJ61jKrj0GnNknOaC5pm7bmUSzDyjNYeKKQV pV16NHol8F+slhXhOpmZJiwL859Au7XOmzMAZXiacjnENFg8RKZn3MrUcEn0+bxknSuTqqmFvkg NDhtQgvh15nelgkU/DcE9ZCZNRcvgtXguwSW08GaiGDNKEpQSIkBGhRbb7vzWmRa+krriiyxIGL BkFm0CXmuDFuNMVBIZejzd9P1Y569pa X-Google-Smtp-Source: AGHT+IH/OFUvCngYOR3K32kl/U4IoD3+OzQzJiEWoGID+0Z4tD3qKdKr5jNEUslAMvkAajcn2w6BBg== X-Received: by 2002:a17:90b:3c47:b0:34c:fe7e:84fe with SMTP id 98e67ed59e1d1-34e921cbcdbmr8418450a91.28.1766390082739; Sun, 21 Dec 2025 23:54:42 -0800 (PST) Received: from ubuntu-2504-ThinkPad-X9-14-Gen-1.lenovo.com (zz20234032476F6CA7C5.userreverse.dion.ne.jp. [111.108.167.197]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-34e70dcc7bcsm12025951a91.13.2025.12.21.23.54.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 21 Dec 2025 23:54:42 -0800 (PST) From: Vishnu Sankar To: srinivas.pandruvada@linux.intel.com, jikos@kernel.org, bentiss@kernel.org, corbet@lwn.net, vsankar@lenovo.com Cc: linux-doc@vger.kernel.org, linux-input@vger.kernel.org, linux-kernel@vger.kernel.org, Vishnu Sankar Subject: [PATCH v2 2/2] Documentation: hid: intel-ish-hid: Document PRODUCT_FAMILY firmware matching Date: Mon, 22 Dec 2025 16:53:46 +0900 Message-ID: <20251222075346.955637-2-vishnuocv@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251222075346.955637-1-vishnuocv@gmail.com> References: <20251222075346.955637-1-vishnuocv@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: 8bit Document the ISH firmware filename matching rules, including the new PRODUCT_FAMILY-based patterns and their search order. This aligns the documentation with the driver behavior and provides clear guidance for vendors supplying custom ISH firmware. Signed-off-by: Vishnu Sankar --- Documentation/hid/intel-ish-hid.rst | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/Documentation/hid/intel-ish-hid.rst b/Documentation/hid/intel-ish-hid.rst index 2adc174fb576..068a5906b177 100644 --- a/Documentation/hid/intel-ish-hid.rst +++ b/Documentation/hid/intel-ish-hid.rst @@ -413,6 +413,10 @@ Vendors who wish to upstream their custom firmware should follow these guideline - The firmware filename should use one of the following patterns: + - ``ish_${intel_plat_gen}_${SYS_VENDOR_CRC32}_${PRODUCT_FAMILY_CRC32}_${PRODUCT_NAME_CRC32}_${PRODUCT_SKU_CRC32}.bin`` + - ``ish_${intel_plat_gen}_${SYS_VENDOR_CRC32}_${PRODUCT_FAMILY_CRC32}_${PRODUCT_SKU_CRC32}.bin`` + - ``ish_${intel_plat_gen}_${SYS_VENDOR_CRC32}_${PRODUCT_FAMILY_CRC32}_${PRODUCT_NAME_CRC32}.bin`` + - ``ish_${intel_plat_gen}_${SYS_VENDOR_CRC32}_${PRODUCT_FAMILY_CRC32}.bin`` - ``ish_${intel_plat_gen}_${SYS_VENDOR_CRC32}_${PRODUCT_NAME_CRC32}_${PRODUCT_SKU_CRC32}.bin`` - ``ish_${intel_plat_gen}_${SYS_VENDOR_CRC32}_${PRODUCT_SKU_CRC32}.bin`` - ``ish_${intel_plat_gen}_${SYS_VENDOR_CRC32}_${PRODUCT_NAME_CRC32}.bin`` @@ -420,16 +424,21 @@ Vendors who wish to upstream their custom firmware should follow these guideline - ``${intel_plat_gen}`` indicates the Intel platform generation (e.g., ``lnlm`` for Lunar Lake) and must not exceed 8 characters in length. - ``${SYS_VENDOR_CRC32}`` is the CRC32 checksum of the ``sys_vendor`` value from the DMI field ``DMI_SYS_VENDOR``. +- ``${PRODUCT_FAMILY_CRC32}`` is the CRC32 checksum of the ``product_family`` value from the DMI field ``DMI_PRODUCT_FAMILY``. - ``${PRODUCT_NAME_CRC32}`` is the CRC32 checksum of the ``product_name`` value from the DMI field ``DMI_PRODUCT_NAME``. - ``${PRODUCT_SKU_CRC32}`` is the CRC32 checksum of the ``product_sku`` value from the DMI field ``DMI_PRODUCT_SKU``. During system boot, the ISH Linux driver will attempt to load the firmware in the following order, prioritizing custom firmware with more precise matching patterns: -1. ``intel/ish/ish_${intel_plat_gen}_${SYS_VENDOR_CRC32}_${PRODUCT_NAME_CRC32}_${PRODUCT_SKU_CRC32}.bin`` -2. ``intel/ish/ish_${intel_plat_gen}_${SYS_VENDOR_CRC32}_${PRODUCT_SKU_CRC32}.bin`` -3. ``intel/ish/ish_${intel_plat_gen}_${SYS_VENDOR_CRC32}_${PRODUCT_NAME_CRC32}.bin`` -4. ``intel/ish/ish_${intel_plat_gen}_${SYS_VENDOR_CRC32}.bin`` -5. ``intel/ish/ish_${intel_plat_gen}.bin`` +1. ``intel/ish/ish_${intel_plat_gen}_${SYS_VENDOR_CRC32}_${PRODUCT_FAMILY_CRC32}_${PRODUCT_NAME_CRC32}_${PRODUCT_SKU_CRC32}.bin`` +2. ``intel/ish/ish_${intel_plat_gen}_${SYS_VENDOR_CRC32}_${PRODUCT_FAMILY_CRC32}_${PRODUCT_SKU_CRC32}.bin`` +3. ``intel/ish/ish_${intel_plat_gen}_${SYS_VENDOR_CRC32}_${PRODUCT_FAMILY_CRC32}_${PRODUCT_NAME_CRC32}.bin`` +4. ``intel/ish/ish_${intel_plat_gen}_${SYS_VENDOR_CRC32}_${PRODUCT_FAMILY_CRC32}.bin`` +5. ``intel/ish/ish_${intel_plat_gen}_${SYS_VENDOR_CRC32}_${PRODUCT_NAME_CRC32}_${PRODUCT_SKU_CRC32}.bin`` +6. ``intel/ish/ish_${intel_plat_gen}_${SYS_VENDOR_CRC32}_${PRODUCT_SKU_CRC32}.bin`` +7. ``intel/ish/ish_${intel_plat_gen}_${SYS_VENDOR_CRC32}_${PRODUCT_NAME_CRC32}.bin`` +8. ``intel/ish/ish_${intel_plat_gen}_${SYS_VENDOR_CRC32}.bin`` +9. ``intel/ish/ish_${intel_plat_gen}.bin`` The driver will load the first matching firmware and skip the rest. If no matching firmware is found, it will proceed to the next pattern in the specified order. If all searches fail, the default Intel firmware, listed last in the order above, will be loaded. -- 2.51.0