From nobody Thu Oct 9 03:14:48 2025 Received: from mail-wm1-f46.google.com (mail-wm1-f46.google.com [209.85.128.46]) (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 2A50183A14; Fri, 20 Jun 2025 15:17:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750432633; cv=none; b=OMg4EHq7PPBOOIogIqJlnHKhfECLVTD8yP0IxV2oxGY+A+C2K1SjXcuMfN8zyhU1W47DxmrReQ1gmoHgPSHIqd0ipDaoEF5wkBMpxjdLo7M/C84imbLnJBcnfkNS02Ak2XNuV+o0+8JAezU05VUAcmp5+1YgHR7p4AVnTMAx+cQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750432633; c=relaxed/simple; bh=fcDRVRsB7kTTxKbuSPIJvammikJeVCV2Sey5irOixwo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ghv0KNt7iEbRGFbyaCi+ZKSKZ+doP6YppLARMOnN2MlMqpI79cglQhItIF0wE00YpZOm4CXwj70FpJ1fAjEqH5zQJ5Bug+FlbnwqlZJSgABwrnnRtHf0T0SBkHkYaL165UGjerkkFL7Z4TwdchZ6+YJlu6jQdaxw9076MjaHlDs= 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=kF8cYHf6; arc=none smtp.client-ip=209.85.128.46 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="kF8cYHf6" Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-451dbe494d6so22613685e9.1; Fri, 20 Jun 2025 08:17:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750432630; x=1751037430; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:from:to:cc:subject:date :message-id:reply-to; bh=g9Z79uO0bQTG7SBiWvsssoDMq0Ao6no6bKJ2a4NfcKE=; b=kF8cYHf62bxcZr6i97MsG7gwmNPJ9T1ne3HsWKIKm8shgtGUsy+Ist0a+2L2hDUUxm O2C9JYakrgUZXYL6vvJsBaxo4n/MEjckn6YbLiwED4DIUMye2lyKhsNYvnpzKM+LwiP2 3L6ElgWX6Dwv6yXL3hL1d7uM06qceuufxSBiLqpYtI51zI9h7LLWiWrws61dSmPfRLIM my/bX/YFWyRm6W4Sh0vrg0NrIhFvLh2mG0/5HE1IXi8VDuDx2vveG+KscbS9jJ8rwA+d 4iaEUw8McUpMWn+ojk3wOU+8HoN/C2b/friyxHrlaem6M/74+aV+8c1OgT+Qf1wQNYBd hFDg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750432630; x=1751037430; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=g9Z79uO0bQTG7SBiWvsssoDMq0Ao6no6bKJ2a4NfcKE=; b=VRFQae9Mx0NpxnvXJnWZ2ePRdSBWxNnkDmk1YPJQKrYF2RoDG4/V/vF83dUC9w0+Ie NHhiE38vUY4LPCiQe41A0qhh/XcjVtA+aPi4Z6PH6C5w8jhmh28Kpa33HU/lBr2dP2Ip rKqU0jKJDkx3SP3iMlQpIq/p3/5XwpVCJUEhMrW2qMVsbGHivpAsyGkW5d341H6z98vn IWrOoeepHdJ1muuCjVJA5mTIC3cdZtFp5YIPDhDNzxWwsn13iAVFRcLB8KSEMMbM4NQP 1KwTojkxfXGJjG3vcBVe7s7+vsVvGwZN/A6A8OlOiMOdFPYHtpeQHYQ69qUucbgo54SY dDvg== X-Forwarded-Encrypted: i=1; AJvYcCWOxjW9U/+l478DEbxTCUOVYk0NsuxjTBhUdVxsjGzHIC8YNiQMw0AC/YhLzMZNS5n0j1R66mO1g7ebOg==@vger.kernel.org, AJvYcCWR+vEJ798LZkfSamDp0WeowNnqYnR57VsB6Yu7drlB4GvlqMJlFmbbE8XaxIXj0+YoQHJxVBUsttVnwWWX@vger.kernel.org, AJvYcCWyXKD/SlACaVfXXfVfWVl/XrKhOidu+jpXdnhyJEgPnwliIyRzMexzoH7RhlkjkLfS7Yi4Qu1igRrs@vger.kernel.org, AJvYcCX7iGae6ZyWM/QgmTMIVtzP7Ui3grc6sMAgtJ+Xp5rRiCV7Is0Ymj/UAzRjNic4ecdO1cS+qUFHv5R5YL3oLDE=@vger.kernel.org X-Gm-Message-State: AOJu0Yz+zRRbiqgU3vctI7koNW1LoSGU4IRHWkNrYfYiqS+K0UzU23ue uDdXQS1YC5T67DxxMyXkaQlARcyJcYBfpxJIY0/Zwuttl8LOy0J/yD/Takm96G8N3TU= X-Gm-Gg: ASbGncs8sB7oA8xQ4cAA4xeIuT4W+kOPRI9ShUBbwJfZb+2uGEvaBiadE/X80lYOTz/ PKWZc/zby1GTKCeVbIM0eL7Gq8pPetoXWDtJTyMQUOVMCzDpAx8bQUIQJhQm803LQW48XB6M/e5 9yHVRi9Skn5XrkdAlA5QqRWEdquUvj2TLC5wPOPU3amYcfFo/KnLNZ6DhoWO9pALV73drag0KA1 ZOPRF4eXFyi0AUuH76J0SQ1OXzmlY5SGHRrJwZqcv7TWBOAjTwi5vfQ9JAJOiDp07T8C7JDl6p0 Gtt4vzMlDFUjM9DgR8yfxlvFz29gfyiwyt1VPAoQHy6zIpNj5ayTSGyHAdhc14GGNGFtQoM6EVu rT67pxC/Hfn06tUapDApKWPPqUgFf6/NH4OFzFXk= X-Google-Smtp-Source: AGHT+IEHFgrcMTbzofDrxYhszmZSjhSU+Dr+aUv88uObflo1lT+8kHGwGwDfULZbO4ZhDjQFQW/1LA== X-Received: by 2002:a05:600c:3582:b0:43c:ee3f:2c3 with SMTP id 5b1f17b1804b1-45369ade30amr4425595e9.7.1750432629909; Fri, 20 Jun 2025 08:17:09 -0700 (PDT) Received: from igor-korotin-Precision-Tower-3620.airspan.com ([188.39.32.4]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a6d0f1d1bbsm2343322f8f.41.2025.06.20.08.17.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Jun 2025 08:17:09 -0700 (PDT) Sender: Igor Korotin From: Igor Korotin To: "Rafael J . Wysocki" , Alex Gaynor , Greg Kroah-Hartman , Miguel Ojeda , Rob Herring , Saravana Kannan Cc: Alex Hung , Andrew Morton , Igor Korotin , Jakub Kicinski , Jonathan Cameron , Krzysztof Kozlowski , Mauro Carvalho Chehab , Remo Senekowitsch , Tamir Duberstein , Viresh Kumar , Wedson Almeida Filho , Xiangfei Ding , devicetree@vger.kernel.org, linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org, =?UTF-8?q?Bj=C3=B6rn=20Roy=20Baron?= , Alice Ryhl , Andreas Hindborg , Benno Lossin , Boqun Feng , Danilo Krummrich , Gary Guo , Len Brown , Trevor Gross Subject: [PATCH v8 1/9] rust: device: implement FwNode::is_of_node() Date: Fri, 20 Jun 2025 16:15:04 +0100 Message-ID: <20250620151504.278766-1-igor.korotin.linux@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250620150914.276272-1-igor.korotin.linux@gmail.com> References: <20250620150914.276272-1-igor.korotin.linux@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: Danilo Krummrich Implement FwNode::is_of_node() in order to check whether a FwNode instance is embedded in a struct device_node. Signed-off-by: Danilo Krummrich Signed-off-by: Igor Korotin Reviewed-by: Rob Herring (Arm) --- MAINTAINERS | 1 + rust/helpers/helpers.c | 1 + rust/helpers/of.c | 8 ++++++++ rust/kernel/device/property.rs | 7 +++++++ 4 files changed, 17 insertions(+) create mode 100644 rust/helpers/of.c diff --git a/MAINTAINERS b/MAINTAINERS index 9f724cd556f4..1e918319cff4 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -18579,6 +18579,7 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/gi= t/robh/linux.git F: Documentation/ABI/testing/sysfs-firmware-ofw F: drivers/of/ F: include/linux/of*.h +F: rust/helpers/of.c F: rust/kernel/of.rs F: scripts/dtc/ F: tools/testing/selftests/dt/ diff --git a/rust/helpers/helpers.c b/rust/helpers/helpers.c index ed00695af971..041a8112eb9e 100644 --- a/rust/helpers/helpers.c +++ b/rust/helpers/helpers.c @@ -26,6 +26,7 @@ #include "kunit.c" #include "mm.c" #include "mutex.c" +#include "of.c" #include "page.c" #include "platform.c" #include "pci.c" diff --git a/rust/helpers/of.c b/rust/helpers/of.c new file mode 100644 index 000000000000..86b51167c913 --- /dev/null +++ b/rust/helpers/of.c @@ -0,0 +1,8 @@ +// SPDX-License-Identifier: GPL-2.0 + +#include + +bool rust_helper_is_of_node(const struct fwnode_handle *fwnode) +{ + return is_of_node(fwnode); +} diff --git a/rust/kernel/device/property.rs b/rust/kernel/device/property.rs index 838509111e57..63fe4b6ee6bc 100644 --- a/rust/kernel/device/property.rs +++ b/rust/kernel/device/property.rs @@ -61,6 +61,13 @@ pub(crate) fn as_raw(&self) -> *mut bindings::fwnode_han= dle { self.0.get() } =20 + /// Returns `true` if `&self` is an OF node, `false` otherwise. + pub fn is_of_node(&self) -> bool { + // SAFETY: The type invariant of `Self` guarantees that `self.as_r= aw() is a pointer to a + // valid `struct fwnode_handle`. + unsafe { bindings::is_of_node(self.as_raw()) } + } + /// Returns an object that implements [`Display`](core::fmt::Display) = for /// printing the name of a node. /// --=20 2.43.0 From nobody Thu Oct 9 03:14:48 2025 Received: from mail-wm1-f51.google.com (mail-wm1-f51.google.com [209.85.128.51]) (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 F0BB58F5B; Fri, 20 Jun 2025 15:20:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750432856; cv=none; b=HLl2gkPJCIf3Aff5NEqLdA+jkwg9qkdTp4Grlr+S5g3owbibVg1Jx/KT8whRV3IgBmXoOYv8dfJhlFGjClyfZ32A9F8afSHm+XkK6vJ6q2O6R6boicj7o0MAZb6Y/P2eCTYfq2wrUtjMMuushT4S94nYL2Uu4Sb3B5tos0eS/ec= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750432856; c=relaxed/simple; bh=8+3R0drlRKnn/JI35OglwAOSwdC9nd8AtxSqpjzELK4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=sRO/08XOT4Ac5ZrgraaZ1EL2VaMinfYdytQLJd5+FVDOq5Neg/bcva9ZBi+v3lnh93cQP+XCCz+HOMdX4i9+IZk9CwG9sWYfIWb3AhiRjekXaSkx/V2jOwNrQUHWtgU5aa65tJnes6HKLDdJNtbhyRkICpjGOZhDpfKvnvhijVs= 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=NIEEU1Op; arc=none smtp.client-ip=209.85.128.51 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="NIEEU1Op" Received: by mail-wm1-f51.google.com with SMTP id 5b1f17b1804b1-453066fad06so13046655e9.2; Fri, 20 Jun 2025 08:20:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750432853; x=1751037653; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:from:to:cc:subject:date :message-id:reply-to; bh=M/KIHO86ldP5ZYoE2kwfFWlV69Tw5RaRQj/rKy8DDRg=; b=NIEEU1OpZ6bGXPEtZBJLe7vQYxJLQ/8YHga8PDGa70rCR21LdPdt/saNOifOY35g2y A+mNnv2ZNjWDYqYSA6TsTDEb25dG6opTvdRRCFsndRtDIEsfoPaiI6G7lbq2fSAjP+7P DPl6lOMctefpXzGoW/8zBf/k7AC2LmQ+5hNO/arqnTM2MbQz65K1NXWDdF3LUUpB9P7a PYs+z4498JHILdGfnH6z/wwzDCwhiyLZLZ1Pm6UMwC6Oe/LE41YgwLUJVkG7IWy6zYb8 Xb5HBUm7WjxJOSSr8g8wKiy/pxMeZIUVlxHlIKwlfuKu49ihpoMsZKpjfrjCOHD8XLSZ 99Pg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750432853; x=1751037653; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=M/KIHO86ldP5ZYoE2kwfFWlV69Tw5RaRQj/rKy8DDRg=; b=l4CB78TFljm0hmdrfQGiH6dMKD14/tom9jhqZtF1m/whDczcZSC8EBEYJ7ZCJ/U4Gt xHKpSB+y9xx3eCo90imCMNt6TFhJLHlcCEUuov2rYIzxori9dCMkxU2fbSxxPbXG8llz bD/lY9f15GiXVDXWl6920EsOEHpMqcLSq/VmGhAaEWuaKJukL0+A5nXuV1BDPgi52GdT Au+OUniGzI/Eza6RM2D87AOQjqJjxdByixA8SweaXfp6fEqhOuj5j9lwOnEJ09x1qC0L XOpK05tYkllbqA7zqLH/U7FX8M/XEDMlFIk4lyK07BAuov2abg7oS4mbmiaSU6m16aFq HZcA== X-Forwarded-Encrypted: i=1; AJvYcCU6c/v3LmRQ64RHS5aoq+sZen4Kn35T3PYjdcLIy2ksUp7yz2Fsk4CAC92Eac+0IVfdmnwh7iPK3cQV@vger.kernel.org, AJvYcCVDqeXgwImvlrxz6L9aXPG46iOhOerZA2+kPWmjaGyTKiyvaW8ayJxYqI/PjjlbdggqmRy9QAVHestmYdPg@vger.kernel.org, AJvYcCWFIrxNcTrErk8cwO5vNHlDFkpuFtLCYUe4S31/PwoQ9eFMLLEp6BXyXRg/FJosSFKnE2niPQLv/KZppQ==@vger.kernel.org, AJvYcCX34AKeNPHwFwqznjZp0sjrILWuYKXvTbZEv/U+1n6JBgdJUqVzxzvh9T3l/ZLn/2c8nkYbdwvRDOi43GZ1nqM=@vger.kernel.org X-Gm-Message-State: AOJu0YwXLdJRtorhJ8hcJHIMfhcSfU81yfkLxPkYW4SAaK6JduR01VBh j2ZlWsb9f0pmIgSZ1cp3EHPs3OXcfABZzZmAkG7/fEnopQXJYpeMfcqk X-Gm-Gg: ASbGncsH4gLSMM43DJEwLrp7Hl/bUkEUPENpWlLC1P/9YwoAzG8yasKleBUhsShd+bN Vlh68JoHIIGxhaWxZ+opa+sKVg37z8a5+1B9Hj94rGNiK5GPHhXeUzAKiZhy1/aUeg8+cPGqYs8 d3KJQHdKkVd2iIsEfrSRZ53cyPuPv+KKx2Kgu2GBzH10NhoA8wOVyMikj4cgj+6kOWxv4asL0vm WeW9tNaiBpzwyRua2xbKDFPH1QFktfJJ7u4khzJRvABtK9uHEbjZ/ILCeDCyvVVO1L75dwZnCLg b+EqTUMXmSoWVaSBmee4jAQlsjQdPtuYXwo5PmkLAomE6QQPe5w6+qtK9k34Ha5V096/Oie2DG6 MOYjseJVaVfdfqkOD+5iHt1MvnDXfu2q63S8R7Q2wdjrheoTG3w== X-Google-Smtp-Source: AGHT+IFWKYgJk3mh4dufOnojkp3+ym/Cq+duMM+/JKKRWEtc/dnqzc4ndzC9W90pmrbOVECY/4YLeA== X-Received: by 2002:a05:600c:46cb:b0:43c:f1b8:16ad with SMTP id 5b1f17b1804b1-4536877fc08mr16646495e9.30.1750432853078; Fri, 20 Jun 2025 08:20:53 -0700 (PDT) Received: from igor-korotin-Precision-Tower-3620.airspan.com ([188.39.32.4]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-453646d1508sm28563515e9.12.2025.06.20.08.20.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Jun 2025 08:20:52 -0700 (PDT) Sender: Igor Korotin From: Igor Korotin To: "Rafael J . Wysocki" , Alex Gaynor , Greg Kroah-Hartman , Miguel Ojeda , Rob Herring , Saravana Kannan Cc: Alex Hung , Andrew Morton , Igor Korotin , Jakub Kicinski , Jonathan Cameron , Krzysztof Kozlowski , Mauro Carvalho Chehab , Remo Senekowitsch , Tamir Duberstein , Viresh Kumar , Wedson Almeida Filho , Xiangfei Ding , devicetree@vger.kernel.org, linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org, =?UTF-8?q?Bj=C3=B6rn=20Roy=20Baron?= , Alice Ryhl , Andreas Hindborg , Benno Lossin , Boqun Feng , Danilo Krummrich , Gary Guo , Len Brown , Trevor Gross Subject: [PATCH v8 2/9] samples: rust: platform: don't call as_ref() repeatedly Date: Fri, 20 Jun 2025 16:18:49 +0100 Message-ID: <20250620151849.281238-1-igor.korotin.linux@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250620150914.276272-1-igor.korotin.linux@gmail.com> References: <20250620150914.276272-1-igor.korotin.linux@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: Danilo Krummrich In SampleDriver::probe() don't call pdev.as_ref() repeatedly, instead introduce a dedicated &Device. Signed-off-by: Danilo Krummrich Signed-off-by: Igor Korotin Reviewed-by: Dirk Behme --- samples/rust/rust_driver_platform.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/samples/rust/rust_driver_platform.rs b/samples/rust/rust_drive= r_platform.rs index c0abf78d0683..000bb915af60 100644 --- a/samples/rust/rust_driver_platform.rs +++ b/samples/rust/rust_driver_platform.rs @@ -32,13 +32,15 @@ fn probe( pdev: &platform::Device, info: Option<&Self::IdInfo>, ) -> Result>> { - dev_dbg!(pdev.as_ref(), "Probe Rust Platform driver sample.\n"); + let dev =3D pdev.as_ref(); + + dev_dbg!(dev, "Probe Rust Platform driver sample.\n"); =20 if let Some(info) =3D info { - dev_info!(pdev.as_ref(), "Probed with info: '{}'.\n", info.0); + dev_info!(dev, "Probed with info: '{}'.\n", info.0); } =20 - Self::properties_parse(pdev.as_ref())?; + Self::properties_parse(dev)?; =20 let drvdata =3D KBox::new(Self { pdev: pdev.into() }, GFP_KERNEL)?; =20 --=20 2.43.0 From nobody Thu Oct 9 03:14:48 2025 Received: from mail-wm1-f54.google.com (mail-wm1-f54.google.com [209.85.128.54]) (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 434BC2C0302; Fri, 20 Jun 2025 15:23:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750433019; cv=none; b=jk4gMfCztH/rqYJnXpB3WD8y/wB70jw4PeaHIQXY8/rj2BvBK4CT8M1MO+Wp5E+3uLi36zL8LmqJlaxT2cIZYbf1kLB0sNChd2Lm5nn3DrRjDuoM0I/XjR8g1R4fUb98e9rQvK7uSxguSFYuI7fOolv4CmbLAzd0j5ZBGiSFG/A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750433019; c=relaxed/simple; bh=dvtN9eJlUFurArdkvVXhsE2a5bCUKBuAQsM5cOZ1ULE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=U+LxttqsU3lqEH5uwZCFApT9mdqqL2VuInn0Pm2GpcdEFGvZGbbn07XD2fBoSpF5bC+jhZfWR5hSdYjlApkLs5qE3OOIahly48tV/BLw5Fv3T78J+QTcftaCvljrKUuxjLfjVJnA26W+GamSFFAj0ISvneZxrcTa99ON2PpE1JU= 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=V/UMaeWA; arc=none smtp.client-ip=209.85.128.54 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="V/UMaeWA" Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-451d41e1ad1so15084895e9.1; Fri, 20 Jun 2025 08:23:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750433015; x=1751037815; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:from:to:cc:subject:date :message-id:reply-to; bh=mNAXzfmh7HFb857b4kPNw1wjOg7WWnf6DO/mp8yJ9IU=; b=V/UMaeWANHT5yNDPzRREVPfL5IUh6ez+wasTPC3nI59nux5DpL7bWCy4YZ1ONwAlfy /V5izPlrx07uy7uifKdzD5MxCIPj3QTpfOMub4ZS2eUruOWYaMSh3BgERm25gsKeOX4U VoXqP36MQlTIT4Q214gW+66MTC6x7AuSiwD1Gk9+ynBt/HzZhm4S86gR2WYEkQVL6l8l zlNqqkEZ3/9zHTnUQHPUYxVEGACiH7Gs6cwv2jYZ6cPThXnc5ge1wCnyUEYcmOICIef/ ZO0AP35VjkJXarfhtBCPN42XJFMgf5VoUq/5LD8LT8zQUNFOUfpYuVSWEMLz1hjCHfgx vdtQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750433015; x=1751037815; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=mNAXzfmh7HFb857b4kPNw1wjOg7WWnf6DO/mp8yJ9IU=; b=FIs6Xy4hQXqsjBsusWYfORbfUyK9MO/abGC17tqCJ8mHIduocARo+2e13n5QIXgRpe 4wNiG5Je5KEQIdcuGmD3dd60Y73wz6rhJl4XmKvyP5zs8oTfM/zRfEU5mA2R2zFsJ06/ x6Tm4wZLIbKWaewW+QKlfiXBxIivl+3tVZ04sx7qu7wiXQmouiOGtuXbaynalDDHqK6g iwPlHXNjsEIZG8GrFmuGURx9zW1UTy6a0fde5g7oIjIWkNMu4lY+NjxRkIc5YcPByl7f 3LA+kd/JHvJ4v9odcY+jeGUUnjTMngjkJE89tDeWfpXovoiveZd0q11DHqecPYS4/D04 mStg== X-Forwarded-Encrypted: i=1; AJvYcCV8J6vCBX88XJiH2vSvAPCfpiRrbrG7Rqw5nRIQbNkiqvDWubWZLndkqkBhy9yP6ozZaT6lCuE1Qcf7uw==@vger.kernel.org, AJvYcCVumfv91yMUjZLK7PmF4EY2M1mppEpvWaJGj3sBXZbeETWzd+9am8+JcwsuwVOory1L+xeRlHmITLI5L5oZMpk=@vger.kernel.org, AJvYcCXkYJ6GQ0Om/1lnKfLomiKFfNPry4OxT04BG7isrHhhEnsag4SZ8caLa8C6dtAWqOterzSzT8y6aqxV@vger.kernel.org, AJvYcCXrWOmPKUdmsyfumP2f1OwPqc7jfoXlV++cVcaa9Kac209ANRdtC85vXEqVY4cvBTPAalHGwQodYKa5rUhc@vger.kernel.org X-Gm-Message-State: AOJu0YxccZpzymLWKkxHhfuvkRioTyhEYNdPFAmmyQzxlTfDxIMrd4jy +nyS5rwkyIUpUUFDaaTkTz4VfPdtTQ15BZr0BqqRmjUaTAHb+hvoEJs52xrvjtZLWX0= X-Gm-Gg: ASbGncu2H8f2WeyFC5MbRJ01VyA2GvICaqDjHDzvjjXyJFVe7K3cTH1ysxlmLFCLR3h EC4sHGFRvVkksoNd3xifXFVyJrAnpaQFng+uBdlC4v37YyTaq7iW/8llohmkPgU0WSv4vTCuaa3 MWsTgB6zXkLZ0M6bN53WXGErtErLzLsHHTybx54nI+GOMLKbVoWzFcKqDRUNxwVkqvjzP9XzcJI VVMh0m/H7BjPbnDHb5bZRC8KecJ7ImPVGlo+07yMMz/AAl3HwZK5aaRgvEFZc2a6GPqs0Fh/oSL X2VIcVgED5kYBTufOzUVgcj5O+ivAe4+Ct52wF2f83K7VdDmXRyO1tKnw07gh5xnWi+JMLW7hpo GeqtrQuHBuatrtk2vGdos4MZ/qAK0y91v3XauEJiOI/csQ6I= X-Google-Smtp-Source: AGHT+IFihYFIqfttAHK5bJgnnS222iRdKvNF+qBgQzgtvlXsebluzOgG6hM64nIzrSpanqXdiR1uSg== X-Received: by 2002:a05:600c:46cb:b0:43c:f1b8:16ad with SMTP id 5b1f17b1804b1-4536877fc08mr16753075e9.30.1750433015111; Fri, 20 Jun 2025 08:23:35 -0700 (PDT) Received: from igor-korotin-Precision-Tower-3620.airspan.com ([188.39.32.4]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-453624554cfsm23696085e9.0.2025.06.20.08.23.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Jun 2025 08:23:34 -0700 (PDT) Sender: Igor Korotin From: Igor Korotin To: "Rafael J . Wysocki" , Alex Gaynor , Greg Kroah-Hartman , Miguel Ojeda , Rob Herring , Saravana Kannan Cc: Alex Hung , Andrew Morton , Igor Korotin , Jakub Kicinski , Jonathan Cameron , Krzysztof Kozlowski , Mauro Carvalho Chehab , Remo Senekowitsch , Tamir Duberstein , Viresh Kumar , Wedson Almeida Filho , Xiangfei Ding , devicetree@vger.kernel.org, linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org, =?UTF-8?q?Bj=C3=B6rn=20Roy=20Baron?= , Alice Ryhl , Andreas Hindborg , Benno Lossin , Boqun Feng , Danilo Krummrich , Gary Guo , Len Brown , Trevor Gross Subject: [PATCH v8 3/9] samples: rust: platform: conditionally call Self::properties_parse() Date: Fri, 20 Jun 2025 16:21:03 +0100 Message-ID: <20250620152103.282763-1-igor.korotin.linux@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250620150914.276272-1-igor.korotin.linux@gmail.com> References: <20250620150914.276272-1-igor.korotin.linux@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: Danilo Krummrich Only call Self::properties_parse() when the device is of node Once we add ACPI support, we don't want the ACPI device to fail probing in Self::properties_parse(). Signed-off-by: Danilo Krummrich Signed-off-by: Igor Korotin --- samples/rust/rust_driver_platform.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/samples/rust/rust_driver_platform.rs b/samples/rust/rust_drive= r_platform.rs index 000bb915af60..8579290eecb3 100644 --- a/samples/rust/rust_driver_platform.rs +++ b/samples/rust/rust_driver_platform.rs @@ -40,7 +40,9 @@ fn probe( dev_info!(dev, "Probed with info: '{}'.\n", info.0); } =20 - Self::properties_parse(dev)?; + if dev.fwnode().is_some_and(|node| node.is_of_node()) { + Self::properties_parse(dev)?; + } =20 let drvdata =3D KBox::new(Self { pdev: pdev.into() }, GFP_KERNEL)?; =20 --=20 2.43.0 From nobody Thu Oct 9 03:14:48 2025 Received: from mail-wm1-f49.google.com (mail-wm1-f49.google.com [209.85.128.49]) (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 B1C382C324B; Fri, 20 Jun 2025 15:26:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750433191; cv=none; b=lXVI1LrFp++xPeyxKsmgsFUNxLpRBRqFgCJqcIDDQyVbquYgNnqJOEyYjvAme0xt1cPyLsXJuvUijK15ANeV3v8N81SpIW1wzAe5CiTsfaxLvp5JGVkqEua+JMPnGp/DTZGk+huO84uecBNLheuMnd1wBm25AzDQ+D1ZIoDX2lY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750433191; c=relaxed/simple; bh=WUB2wpa3W+3uIW4pg1fQ/88tmjy06qgVmc5O/tjNYJQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=h32tT5CJPGcZs2b2GTFNU10k+fJEcJ86D02t3J+Dw5FxSInlj5BSza+SdSHtjZLREToImD4bnOJAQG/dAkqlfaxyd5shHanO5O0zj6WWpkNKSskL3UO6Aa4rHHiENm3WZB3nrVDyj2f1odoxDKKdolCY19cf9FP7XEnC1Tu92Iw= 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=Ya3OYn/b; arc=none smtp.client-ip=209.85.128.49 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="Ya3OYn/b" Received: by mail-wm1-f49.google.com with SMTP id 5b1f17b1804b1-450cb2ddd46so11943935e9.2; Fri, 20 Jun 2025 08:26:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750433188; x=1751037988; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:from:to:cc:subject:date :message-id:reply-to; bh=dvw6+KSPOqtrmOukGHEiEP8MZe9/XdRUXjCAQWIBviU=; b=Ya3OYn/bxS5vCtVeI70dsYBs6h0TDnnczTD5q4G3GGIrzWUjdDMg5gR8fx26KU00ED EBhoWcr6MDtpDkJE8PiMXI3TIggpab949ihqGzLxnYau8HWozxZInYrTScfzqeNMoNku SKmwjDJNEUcxPFjCXXbeARVOQyIxmlAPYzsthNCHi+8pyfvI0VwBZHwojG17PUdyHKz4 Mxq9Gveqnmi+HjRFl/b6PBw/8DXi9P6ukUxPBb+3kj8exo42sS+Lw2ysUWp8kXkrD5Wj /X3E6MSQWn1qPYM2Hf/bkwU7zRXbPKkRW4P9pPqQrygaAWPZF1aj+SZOdyNs3oVLZh69 dxmA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750433188; x=1751037988; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=dvw6+KSPOqtrmOukGHEiEP8MZe9/XdRUXjCAQWIBviU=; b=oDnSjuQL66C7SxtYa220FAH8sT67LHAGglbj6HZ1ycXScibJa7jyQSEAXxXXyHcbqg UfLPEpBxWsJrxWPYu7rcCrGTTYEgVnuxwIxdxhQ36/K/dktAt+nmpapgaPQ8nkxj/BHV 3FXv4Fg4AysE78jT/EHEi3id2zvWlQ4yLvfKAoEDkG5RKDE75Gb6V8miJugCS/KcQ/PO i6KcO3ib3JarfY6IjdcsLwOzC4RCMyGuP16IxW6zinCsjl5n2jLCWuOZmVtTtKTc1C8S zAGNolnUBNKdRmhoaTxTk2QDq1SIDY+nXpqXk+IurZvJBZGsYAkkdkq1jgdsk+sSNWJZ sM0A== X-Forwarded-Encrypted: i=1; AJvYcCUhu4GxXGO72J6ULHhMT+Ws1qW8AjtbC58xhWG4wPChq5GXpPtGPYJZsSijnzf0N5NejLb+F6BrKa4Y@vger.kernel.org, AJvYcCUz0YcXz4HR4kAxbuWtSqFkw85ojXVgl2xAIlPbez2gScAxDv7fjXSKro6LunolUu1pVcviuncPaOANeAX5@vger.kernel.org, AJvYcCV5JF+rlLs30etVDCxXXAZrdZa8tkGMvQn2RUftRqTEYfnyIbZFevJJ7Lc965pncRtsIj0atiFtGFz7hwou3DU=@vger.kernel.org, AJvYcCVlOh55vSDBXSsLD6RK4id/I20JKx2eEaH8nHWJGKApk91Pl2bV1Zf1x3PIDVcWjw45Vv4LtE36O4fSMQ==@vger.kernel.org X-Gm-Message-State: AOJu0Yy0kD+vGcfWZaq3Pfvb4MJvpo1X0rWKWjHNv+WaDi8OlunUuc/t fIryBTwubwIIXJ3zFXED6V0LnTa4axqVgsIegfTGKeXJChdCnr4ot8Tz X-Gm-Gg: ASbGncvE8Ii1cr1GwJPEPJ579I1YBpyLIaG95KsMTgKqousdvOSnjOgXQkxTRX0U9OQ fRGrSwoQo26HsR/8+bZBjolFUeBC8mdfvGntqDEApDltDKzSQHZEeDa4yy9F83GrU3YP+BPmTEY ugnCuxJYdB7qRz9dpFgrt9lT1I51dEJZasFIJCDrXaAT6cIKNoWmytl5Z6gKJFD9NPU1R265kwB bfOfLQwiomFdPhc+1eFFCETUliHOm36a0io0rlF0AleCP58X8awBAwCUv5l8CUol+J+x/WcT4Tr 1a1xneFYNC+XJnNhSV+Kr7+4HUPnILfsmS1Erz3BwqiY5/FqQIDWVR4GxVY6klXze/TgBi3b7+B SVY/gL37cATzDsAQtOi6h5ElxFLBFzc7cQYxk X-Google-Smtp-Source: AGHT+IFGJ4j2oFpKlnm3TiPSB5wBBPqtGsgs71FDdaXalDsriq6wX0J9e6BEAmaAsoKXsWO/2igTtQ== X-Received: by 2002:a05:600c:4443:b0:43d:172:50b1 with SMTP id 5b1f17b1804b1-453659ef73fmr31399135e9.29.1750433187813; Fri, 20 Jun 2025 08:26:27 -0700 (PDT) Received: from igor-korotin-Precision-Tower-3620.airspan.com ([188.39.32.4]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-453646cb57fsm29222215e9.1.2025.06.20.08.26.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Jun 2025 08:26:27 -0700 (PDT) Sender: Igor Korotin From: Igor Korotin To: "Rafael J . Wysocki" , Alex Gaynor , Greg Kroah-Hartman , Miguel Ojeda , Rob Herring , Saravana Kannan Cc: Alex Hung , Andrew Morton , Igor Korotin , Jakub Kicinski , Jonathan Cameron , Krzysztof Kozlowski , Mauro Carvalho Chehab , Remo Senekowitsch , Tamir Duberstein , Viresh Kumar , Wedson Almeida Filho , Xiangfei Ding , devicetree@vger.kernel.org, linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org, =?UTF-8?q?Bj=C3=B6rn=20Roy=20Baron?= , Alice Ryhl , Andreas Hindborg , Benno Lossin , Boqun Feng , Danilo Krummrich , Gary Guo , Len Brown , Trevor Gross Subject: [PATCH v8 4/9] rust: acpi: add `acpi::DeviceId` abstraction Date: Fri, 20 Jun 2025 16:24:25 +0100 Message-ID: <20250620152425.285683-1-igor.korotin.linux@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250620150914.276272-1-igor.korotin.linux@gmail.com> References: <20250620150914.276272-1-igor.korotin.linux@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" `acpi::DeviceId` is an abstraction around `struct acpi_device_id`. This is used by subsequent patches, in particular the i2c driver abstractions, to create ACPI device ID tables. Signed-off-by: Igor Korotin Acked-by: Rafael J. Wysocki --- MAINTAINERS | 1 + rust/kernel/acpi.rs | 60 +++++++++++++++++++++++++++++++++++++++++++++ rust/kernel/lib.rs | 1 + 3 files changed, 62 insertions(+) create mode 100644 rust/kernel/acpi.rs diff --git a/MAINTAINERS b/MAINTAINERS index 1e918319cff4..3e59a177ac0c 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -302,6 +302,7 @@ F: include/linux/acpi.h F: include/linux/fwnode.h F: include/linux/fw_table.h F: lib/fw_table.c +F: rust/kernel/acpi.rs F: tools/power/acpi/ =20 ACPI APEI diff --git a/rust/kernel/acpi.rs b/rust/kernel/acpi.rs new file mode 100644 index 000000000000..2b25dc9e07ac --- /dev/null +++ b/rust/kernel/acpi.rs @@ -0,0 +1,60 @@ +// SPDX-License-Identifier: GPL-2.0 + +//! Advanced Configuration and Power Interface abstractions. + +use crate::{bindings, device_id::RawDeviceId, prelude::*}; + +/// IdTable type for ACPI drivers. +pub type IdTable =3D &'static dyn kernel::device_id::IdTable; + +/// An ACPI device id. +#[repr(transparent)] +#[derive(Clone, Copy)] +pub struct DeviceId(bindings::acpi_device_id); + +// SAFETY: +// * `DeviceId` is a `#[repr(transparent)` wrapper of `struct acpi_device_= id` and does not add +// additional invariants, so it's safe to transmute to `RawType`. +// * `DRIVER_DATA_OFFSET` is the offset to the `data` field. +unsafe impl RawDeviceId for DeviceId { + type RawType =3D bindings::acpi_device_id; + + const DRIVER_DATA_OFFSET: usize =3D core::mem::offset_of!(bindings::ac= pi_device_id, driver_data); + + fn index(&self) -> usize { + self.0.driver_data as _ + } +} + +impl DeviceId { + const ACPI_ID_LEN: usize =3D 16; + + /// Create a new device id from an ACPI 'id' string. + pub const fn new(id: &[u8; N]) -> Self { + build_assert!(N <=3D Self::ACPI_ID_LEN, "ID exceeds 16 bytes"); + // Replace with `bindings::acpi_device_id::default()` once stabili= zed for `const`. + // SAFETY: FFI type is valid to be zero-initialized. + let mut acpi: bindings::acpi_device_id =3D unsafe { core::mem::zer= oed() }; + let mut i =3D 0; + while i < N { + acpi.id[i] =3D id[i]; + i +=3D 1; + } + + Self(acpi) + } +} + +/// Create an ACPI `IdTable` with an "alias" for modpost. +#[macro_export] +macro_rules! acpi_device_table { + ($table_name:ident, $module_table_name:ident, $id_info_type: ty, $tabl= e_data: expr) =3D> { + const $table_name: $crate::device_id::IdArray< + $crate::acpi::DeviceId, + $id_info_type, + { $table_data.len() }, + > =3D $crate::device_id::IdArray::new($table_data); + + $crate::module_device_table!("acpi", $module_table_name, $table_na= me); + }; +} diff --git a/rust/kernel/lib.rs b/rust/kernel/lib.rs index 6b4774b2b1c3..5bbf3627212f 100644 --- a/rust/kernel/lib.rs +++ b/rust/kernel/lib.rs @@ -51,6 +51,7 @@ =20 pub use ffi; =20 +pub mod acpi; pub mod alloc; #[cfg(CONFIG_AUXILIARY_BUS)] pub mod auxiliary; --=20 2.43.0 From nobody Thu Oct 9 03:14:48 2025 Received: from mail-wm1-f50.google.com (mail-wm1-f50.google.com [209.85.128.50]) (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 E87A919A297; Fri, 20 Jun 2025 15:39:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750433943; cv=none; b=BzmJS2E9pTuKYwaBWzb3ZCa1StIynaA3DWZrrR0ao/ChzUbRmdTGtvc5t9Lf+gRDWslTZnh1lFW0t1WWdDE+nJF2C4Yi7Nwhl6UgHj10H1RLW5CL2OpeovAPqmkCEtvFzWdmeZjs9t57on/dwYRcmOf6U3QQGw1I2j5c7gbXklc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750433943; c=relaxed/simple; bh=kdiPdMh5+sRzNgtYRKj/S0sAtUte5v+zpvWVg0DO3wo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Ch5qtOPcd0Wjabr/4wqjNFw/njH8Ieqj8OhdVuXWLOxYLkvWy21xGEyeavlxnLZUberuBkc3QPWp0S3/6K7/LvqT/6/p1n3kVqb+24Nwwg5rMR2yfXMqZILcJstCZvWYKWMC7vklqdIBwz24wjU3BJaYqamQxOqWjaGNDfT+daA= 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=f8C4J6+/; arc=none smtp.client-ip=209.85.128.50 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="f8C4J6+/" Received: by mail-wm1-f50.google.com with SMTP id 5b1f17b1804b1-451e2f0d9c2so14548045e9.1; Fri, 20 Jun 2025 08:39:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750433940; x=1751038740; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:from:to:cc:subject:date :message-id:reply-to; bh=/5X6IDTVHTHpEsUSABa7MSKK8TKkDRNQdpFJlmd5FHY=; b=f8C4J6+/wg6QDOROSMmYbZ0GaohbAYmB1NCpq+JNCD6g5PzcOwFtYBUIzSyWZ/Wr5U zVaVjhS0AgsvlOebSkSK5BOR48g56bs0DWYnng4UwCXH6s7cwJFVSKreKYC2/hB8xiFd lrp5oTOpchNWDWv+UXs7tNXR7GHOBdnY7LZw9z7pDIDjNi8YFm2zScoIUjNY7kHKsSV4 iaM4Lgx7YEezRGkBhozRSl9JLzbjkHN/orKXmzfG4lJPicJ2tU0zkkn5mHuR+8n3xwym MwH9Gcbl3t51tvO0tQah5HrH/KawqhXQHRpxewpGHrCcobwTzKvSOol6csHgXlqkwh8z nLTg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750433940; x=1751038740; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=/5X6IDTVHTHpEsUSABa7MSKK8TKkDRNQdpFJlmd5FHY=; b=GJvtxk7fx3+S+adiKpz8GM/yQ8DpkBBWyooNZ0dvwPDlp0t/Pexm4pKPWpRZ0K3DgK G7gONSM5ggooY/BvoDkxBGsF0a7Ihlk3L3eTkkDL2xaaD0ZK/5j9qP6U5CgZ4DTmF3h7 FwST8E5flromyBj4j4+30hanoLIN2W5KeB6+IixpPF7xWvNG3OY4VQvdLuwI4aLqq+il Sop875q4yrHa6JcC/Lfy6ftYMGeSHdozR9W3Q1HDl0HfK9xHZQaHZBM7GMe3uHgHnpao ariOXvXCihYoSz0fkNJfubgNMVdsm93mqAbUefJLyx6MUnPDs9fUIQEl6ZiM9Tcabl2N H50Q== X-Forwarded-Encrypted: i=1; AJvYcCV3YP7tRD3c3jI3ZmOywU1OLxCIhsNVM5okp7RhERaE9GQSkAB1qkaD3Pb6QkKUweHeHU3rwj1AfapK@vger.kernel.org, AJvYcCVVl73jjX6cAuFjEnoyEBMQYdMuRkAUSSTAos0Vfn4op+fBpmuwWDasCNShRjjjCdwgjAj5APJVJNn4SaPreD8=@vger.kernel.org, AJvYcCWBlJIgaSl0qMqDHknpShnN5D/CCW4taphFV70i1Tptadw3x6uF//6HGkUg/O2QDR+8YaEClKUaN/VpMQ==@vger.kernel.org, AJvYcCXqn6+8g2JSq9Qvgn6MV6DQ8MKCHWYM2jvu5VkhJJFsF+gDs5Yac2b9xsZMhOJoqRfcxrTWMUCFrBNCu9S7@vger.kernel.org X-Gm-Message-State: AOJu0YyJ5DVI/slNwimObtWSKpeO9uFD36DGrTbQMgn21PVHUR68s5SN vSu1QTO7jkLxCDFx0k8NuotUAtce1b2vWFAA+IBUAHOcmIi3Ij/RPflX X-Gm-Gg: ASbGnct66P1fiE5xef0h9U9R/fm7yrMHkAHvhDOPB8vG4LDrrAIeheSfnVqLrkZVNJg Mv+NQT5SfDJrEz4xmnbRl9mHegfZSGX8b/zbejrmyqaq3NRoJd4ZPqwsgSZWrwbJYp4NzuuZzGW g2M+V/ZJaYMir/aRnWKN0ZUkpVeyDqS5z6QLy4JlYqUgNeQ0Y6pIkqETztZGLog1/1yt1HTSrRl QlPO633LTpmuPigQh0MqU9fh1vmem5UXY0X0vtzGv4h1UbRto7hYBTwDj2ALsdV7KPScrkLYPPq WOq41ci0iluewTqymCrS7+tV/Ipi/Lh+LzVjLKw80mZOEDR/6bgwgANHYjTSqs/rfX5VUctIW+i NQiDjDkn4w2AvFouUhLTf3T09ymtQxyWvIGqV X-Google-Smtp-Source: AGHT+IHBTlMifqap8Yx6rGoRjLGMK3thDNHDyszupBIkp4SOG430SYgjLtQZVOEL2dpCSM+Fq0Q+Ww== X-Received: by 2002:a05:600c:1c02:b0:453:9b3:5b58 with SMTP id 5b1f17b1804b1-45365e4a008mr26113405e9.4.1750433939906; Fri, 20 Jun 2025 08:38:59 -0700 (PDT) Received: from igor-korotin-Precision-Tower-3620.airspan.com ([188.39.32.4]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a6d117c6b2sm2392627f8f.46.2025.06.20.08.38.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Jun 2025 08:38:58 -0700 (PDT) Sender: Igor Korotin From: Igor Korotin To: "Rafael J . Wysocki" , Alex Gaynor , Greg Kroah-Hartman , Miguel Ojeda , Rob Herring , Saravana Kannan Cc: Alex Hung , Andrew Morton , Igor Korotin , Jakub Kicinski , Jonathan Cameron , Krzysztof Kozlowski , Mauro Carvalho Chehab , Remo Senekowitsch , Tamir Duberstein , Viresh Kumar , Wedson Almeida Filho , Xiangfei Ding , devicetree@vger.kernel.org, linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org, =?UTF-8?q?Bj=C3=B6rn=20Roy=20Baron?= , Alice Ryhl , Andreas Hindborg , Benno Lossin , Boqun Feng , Danilo Krummrich , Gary Guo , Len Brown , Trevor Gross Subject: [PATCH v8 5/9] rust: driver: Consolidate `Adapter::of_id_info` methods using `#[cfg]` Date: Fri, 20 Jun 2025 16:36:56 +0100 Message-ID: <20250620153656.294468-1-igor.korotin.linux@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250620150914.276272-1-igor.korotin.linux@gmail.com> References: <20250620150914.276272-1-igor.korotin.linux@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" Refactor the `of_id_info` methods in the `Adapter` trait to reduce duplication. Previously, the method had two versions selected via `#[cfg(...)]` and `#[cfg(not(...))]`. This change merges them into a single method by using `#[cfg]` blocks within the method body. Suggested-by: Benno Lossin Signed-off-by: Igor Korotin --- rust/kernel/driver.rs | 40 +++++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/rust/kernel/driver.rs b/rust/kernel/driver.rs index ec9166cedfa7..cb62b75a0c0e 100644 --- a/rust/kernel/driver.rs +++ b/rust/kernel/driver.rs @@ -147,30 +147,32 @@ pub trait Adapter { /// Returns the driver's private data from the matching entry in the [= `of::IdTable`], if any. /// /// If this returns `None`, it means there is no match with an entry i= n the [`of::IdTable`]. - #[cfg(CONFIG_OF)] fn of_id_info(dev: &device::Device) -> Option<&'static Self::IdInfo> { - let table =3D Self::of_id_table()?; + #[cfg(not(CONFIG_OF))] + { + let _ =3D dev; + return None; + } =20 - // SAFETY: - // - `table` has static lifetime, hence it's valid for read, - // - `dev` is guaranteed to be valid while it's alive, and so is `= pdev.as_ref().as_raw()`. - let raw_id =3D unsafe { bindings::of_match_device(table.as_ptr(), = dev.as_raw()) }; + #[cfg(CONFIG_OF)] + { + let table =3D Self::of_id_table()?; =20 - if raw_id.is_null() { - None - } else { - // SAFETY: `DeviceId` is a `#[repr(transparent)` wrapper of `s= truct of_device_id` and - // does not add additional invariants, so it's safe to transmu= te. - let id =3D unsafe { &*raw_id.cast::() }; + // SAFETY: + // - `table` has static lifetime, hence it's valid for read, + // - `dev` is guaranteed to be valid while it's alive, and so = is `pdev.as_ref().as_raw()`. + let raw_id =3D unsafe { bindings::of_match_device(table.as_ptr= (), dev.as_raw()) }; =20 - Some(table.info(::index(id))) - } - } + if raw_id.is_null() { + None + } else { + // SAFETY: `DeviceId` is a `#[repr(transparent)` wrapper o= f `struct of_device_id` and + // does not add additional invariants, so it's safe to tra= nsmute. + let id =3D unsafe { &*raw_id.cast::() }; =20 - #[cfg(not(CONFIG_OF))] - #[allow(missing_docs)] - fn of_id_info(_dev: &device::Device) -> Option<&'static Self::IdInfo> { - None + Some(table.info(::index(id))) + } + } } =20 /// Returns the driver's private data from the matching entry of any o= f the ID tables, if any. --=20 2.43.0 From nobody Thu Oct 9 03:14:48 2025 Received: from mail-wr1-f46.google.com (mail-wr1-f46.google.com [209.85.221.46]) (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 E84DA19A297; Fri, 20 Jun 2025 15:41:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750434080; cv=none; b=kv2SZ3i7Z2jW1wfvA2Df2UOYsS0uA3JjQ7dNyyHGATeylcA1C1hpNyYqJHRndxp3CSK22LeVRFKItCrrlhrHEJ0wspssFQncrxM3iA6qt6nZxpeC5RqGZhC+AVX4mUXE/+k5egzbBMZXO9HG31X95U71Ez1/bS5crNzH4snS7pQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750434080; c=relaxed/simple; bh=1Hy3ujJXBqxV9lfXBO++FN2/fZmpMCZpJfkWT5aJ4iQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=H5z86OiNtSSzLpBsKXNofl3rhDUWAn+1p5/iJ38uCQDyoHYdXjej8qd8NwDBDX56NEMT7On8mj6oJoAXLqL2FtwxYdQ3c6sFeg2AckTAA67Xq9xFnxQcFi+NviXNepwl6EFfr/V+R6xQFDY2mCPsJOQCht2mpgZ/i3CvHRWWnMg= 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=b1F010FI; arc=none smtp.client-ip=209.85.221.46 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="b1F010FI" Received: by mail-wr1-f46.google.com with SMTP id ffacd0b85a97d-3a54700a463so1173812f8f.1; Fri, 20 Jun 2025 08:41:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750434077; x=1751038877; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:from:to:cc:subject:date :message-id:reply-to; bh=f7KlnwZB+CxVWmAEV673+n7G11D71TLYbf9q51R/jMw=; b=b1F010FIpU/hLuKZP/4+afeZhU/wKNN4zYGiBBhgEbDtmFxsk1MLAxDbrJt0cq2Thv 7sowAnpLtvcDWAZnjJjE747BvJXyjmJ6pcaSAcEtHEvUxU1uXUDfrCvIuvo5HC/yRzwF UW6ejK5yKP7EzLIu85zMSQ70Fmai6EvPji93kwz0Rd0T0huKvDK83PfuRyDVLjRAe1fT 8OpxQvsHEBFTf1KYDLrTrm72twC0wYpw4bCV8mO4s2hrVN4MJTwK4K1ZL9w3gIEo581M Ak48XTHjrnLCjoYijPty51JoykEIddUztJAfwIEyfpfMmYVatHR9HP7k+LXGStrbj/hZ RhwA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750434077; x=1751038877; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=f7KlnwZB+CxVWmAEV673+n7G11D71TLYbf9q51R/jMw=; b=Hh/5v8ZpbFNxKbmkFS9WwL6PP6IJ0EbV+GO0bNwiW3KMu3FscYTMBJHVL5wan/8ejF xJ1qyuYEiZ1oychNDlB9d6ca8K3OZUxuHbFgkRXEZW/+xwXs3SSmAPQxIcW/UKNBqvvD ZDxvalny+FsPW0ZOqwq+poB+Se8Taz8ASigp/QM2FNo4K3IHhGqHMOopTAX01AoTRQwT QMvfcrR53SVTlFsXEurc+gN/gLC2FJNqqSl5nOCHjuvoraaHqLQIz6Ok9qnMBXQMnfyI QtZqCFvp4izdihsJjASuPCjemNlMkLnRbxB2amosfeSMXxp0C/1U1/sB0MHcbCsdeqn4 pbog== X-Forwarded-Encrypted: i=1; AJvYcCUCh3Rxf+mz7yzs/o+2NByisqjwhA8zEWyUknVYiLbBhJC6dcPxGIijjQVVFT6UsvWIU4dL+xo9xEix@vger.kernel.org, AJvYcCUHL9GUSUJuac5OP/6gFtUIkYjWRgiv0WPWcqZfNKsjp9FTNOSlrElNAo7/yyBhLBwAe1y0q1hRlYwmjd0q@vger.kernel.org, AJvYcCUpe/nnymwZeibJlrbgbI5uPgF4zqSDFRIYxIk9dfxUV2O/G4Dj7ExDlfcLM3wMwa982MRjWCTRYgsXng==@vger.kernel.org, AJvYcCX6TEeITeG4rA7FhMLiCzrH3GT8hdgK4EQ9KS09yRGRTwJ1/B3Hi5bTXGLQ3yK7yGt656Wwmf5QS1wZDOw2zVY=@vger.kernel.org X-Gm-Message-State: AOJu0YyNh7Y0a4t/LDeUPzQd5xC1OYht2ohMgJ2yF/6YlUr1vOTrG+R+ I3mVNVBDg5h3d+c8tCvYP6w1e/fVMgPt7YACVVc0uTWh4u+r2bY+s9/C+0xrLaIhBfk= X-Gm-Gg: ASbGnctAFLR2YA/VwVCgvzpSKhlzpFha6OopfYZMUf4tY5+fnKw9TFR6b7cY98cqOOn 93lpDxXFIZAPXf5Kl3IvgbwpaCZ8m82XAD9Adw89OaJoSGIPOCEwXNNE/pXqBE+h7vQlcpzOuvW GIUVxENGc/EKXSo2XYJXGfHU5NjU9N9AGPOR9P70ZZcj2i7/29j+xdzZS2L3Iv91ocJkAxAnVDF iAcHGAEH5+5kaOXNLP1DYZzWV6oUpYSc2UjBRzSTFco/mVIoelsmUYeT1qt6+7hcMEm1O8e97ZB ztWTWIZ8ZFSXVvDjZZxJhvKIokGkrSq/AxVKF+G7oQhDONxnQUH+YZf9n2qb2ma6VNTaeiDeEq9 RyON+xEPOw5oQJMeBj8ERgxEjeH+l8XB2IG4z X-Google-Smtp-Source: AGHT+IHOv7jEZj3mRK2FKbLya5sasuGQ2QY4nLc12MK00uIo4X2fqCr1Bwt8tjCkiXqrV6BFEuewOg== X-Received: by 2002:a05:6000:460e:b0:3a5:8601:613b with SMTP id ffacd0b85a97d-3a6d27e1793mr2283088f8f.20.1750434076927; Fri, 20 Jun 2025 08:41:16 -0700 (PDT) Received: from igor-korotin-Precision-Tower-3620.airspan.com ([188.39.32.4]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a6d0f104bbsm2413391f8f.4.2025.06.20.08.41.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Jun 2025 08:41:16 -0700 (PDT) Sender: Igor Korotin From: Igor Korotin To: "Rafael J . Wysocki" , Alex Gaynor , Greg Kroah-Hartman , Miguel Ojeda , Rob Herring , Saravana Kannan Cc: Alex Hung , Andrew Morton , Igor Korotin , Jakub Kicinski , Jonathan Cameron , Krzysztof Kozlowski , Mauro Carvalho Chehab , Remo Senekowitsch , Tamir Duberstein , Viresh Kumar , Wedson Almeida Filho , Xiangfei Ding , devicetree@vger.kernel.org, linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org, =?UTF-8?q?Bj=C3=B6rn=20Roy=20Baron?= , Alice Ryhl , Andreas Hindborg , Benno Lossin , Boqun Feng , Danilo Krummrich , Gary Guo , Len Brown , Trevor Gross Subject: [PATCH v8 6/9] rust: driver: Add ACPI id table support to Adapter trait Date: Fri, 20 Jun 2025 16:39:13 +0100 Message-ID: <20250620153914.295679-1-igor.korotin.linux@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250620150914.276272-1-igor.korotin.linux@gmail.com> References: <20250620150914.276272-1-igor.korotin.linux@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" Extend the `Adapter` trait to support ACPI device identification. This mirrors the existing Open Firmware (OF) support (`of_id_table`) and enables Rust drivers to match and retrieve ACPI-specific device data when `CONFIG_ACPI` is enabled. To avoid breaking compilation, a stub implementation of `acpi_id_table()` is added to the Platform adapter; the full implementation will be provided in a subsequent patch. Signed-off-by: Igor Korotin --- rust/bindings/bindings_helper.h | 1 + rust/kernel/driver.rs | 41 ++++++++++++++++++++++++++++++++- rust/kernel/platform.rs | 6 ++++- 3 files changed, 46 insertions(+), 2 deletions(-) diff --git a/rust/bindings/bindings_helper.h b/rust/bindings/bindings_helpe= r.h index bc494745f67b..dfb2dd500ef6 100644 --- a/rust/bindings/bindings_helper.h +++ b/rust/bindings/bindings_helper.h @@ -28,6 +28,7 @@ */ #include =20 +#include #include #include #include diff --git a/rust/kernel/driver.rs b/rust/kernel/driver.rs index cb62b75a0c0e..8389c122a047 100644 --- a/rust/kernel/driver.rs +++ b/rust/kernel/driver.rs @@ -6,7 +6,7 @@ //! register using the [`Registration`] class. =20 use crate::error::{Error, Result}; -use crate::{device, of, str::CStr, try_pin_init, types::Opaque, ThisModule= }; +use crate::{acpi, device, of, str::CStr, try_pin_init, types::Opaque, This= Module}; use core::pin::Pin; use pin_init::{pin_data, pinned_drop, PinInit}; =20 @@ -141,6 +141,40 @@ pub trait Adapter { /// The type holding driver private data about each device id supporte= d by the driver. type IdInfo: 'static; =20 + /// The [`acpi::IdTable`] of the corresponding driver + fn acpi_id_table() -> Option>; + + /// Returns the driver's private data from the matching entry in the [= `acpi::IdTable`], if any. + /// + /// If this returns `None`, it means there is no match with an entry i= n the [`acpi::IdTable`]. + fn acpi_id_info(dev: &device::Device) -> Option<&'static Self::IdInfo>= { + #[cfg(not(CONFIG_ACPI))] + { + let _ =3D dev; + return None; + } + + #[cfg(CONFIG_ACPI)] + { + let table =3D Self::acpi_id_table()?; + + // SAFETY: + // - `table` has static lifetime, hence it's valid for read, + // - `dev` is guaranteed to be valid while it's alive, and so = is `pdev.as_ref().as_raw()`. + let raw_id =3D unsafe { bindings::acpi_match_device(table.as_p= tr(), dev.as_raw()) }; + + if raw_id.is_null() { + None + } else { + // SAFETY: `DeviceId` is a `#[repr(transparent)` wrapper o= f `struct of_device_id` and + // does not add additional invariants, so it's safe to tra= nsmute. + let id =3D unsafe { &*raw_id.cast::() }; + + Some(table.info(::index(id))) + } + } + } + /// The [`of::IdTable`] of the corresponding driver. fn of_id_table() -> Option>; =20 @@ -180,6 +214,11 @@ fn of_id_info(dev: &device::Device) -> Option<&'static= Self::IdInfo> { /// If this returns `None`, it means that there is no match in any of = the ID tables directly /// associated with a [`device::Device`]. fn id_info(dev: &device::Device) -> Option<&'static Self::IdInfo> { + let id =3D Self::acpi_id_info(dev); + if id.is_some() { + return id; + } + let id =3D Self::of_id_info(dev); if id.is_some() { return id; diff --git a/rust/kernel/platform.rs b/rust/kernel/platform.rs index 5b21fa517e55..5923d29a0511 100644 --- a/rust/kernel/platform.rs +++ b/rust/kernel/platform.rs @@ -5,7 +5,7 @@ //! C header: [`include/linux/platform_device.h`](srctree/include/linux/pl= atform_device.h) =20 use crate::{ - bindings, container_of, device, driver, + acpi, bindings, container_of, device, driver, error::{to_result, Result}, of, prelude::*, @@ -94,6 +94,10 @@ impl driver::Adapter for Adapter= { fn of_id_table() -> Option> { T::OF_ID_TABLE } + + fn acpi_id_table() -> Option> { + None + } } =20 /// Declares a kernel module that exposes a single platform driver. --=20 2.43.0 From nobody Thu Oct 9 03:14:48 2025 Received: from mail-wm1-f49.google.com (mail-wm1-f49.google.com [209.85.128.49]) (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 E53F819A297; Fri, 20 Jun 2025 15:43:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750434210; cv=none; b=J4qGb6FqkvoFB76s1GvD7uf0/23BTrWqHDA0JXNF/YHs9P/7sg8nZjXjKfNzsjglEijz6DIkg+gLJPNo9RrmgluAN8jmdAFgKCNlHNQTJuZN+EXNi92zMOQHTOwyEfS7lIHSW7pD1kAow85Uy5uZd7D+z1p6cbopALoP26twXC8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750434210; c=relaxed/simple; bh=X3GP0rFGQWYb7D9EofmWO4CkjJb3nRBnJ4sS25K5GGQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=IsvrXsMgjr8CBMvONC3q+f7/Ah/0b9esLnj5vrOufTKWlVO/Z0XPY+gKz4Lfuu3QmaDVivXfgjrzvARkai9eeoItDYcJEA/42IKuVEUA6EDwPOYDZmlUUNJzbwy+0uNiGslozDlnEz7J6KNc6osyUS5AMrV0s3nVYd8mojHHdNg= 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=kJ9yPT19; arc=none smtp.client-ip=209.85.128.49 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="kJ9yPT19" Received: by mail-wm1-f49.google.com with SMTP id 5b1f17b1804b1-450cf214200so19174985e9.1; Fri, 20 Jun 2025 08:43:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750434207; x=1751039007; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:from:to:cc:subject:date :message-id:reply-to; bh=X/r6nOkep5bcePWw/OmX8epaR10E2HZMsLJvTHOobc0=; b=kJ9yPT19DCAwz1Ppqhgt5E5EPfhcTcUdsmqKqdNDGwUvwO0G70TeIRWsJMZlNOZgKn x7ysjeBDWtEgon9dxyfjhA2WZdYV3W14KjHw/G1iE6tj0Ugf8FKkurB0tjoLAz7PQfHR B8QJ0x2uS0XGmXhCXuYZed0bghvCYigKUvDQMdCVXrDBym4BBajVHTenScGdcOpsOH+d ZFLIK3CxBXjo3wys4GqaKtr6AA6A24MTcKSGJtHJxF6tSCmqkApOeB4iLr95U2Wucz8/ Mqd6vZbJOP511sryiTNQ+dh0eWxZyIM9pEUJyzEgJf4XDKEa82xaSYHmCxHTAVFa37WT c3+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750434207; x=1751039007; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=X/r6nOkep5bcePWw/OmX8epaR10E2HZMsLJvTHOobc0=; b=jzW6BsUab7sm+GTy1z1oZU+kDaEsPmK/Tk14dsDKgx33BUbGvQ/vWk/a7lPOC40eRq V93GGmqU9cyjNAA/CY6NvKFFAMqTimOH0V+/dH8SC757hAzo1kdo3sBRDttNMjTHQQnh HE6izru26hT+v2tkbPnTG0NQVAP2CqO8aIuWN1Mr1VlZ3ClvvRG94cyZOokQJJpqNr/v qpvvBw50yVOBGxim8CDQCRCyxu6HctKfKIaQM7q3TRRDr1aXZ+QnwrtwciSkXNhL9eea pHWa4CLDA6TvicxihU15IYeeGWFHglnsQ8PdSSL3Mgi/4cFWPNkiiLM+Y5t17SSDhcqj wQGQ== X-Forwarded-Encrypted: i=1; AJvYcCU+siVY5SgCFWcxqvWRvdxa57R9pA8x6CzYuxAPVEEJYYMBpFuCdnt/sXsAf3r1FlwUBb8B+GWlbW6HCQ==@vger.kernel.org, AJvYcCUOQSeNRqib2Qafr27DCONOsoHVq5PEdUCjTON+8H4JXPiI7TgnINZYlNE+6YVDBpPe77ZEXKGnqD9HbhMF@vger.kernel.org, AJvYcCUcE1FhQxPLYD7e8cyzZySxGyms15ycSi/x8DmpilstWZw8JCrzmd1qM/PaVUnSGXacdYw6jqoNLDXH@vger.kernel.org, AJvYcCX4mv0tS8iaCrBBR7cak8ecNwc/6IJqoZoMXZQrVG1Rvn3Ly5gW3iP/dx6HvYxb0cCgbcbzroG2u1P2SRYrwjg=@vger.kernel.org X-Gm-Message-State: AOJu0YygE+fghR/FtOXGKPukRf2wYOW3Zg6z+1og7wGeO98ccodEU5Oj lGjqUYVRl9KdvX6DFnC+YM2mSgNragH+fx+Gwzh715jNnRytSzFcbfQA X-Gm-Gg: ASbGncuPKjDaPf3kRQNglcfl+UUkIkIiaFH9qtQhs4AwlZgWvG/XkgSay+Iqm2SnQoH hIP+ZY3ZOl+Dbut2sKPFjVHs0ojaK+rkHwS0af9jw2YE+HQfZMkz6ALJl6u5bmgw6GitL4C8+cR 4ZgeRJV+SbDNcM2nE4TwHwlbzmt+Mj5v3iowfaSorY4S2CE+vp9JJgIRxMKzmsOopaMLvfZu7eD h+rPSVHo2/qx02qKltxq7KwLuJonzVYPooPBnZTkCjny4cYdS/MdOBhfGz3jlbgOQBaDK5eCq2D p+Ezn2MFe7O5D3DvbV5zyvQLrlNPJWWBY5T8yP0uacyigMpsum4bf2l7i1YmaXxYasKH2a2Jz+9 Nh/WkFNbroWs9kpVzNFnUzrxOrRrBgROJOFPO X-Google-Smtp-Source: AGHT+IGOay+Dgmk/mALjZ37btoxDkdcv0+KYLeDqi25xqCLtwnCwdg8q4gUaX5ZM7cMj3xDEX0s+IA== X-Received: by 2002:a05:600c:3b8d:b0:44a:b7a3:b95f with SMTP id 5b1f17b1804b1-453659f82abmr28801445e9.25.1750434207082; Fri, 20 Jun 2025 08:43:27 -0700 (PDT) Received: from igor-korotin-Precision-Tower-3620.airspan.com ([188.39.32.4]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-453646cb672sm29603795e9.6.2025.06.20.08.43.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Jun 2025 08:43:26 -0700 (PDT) Sender: Igor Korotin From: Igor Korotin To: "Rafael J . Wysocki" , Alex Gaynor , Greg Kroah-Hartman , Miguel Ojeda , Rob Herring , Saravana Kannan Cc: Alex Hung , Andrew Morton , Igor Korotin , Jakub Kicinski , Jonathan Cameron , Krzysztof Kozlowski , Mauro Carvalho Chehab , Remo Senekowitsch , Tamir Duberstein , Viresh Kumar , Wedson Almeida Filho , Xiangfei Ding , devicetree@vger.kernel.org, linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org, =?UTF-8?q?Bj=C3=B6rn=20Roy=20Baron?= , Alice Ryhl , Andreas Hindborg , Benno Lossin , Boqun Feng , Danilo Krummrich , Gary Guo , Len Brown , Trevor Gross Subject: [PATCH v8 7/9] rust: platform: Set `OF_ID_TABLE` default to `None` in `Driver` trait Date: Fri, 20 Jun 2025 16:41:24 +0100 Message-ID: <20250620154124.297158-1-igor.korotin.linux@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250620150914.276272-1-igor.korotin.linux@gmail.com> References: <20250620150914.276272-1-igor.korotin.linux@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" Provide a default value of `None` for `Driver::OF_ID_TABLE` to simplify driver implementations. Drivers that do not require OpenFirmware matching no longer need to import the `of` module or define the constant explicitly. This reduces unnecessary boilerplate and avoids pulling in unused dependencies. Signed-off-by: Igor Korotin --- rust/kernel/platform.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust/kernel/platform.rs b/rust/kernel/platform.rs index 5923d29a0511..2436f55b579b 100644 --- a/rust/kernel/platform.rs +++ b/rust/kernel/platform.rs @@ -162,7 +162,7 @@ pub trait Driver: Send { type IdInfo: 'static; =20 /// The table of OF device ids supported by the driver. - const OF_ID_TABLE: Option>; + const OF_ID_TABLE: Option> =3D None; =20 /// Platform driver probe. /// --=20 2.43.0 From nobody Thu Oct 9 03:14:48 2025 Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com [209.85.128.45]) (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 D67952E763C; Fri, 20 Jun 2025 15:45:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750434340; cv=none; b=NnWMfv9uqAn3A74WPpRSWUDb0bkP3ub0ezahdabSdLjeUzGlq8YgjNQhj/halTEHA18fRnGc+SLlOSsAfRyLAumDerf0GAT3gjOeKhOPj4RlncyzuB0+ZrPhLm42qu9rLx+PFCLQ+5WSGMEvkcDLSzvBhwftpSzyH8FKCYNt554= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750434340; c=relaxed/simple; bh=fCZg+qa6/P+Asbd0KRfxqaW80M7dwYJ1XuU8KBHp+rI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=pw1HrWcN2wXsQdMrJPz6Wvej7FAo+MU4h7CzU1fZ+UnNZQmk8UyGiuxSo1c1Je++gfXgBPFrs0/LbVgo8mXg5HWS2bx0udQsocb7Zgxr5jfTSE52NpU+i2TdCGcHtfZtpgM2HkraxymaBn1Dq1xZMIhxtzbItTjmnTGi8o/9pGk= 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=Oos1hSQm; arc=none smtp.client-ip=209.85.128.45 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="Oos1hSQm" Received: by mail-wm1-f45.google.com with SMTP id 5b1f17b1804b1-451d54214adso15157165e9.3; Fri, 20 Jun 2025 08:45:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750434337; x=1751039137; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:from:to:cc:subject:date :message-id:reply-to; bh=LKJ+35t8HG4O3r9CAZlhOHv1jc/h4zjJpE9N6VOcuWY=; b=Oos1hSQmL3OFjFa45TXg9QQlZ1ny/4S0FXwRelAY8qKVvBx4ppwtOroYVLCLw2AIv0 /9gSVrkE7T7eV5PD591ENT6tST24QSUs1ePcem1Ay322kMVXzLUhAn2s6GtYJtOVTLMy WUAJMyCZeJQn2dTPdfyEN05CA1hned80a+auoEXBSErAgIuoVBXdutqTpXhQzGCDElYK cgRg3QEAwdozWYtw7PwBygCdBMAUQY6vvhoLidpgMJf0L4d1fnyzOGG1EMelBPRe5ynE eDdNLT+mNcNQT8CzbPwILMFelX5YX3Hzq/fN7UxOhe7K4lJoCpDzATeR/ck6vewjjRjz fyiQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750434337; x=1751039137; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=LKJ+35t8HG4O3r9CAZlhOHv1jc/h4zjJpE9N6VOcuWY=; b=sHCR+nVyNJjdBN+jFMumCjKs8Sqfwv8L2UtX8rQvuZ2IuSue1buOEf4C0tfbau42Xi 4WMkKmyhpguPVSlU+4n55lwX7ReGGCrdeUnq2fM505+GL7fzjhlOFv+RZRNa2ELGa660 J2Ax8E9obL/+nlkGuYmJja6k9BN7BcPDG78+M1JGo92nzBj7L31wQOtkzCERTzqT1mrf QnDcd4jNGEqRusgx5YtCI279oBJwYWuLMFjkV6Vun9R0F6LAAwn4pdAM+iySsPClaK9U UrMbZv+aO1yd8gyFOVZdaEvFm2twjabmmqgKHLZtT87nT4IXFcD7R8mPDlbttxkYPusK iUMw== X-Forwarded-Encrypted: i=1; AJvYcCVIuBYKJMj7GB8GidO0zaJ62y++VRLiNa8f2sGgUo8VeauQWtf8nU5M5rubjYAWUYjHLFpaiP0nldd1+sM1@vger.kernel.org, AJvYcCWDc2BXFxLB/ZOP799DKInUn2GmA4MIoJRZRriAAvAeAvCmQUzLXCs5cqWgNRqohsLwT2XfGxwJYpS+@vger.kernel.org, AJvYcCXJHhjcoiXMFQWYdrLqOp0zXhTVd8scTJQTxShHQhaRa4ftaUBR9Eh0BHZD9haQkQiEmPhY+y+ACxhFUPVhk34=@vger.kernel.org, AJvYcCXUsimV84OrPqc/Vp7qFYwDCq21KsWKz5q02F2V4BXrDeq2DuEXHfX7vqzrZMSEWyPJIdXrsopk9lHQkg==@vger.kernel.org X-Gm-Message-State: AOJu0Yy6OO4VkDigmHyQsbpBdHYKngCgZqln49cku1mirBoToeTsoz37 BRQz8r47dMqSAWrLa57I5hmdE9ptlBkbfnGkaeFERIqLuqqnJzGJ5UTC X-Gm-Gg: ASbGncsQSTw/Xha0dCid/INaZvlTceyojVSTetNlViut2HeiJ3R8FSciaYdYCSptKvN SCNwwigOAXxXHaQrOPdJsiCkDoTTSUrLjVHHCADbBPqy6wMfm8l51eGO35DuwEhlnAxAoCGpygl erncvLMiogu9Y2lS4qSgFDN4Y5UbrU95ZcYtku4R65AAASQxohxasx4XtxdOikUUNvsW0j3DLlo Tisy8ZMkvzrcScj43VZffVopqpZwdchERPGaGOIumxyfRaeBWOljpCh/cK60XheCZFGKp2cG1Z6 bDiNghc8QxP/rNWbYmDxlh+y0ikb6bHjehcjKlO6Kb57GQxw1ovNhA45235FJzj0sL/8yzIWxhv Vr+fRtqYQbc7NTF0aL1khiIuCvmmTtBqin3Ar X-Google-Smtp-Source: AGHT+IH2C53yc23XxCYNlV8ObdMQtnKhsc1hQMOEdirQJq6qRcmhyC9b16FY1hfzZAuThldE6PXaFQ== X-Received: by 2002:a05:600c:c103:b0:43d:24d:bbe2 with SMTP id 5b1f17b1804b1-45368780588mr10681265e9.28.1750434336707; Fri, 20 Jun 2025 08:45:36 -0700 (PDT) Received: from igor-korotin-Precision-Tower-3620.airspan.com ([188.39.32.4]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a6d0f19e7dsm2478995f8f.38.2025.06.20.08.45.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Jun 2025 08:45:35 -0700 (PDT) Sender: Igor Korotin From: Igor Korotin To: "Rafael J . Wysocki" , Alex Gaynor , Greg Kroah-Hartman , Miguel Ojeda , Rob Herring , Saravana Kannan Cc: Alex Hung , Andrew Morton , Igor Korotin , Jakub Kicinski , Jonathan Cameron , Krzysztof Kozlowski , Mauro Carvalho Chehab , Remo Senekowitsch , Tamir Duberstein , Viresh Kumar , Wedson Almeida Filho , Xiangfei Ding , devicetree@vger.kernel.org, linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org, =?UTF-8?q?Bj=C3=B6rn=20Roy=20Baron?= , Alice Ryhl , Andreas Hindborg , Benno Lossin , Boqun Feng , Danilo Krummrich , Gary Guo , Len Brown , Trevor Gross Subject: [PATCH v8 8/9] rust: platform: Add ACPI match table support to `Driver` trait Date: Fri, 20 Jun 2025 16:43:34 +0100 Message-ID: <20250620154334.298320-1-igor.korotin.linux@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250620150914.276272-1-igor.korotin.linux@gmail.com> References: <20250620150914.276272-1-igor.korotin.linux@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" Extend the `platform::Driver` trait to support ACPI device matching by adding the `ACPI_ID_TABLE` constant. This allows Rust platform drivers to define ACPI match tables alongside their existing OF match tables. These changes mirror the existing OF support and allow Rust platform drivers to match devices based on ACPI identifiers. Signed-off-by: Igor Korotin --- rust/kernel/platform.rs | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/rust/kernel/platform.rs b/rust/kernel/platform.rs index 2436f55b579b..0d00ab9acef7 100644 --- a/rust/kernel/platform.rs +++ b/rust/kernel/platform.rs @@ -37,12 +37,18 @@ unsafe fn register( None =3D> core::ptr::null(), }; =20 + let acpi_table =3D match T::ACPI_ID_TABLE { + Some(table) =3D> table.as_ptr(), + None =3D> core::ptr::null(), + }; + // SAFETY: It's safe to set the fields of `struct platform_driver`= on initialization. unsafe { (*pdrv.get()).driver.name =3D name.as_char_ptr(); (*pdrv.get()).probe =3D Some(Self::probe_callback); (*pdrv.get()).remove =3D Some(Self::remove_callback); (*pdrv.get()).driver.of_match_table =3D of_table; + (*pdrv.get()).driver.acpi_match_table =3D acpi_table; } =20 // SAFETY: `pdrv` is guaranteed to be a valid `RegType`. @@ -96,7 +102,7 @@ fn of_id_table() -> Option> { } =20 fn acpi_id_table() -> Option> { - None + T::ACPI_ID_TABLE } } =20 @@ -127,7 +133,7 @@ macro_rules! module_platform_driver { /// # Example /// ///``` -/// # use kernel::{bindings, c_str, device::Core, of, platform}; +/// # use kernel::{acpi, bindings, c_str, device::Core, of, platform}; /// /// struct MyDriver; /// @@ -140,9 +146,19 @@ macro_rules! module_platform_driver { /// ] /// ); /// +/// kernel::acpi_device_table!( +/// ACPI_TABLE, +/// MODULE_ACPI_TABLE, +/// ::IdInfo, +/// [ +/// (acpi::DeviceId::new(b"TST0001"), ()) +/// ] +/// ); +/// /// impl platform::Driver for MyDriver { /// type IdInfo =3D (); /// const OF_ID_TABLE: Option> =3D Some(&OF_= TABLE); +/// const ACPI_ID_TABLE: Option> =3D Some(= &ACPI_TABLE); /// /// fn probe( /// _pdev: &platform::Device, @@ -164,6 +180,9 @@ pub trait Driver: Send { /// The table of OF device ids supported by the driver. const OF_ID_TABLE: Option> =3D None; =20 + /// The table of ACPI device ids supported by the driver. + const ACPI_ID_TABLE: Option> =3D None; + /// Platform driver probe. /// /// Called when a new platform device is added or discovered. --=20 2.43.0 From nobody Thu Oct 9 03:14:48 2025 Received: from mail-wm1-f46.google.com (mail-wm1-f46.google.com [209.85.128.46]) (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 073A02E763C; Fri, 20 Jun 2025 15:47:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750434478; cv=none; b=BmyxJQW5Z0LGE4rYq/A+QUzWu2bGUrW+AezR/dwwFwoRvz15TqC8IdFfqUpvBgtF7fYRBUJqk/jJiqz7RjQV7w9AaI5nCe0I20DCCj5tiGj2kQlGk/wQdJMwrPpF4SGAfTj7gOUEdBEpTQ4NIcn7DCAMXhdscj2w9iutAK3q0fI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750434478; c=relaxed/simple; bh=puPbHpytOZW7mie8GfL84As9P2RFvRpERNKNKQE1xwk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=nmaIicZC6sJ8eWw1BHS6y3X6WMdpHsBSgdj+RgW5pvrzrtpT1gnIRGb0UHEYkulfAk8rGq69GThhl+kHTqA3p9RtTNvoW36yDFUYMSzIbKctDkvJNxffOc7rhWERWoWoJyctMV6lOFORHd2fv5WkgIJw440eajK/nl2bEiLARo8= 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=l4kU49/Y; arc=none smtp.client-ip=209.85.128.46 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="l4kU49/Y" Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-453647147c6so10377325e9.2; Fri, 20 Jun 2025 08:47:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750434475; x=1751039275; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:from:to:cc:subject:date :message-id:reply-to; bh=bqFUjW8+uNCNgRtyXVYxbhOT3igrLvGYOROHOkaDs3Q=; b=l4kU49/YCMtXxAV9xfHhoLUTfzCMwTHjrNNI4ZAEuYnBLDMFt8fBSJcCSHfIJGQAdE bEXQjV/iAKGnR+BlMPXIsspmNMJjD4qjeQ1tT+N977UloaLbgYYpJ2wj9JCx2FzeMfSD rmDbELZyuBNy6FkCkvHptQ5P4yR70VU5g/35uY9AoG+Pcdq9A1UH7MGSqdvgQRjMqgMC RkQdQKVE1u0AfgQp0C3yrhtLJZHJiFdZ26cAIa9a22G1czCdbRN7BOw4d/y6Xsy1yBOI nWEjyKtg568z2ZMCzuVfXEqfLIrEIJiL9is88HwlQ2LRiUPbUTAunzcAMOYniUQifqKz 8kMA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750434475; x=1751039275; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=bqFUjW8+uNCNgRtyXVYxbhOT3igrLvGYOROHOkaDs3Q=; b=kwAL+DVblYmuanI09kS63ZNSSoZrhNwHyNG9vplPYg7L46EpyJua5EPG+YBEVBIKeg 9EwfuyYTqkl2jgrg0qqJgOjbJ+rqN9jlfS+p0zaZJU3pFJzAfUdBKa1pLuG4w+PqAVgf Gl8LxJp9DYSQv9gb5bNXPY0SBf6NLDUQp8pKDZD4hTy4BxxxxfI2MqFdqcIe+d+MGSTn yKdKdVaSVCDErZgZ9zxAaI3c4vAYblKdpuVjymUwSuf2V53u5ELKLAKMJFlUj5W3yVY+ 3ckPLsDxW7xBOHpgTQ3tGAhsJWKBroQAlrTVQ0Rh5EY8vKU9Uio3X04LsvL8o0gT5WOD PQbQ== X-Forwarded-Encrypted: i=1; AJvYcCVGPMt8k9nw+lo/zmHXjqvkSGFDGNXbSiassgnQUChP7zTV64WXXHIBjIEVNk0TN6rdgL15FDAK6bp1CYDU@vger.kernel.org, AJvYcCWkNWAD9n5MYeXxWnTFbZrMLhx5I4OFsKWjZYt1rpZBYzSgi/wKNKu+J71xHdTNZ6oL56Pw2cbn+q6LzTQAk/0=@vger.kernel.org, AJvYcCX1xZJkiQ6c/iaeSPAhLWcJFBDakCCOagHl9b9RzrfVtooxEQEuoCfNWQ9PtBoRE8ppP3PN8uE1i4nFBA==@vger.kernel.org, AJvYcCXLSjO9jokepqSYoG8KuPUUMDGr90u2+IYGrWIiLvJnHHGO9vIHubXwqPf6zVrpifOv6N7EDWnQ36yS@vger.kernel.org X-Gm-Message-State: AOJu0Yzb0WcwUsdnlwtfR4RcscUoEEtqRF0DJPm6dgZkDnFvI86gcWLR 9bE0LlShQbTtTuoXMmRl/SJh8PSlKEsfiB/iitwffVKjgMVm6lWidEww X-Gm-Gg: ASbGncvmYLyT/Kjuk8YMOdRCde246fvNEyrAAj2rlAYGnN8yMCX67s7gZZ5+kMcuN+c LHLOsFeDaZQ0+imYfUJxu7uK5EVXrynng+mEfyqj1/3H+T3vBBNwxw4d2VmEyPzjK47MHGOI/iB Zxe2Nv4654uwL4aLNyrzjtA/lnRj3iJVGtjcjYOh5bpnV+kSc6Oge9dxVF/rq5kzOJhf90fegDh EGCQfPsaf/WjrkNx7dJKYiuV/+TsmDS68pbrAR+fPAgqaf3pBdG2bPKY3NYk5cfV3XnXmKXWt8W U8sZ6AxTTerJPiM9g4iatUOao1g1xl/Ys0hZzaI7BO93G8w4WTwxpOJ8tCw+BF4zYXUctJvk5YF 6lIGYKoyqj0xhtXUo+XUBqyy0IdAYe+Fb9rpT X-Google-Smtp-Source: AGHT+IGq8HrsMga9eVPB6fzJA1zoMGuoKpuD12G+vs6rwDV90u10qjjl3ByW06NQ8l5TR4U+898YzQ== X-Received: by 2002:a05:6000:248a:b0:3a5:2fae:1348 with SMTP id ffacd0b85a97d-3a6d13129c6mr2772728f8f.51.1750434474935; Fri, 20 Jun 2025 08:47:54 -0700 (PDT) Received: from igor-korotin-Precision-Tower-3620.airspan.com ([188.39.32.4]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a6d0f18a29sm2442795f8f.36.2025.06.20.08.47.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Jun 2025 08:47:54 -0700 (PDT) Sender: Igor Korotin From: Igor Korotin To: "Rafael J . Wysocki" , Alex Gaynor , Greg Kroah-Hartman , Miguel Ojeda , Rob Herring , Saravana Kannan Cc: Alex Hung , Andrew Morton , Igor Korotin , Jakub Kicinski , Jonathan Cameron , Krzysztof Kozlowski , Mauro Carvalho Chehab , Remo Senekowitsch , Tamir Duberstein , Viresh Kumar , Wedson Almeida Filho , Xiangfei Ding , devicetree@vger.kernel.org, linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org, =?UTF-8?q?Bj=C3=B6rn=20Roy=20Baron?= , Alice Ryhl , Andreas Hindborg , Benno Lossin , Boqun Feng , Danilo Krummrich , Gary Guo , Len Brown , Trevor Gross Subject: [PATCH v8 9/9] samples: rust: add ACPI match table example to platform driver Date: Fri, 20 Jun 2025 16:45:52 +0100 Message-ID: <20250620154552.299932-1-igor.korotin.linux@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250620150914.276272-1-igor.korotin.linux@gmail.com> References: <20250620150914.276272-1-igor.korotin.linux@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" Extend the Rust sample platform driver to probe using device/driver name matching, OF ID table matching, or ACPI ID table matching. Signed-off-by: Igor Korotin --- samples/rust/rust_driver_platform.rs | 70 +++++++++++++++++++++++++++- 1 file changed, 69 insertions(+), 1 deletion(-) diff --git a/samples/rust/rust_driver_platform.rs b/samples/rust/rust_drive= r_platform.rs index 8579290eecb3..9c16945e6c70 100644 --- a/samples/rust/rust_driver_platform.rs +++ b/samples/rust/rust_driver_platform.rs @@ -2,8 +2,68 @@ =20 //! Rust Platform driver sample. =20 +//! ACPI match table test +//! +//! This demonstrates how to test an ACPI-based Rust platform driver using= QEMU +//! with a custom SSDT. +//! +//! Steps: +//! +//! 1. **Create an SSDT source file** (`ssdt.dsl`) with the following cont= ent: +//! +//! ```asl +//! DefinitionBlock ("", "SSDT", 2, "TEST", "VIRTACPI", 0x00000001) +//! { +//! Scope (\_SB) +//! { +//! Device (T432) +//! { +//! Name (_HID, "TST0001") // ACPI hardware ID to match +//! Name (_UID, 1) +//! Name (_STA, 0x0F) // Device present, enabled +//! Name (_CRS, ResourceTemplate () +//! { +//! Memory32Fixed (ReadWrite, 0xFED00000, 0x1000) +//! }) +//! } +//! } +//! } +//! ``` +//! +//! 2. **Compile the table**: +//! +//! ```sh +//! iasl -tc ssdt.dsl +//! ``` +//! +//! This generates `ssdt.aml` +//! +//! 3. **Run QEMU** with the compiled AML file: +//! +//! ```sh +//! qemu-system-x86_64 -m 512M \ +//! -enable-kvm \ +//! -kernel path/to/bzImage \ +//! -append "root=3D/dev/sda console=3DttyS0" \ +//! -hda rootfs.img \ +//! -serial stdio \ +//! -acpitable file=3Dssdt.aml +//! ``` +//! +//! Requirements: +//! - The `rust_driver_platform` must be present either: +//! - built directly into the kernel (`bzImage`), or +//! - available as a `.ko` file and loadable from `rootfs.img` +//! +//! 4. **Verify it worked** by checking `dmesg`: +//! +//! ``` +//! rust_driver_platform TST0001:00: Probed with info: '0'. +//! ``` +//! + use kernel::{ - c_str, + acpi, c_str, device::{self, Core}, of, platform, prelude::*, @@ -24,9 +84,17 @@ struct SampleDriver { [(of::DeviceId::new(c_str!("test,rust-device")), Info(42))] ); =20 +kernel::acpi_device_table!( + ACPI_TABLE, + MODULE_ACPI_TABLE, + ::IdInfo, + [(acpi::DeviceId::new(b"TST0001"), Info(0))] +); + impl platform::Driver for SampleDriver { type IdInfo =3D Info; const OF_ID_TABLE: Option> =3D Some(&OF_TABL= E); + const ACPI_ID_TABLE: Option> =3D Some(&ACP= I_TABLE); =20 fn probe( pdev: &platform::Device, --=20 2.43.0