From patchwork Wed Jun 18 10:11:11 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Igor Korotin X-Patchwork-Id: 897557 Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.42]) (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 3FD481E5215; Wed, 18 Jun 2025 10:13:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750241597; cv=none; b=l58jvThrc+XjQnfUrakPEd6Mx+qQieLa4dgTQgQL/5xfdFPYlZPZ7iu/lOyBNK9uss0WFfLHbKJnCeFfz1cU1/biQNktuVgZW7k+37prGg9pjPjsyC2ZrNqd/P7KiOqylZN8QZeeX1720Xj2c/7LYQo/I3A6blymfbfCo7pWGqg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750241597; c=relaxed/simple; bh=pNNwV/XGoxOQv1CG9hWq28XZ9aN6GRVjgDsVYJmJ5t0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=UN5EBxFL+oF8LbsOB/TmoK8gQjh4AnVpKqQC4/4MW1siFfmwK4lld+Qyl1lOWkh5fCkgFWdQaZeEp9XQHJ59d4rz5yzoKyMzOpQuWPfhiiPxFvdR4YLpfmTmlN+G8d9l9K0wQ4D0uHrLNhDmO0AZA3J8eceFjE12OM0Pitu5T4s= 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=h1prG0PP; arc=none smtp.client-ip=209.85.128.42 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="h1prG0PP" Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-4531e146a24so41332835e9.0; Wed, 18 Jun 2025 03:13:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750241594; x=1750846394; 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=JcnlFSZlZ2x3eUss2ZhS1aBPVnMt3wLpmm8ROrRN7RM=; b=h1prG0PPtxMCuTenFbwAPmpP8Xa9geIZMxrSa+bQje+Etbycp7wiCgBIJNZ5HIBOwi TL3dT/+l0ATTLJqNRZPAC2lZz4+TmOJSg58de+wJwncXGeyBEFmGGcOqqTR2j4rDZ7Dt JuboUWcLTp34kVeQ2lMsv9lt7xX8sn3zxksR35zU+TQhy+ob7F3fvVRtXJck/wBoyLZG O/wC6wY5X4XmTsCr6amKUEVfn4RWMC7Ga792a009oVz2dkdquVdLDVM+yDgWBYkC1XcS Kr3zT0Rz6BezFmfN4Y+XfXcwYCVHhp1oPyfgLPKqhuA5zXVIUAjktz1u2YJaFDxyxcPn boow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750241594; x=1750846394; 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=JcnlFSZlZ2x3eUss2ZhS1aBPVnMt3wLpmm8ROrRN7RM=; b=NPgGuyh4ixjxf6pjdTvUmCCjo3MOt1AYaHowASPj5wA1n8cI/515INUPTnJd6iEGdA H8xbRv+zR0NsOZ6d76TrMZH5NVvLsGwFuvcvNBm4M1hWblC3wFsTkS5Cqx0TnubDMMEt PFyyMPhE7Ev14NxAnCfq9surK31dGgIeJgTcWxlg+42tfhlC4TcG9fPZKC/SCLPpghSu L7ArdebOtjaqKNHJvTncj8crNCdprasPjPaa52yKAK8z5pnEC2D1N7gL5ld35binhxhe SP9Xydjx0JGDjFgsiMNoWQirlF1pCfzYJXUzpESMgvfwmcRFf6JPoVUZlbPV1y7zXEPD BHIg== X-Forwarded-Encrypted: i=1; AJvYcCUFTPDRH1bPPCNdzLvbXfOhMtXbes1IpuW75re8Z/jJSFAP3Xvx2bHArHxZ5hKZyKUQSSsJKYFOyBAx@vger.kernel.org, AJvYcCUHmN8JLpg0qTqY8l461XMow1weye8v6eW5+VxAdo/TCLUg+gN2g0WvXgzG/rkO4lEzhKI00+Nd0EcNclBR@vger.kernel.org, AJvYcCWswsqz64Ix6ZvGzhNMsKBK6Wl0bQ3EhBuV09VFR2BiEC9sCS53UYPu6OVIUwpyfnVj75+nMtFqN06LvZ7Ob00=@vger.kernel.org X-Gm-Message-State: AOJu0Yxmqj3lMJOSxL/h5tL7lpFLnE47LVo7PqlzBgOCjq1T/gg/GqW6 yDzeUnzgwVTn/S1hInIq2IlphOx2mxUhLjEpc9J+HejhDo5D+DnBu8wY X-Gm-Gg: ASbGnctiBwJnPniGsKYDVn0zGToCfs/tut96A4bDyNPPVObX9In1H3ULe/ofiRPtcYY LSI50yclAtPKee/1pDdRiAjvtvSq4eCf5e5lziWlqB2Pze7aZ937ohufXust4g+N55ddeEk8ewS gLGE/++i5wm7x9dRKanBpByRm74QzuMadE761gMHt1/rmRXFL+5BniMvBskWaawe2ByuIdpTWHX b//mMCoj3vEaTWXSF5TGVko3gzZOfwDs+xnfx/NuoXKqfYot0iCWnj1xTNOrrxC2XJrwAAeYbv0 yzZncma6YFYYLmmLZ26qBjEtlQFm5nV42AVaBADEWidsif2dD0rfa6eKMTpE2yjeg2cUI1H8cAI +FeFEQ25YL2Uzgdl3+2lYG1eScyearR1l/3QRLB4= X-Google-Smtp-Source: AGHT+IEwXfOH3FNaIAS2a78UClizMEIMKgdGdRhw9w824FJtI+ggGZqCrs6PgMh0KumZibH7adUEmg== X-Received: by 2002:a05:600c:3e8f:b0:442:dc75:5625 with SMTP id 5b1f17b1804b1-4533ca468e9mr157629865e9.5.1750241594282; Wed, 18 Jun 2025 03:13:14 -0700 (PDT) Received: from igor-korotin-Precision-Tower-3620.airspan.com ([188.39.32.4]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4532e256b95sm207100275e9.30.2025.06.18.03.13.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Jun 2025 03:13:13 -0700 (PDT) Sender: Igor Korotin From: Igor Korotin To: ojeda@kernel.org, alex.gaynor@gmail.com, rafael@kernel.org, gregkh@linuxfoundation.org, linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org, linux-acpi@vger.kernel.org Cc: boqun.feng@gmail.com, gary@garyguo.net, bjorn3_gh@protonmail.com, benno.lossin@proton.me, a.hindborg@kernel.org, aliceryhl@google.com, tmgross@umich.edu, dakr@kernel.org, lenb@kernel.org, wedsonaf@gmail.com, viresh.kumar@linaro.org, alex.hung@amd.com, dingxiangfei2009@gmail.com Subject: [PATCH v7 2/9] samples: rust: platform: don't call as_ref() repeatedly Date: Wed, 18 Jun 2025 11:11:11 +0100 Message-ID: <20250618101111.3047980-1-igor.korotin.linux@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250618100221.3047133-1-igor.korotin.linux@gmail.com> References: <20250618100221.3047133-1-igor.korotin.linux@gmail.com> Precedence: bulk X-Mailing-List: linux-acpi@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Danilo Krummrich In SampleDriver::probe() don't call pdev.as_ref() repeatedly, instead introduce a dedicated &Device. Signed-off-by: Danilo Krummrich --- 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_driver_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 = pdev.as_ref(); + + dev_dbg!(dev, "Probe Rust Platform driver sample.\n"); if let Some(info) = info { - dev_info!(pdev.as_ref(), "Probed with info: '{}'.\n", info.0); + dev_info!(dev, "Probed with info: '{}'.\n", info.0); } - Self::properties_parse(pdev.as_ref())?; + Self::properties_parse(dev)?; let drvdata = KBox::new(Self { pdev: pdev.into() }, GFP_KERNEL)?; From patchwork Wed Jun 18 10:15:33 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Igor Korotin X-Patchwork-Id: 897556 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 2966027F16D; Wed, 18 Jun 2025 10:17:38 +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=1750241861; cv=none; b=tIIk1CLnOJujT5bujdmWTgN0TUgK5aZHdp+T29uKcB6ahjhzknxbUAJtPzpL2jtyo/z47Elvy/bIjL5+XnXdQ2ARXN9aEX7GL6ZuyoXyH0GzVEqgeBINKtzs6/4PamnZMZhlF5ODJcUTnekSz5br903AjT2j6WjyWtaf7VyzcRg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750241861; c=relaxed/simple; bh=o0tgbZ6l9N8xB1X8Omt0Kq66IINCXwZBCo1mV7j2XGA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=NMkCSqm2VFVUJHHbV3GOcFLSfKptpu++JlCl9DmzTT1AkcqOM2vyi7+0PBpC5t0G1kqz5g7gD/FtGaQ7N9hBA2At2xkycdxleVvObYN81SYihdAv+MCwJnMFqWg2hnWCgSG9CjNFd9J6bUf/spqXO2Rvh3htcuSOiaJKBEEfKPg= 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=d/cypbIE; 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="d/cypbIE" Received: by mail-wm1-f49.google.com with SMTP id 5b1f17b1804b1-451dbe494d6so85273735e9.1; Wed, 18 Jun 2025 03:17:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750241857; x=1750846657; 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=X3MCJ09iMYAJehaa7R4exb7fZmksRmxtphee/D+f4gE=; b=d/cypbIEMqZJV93dYpaSY4O9GNc2Lh1W/MICBd7+oq6X/GCuGDfB6+/FpcS6Sd9DYV JpFwLu6I/dubmuVnC2aBx56yOn4SDX/Nh3JoaiP+BaqmoE/vK1ASWJ7d/3+NFkPieRLE wqAQDoWbjxq/h7LcG9GAMpYImWCSWCrIYBi6eTSoLy5o86v7pkzUuenq8Mhq9EorCWJp 2Hthw6WqmlnI8DolBugcWLMY2txdlvs32JQdau2W3PQC6D+0ykv0j5AiZZsuNyhN9h5C XVEQ7ZZeOLiHx4ox1Fa3ogN+LqlzzyO85ylvFFOrNW7n9gdojibEO8BBc5xkQ/pgZQoi EcCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750241857; x=1750846657; 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=X3MCJ09iMYAJehaa7R4exb7fZmksRmxtphee/D+f4gE=; b=dOzvaQL0dFxMdmPM/EY2yRvR7J1l5IIFimRRJMq2ulNXrvkxiLyZUy+ArlNqgmEADu NExWHi0cMhJJ+3bpKoseoY/cGp8etpdIvHQsdAqj9BlK5Yp6Gi8ubPJc/NDVEmXuC4gG 0+ObzFHem6X/Q4Jbf7Gt6SItbe2DJJM2KKr4rbE32qjIJfoessryoc4xSI4cdyJl2g0k tIF4PdwrRVN94WfmojD0EDzw7yRqTgkHhSKKQM90+bD+OkPEFMnqlu4Hzf2fHg/kffJW 3yNrBu+tfRcEJxoo46PGJTYJ6SMt/EdUxli5BY5SNqUkdz1MBWxNby/qGujC6L3rBGQu IyNw== X-Forwarded-Encrypted: i=1; AJvYcCULwHClOf/XL+1pMzN2Xf3Aw01Jhwi+WUDqaplng/A4o0KR6fI/DDsNF0L6JNDF3axMaHgzdFM1kIl3svRX@vger.kernel.org, AJvYcCUYZiqYIIoCz2IeJMh4qQ9bRRNXAfvTFcBAtmHkJOM3C/+oBcqlDrx+mwNuTuQbYFsW19nrtMppremi@vger.kernel.org, AJvYcCWEPIF87Pb+6qQIrH7omSpH2xoNPg5+QFF5+tdu6DqjMtVliukA7C6gvQ9Z35s1cORJs4f2JD17yMnqdZ9v8x8=@vger.kernel.org X-Gm-Message-State: AOJu0YwLCWsWF1oNFTy88F0ySUj/r8A8RgpA5vcTNxiV+Ek+8KkKx1Yw 3FhyQY1veGtuCR9FZVzmvvuSYZaGCRrZC6QyR8jHT9cThN/SxMsToL9M X-Gm-Gg: ASbGnctSwv9j84Z5moy/7kdLXD62+Vx7PyUoMl2sKhxUJHAnO8LQBqNEXl83eKZHkgH QKd48nCz0NP76AXgIWgGlYoPavPXmg9v+vrC2oZevXIOjDenWDcM6hBtcqQZzSNoxa2xbOmjpFI jUr26XKBnqia40FUIDuMHaYz5Nlr+d/8nVJdItAkqoNoIjK8JZZzJbrhRgvYkSjp/CGrS+vG1b3 E9dtEGNXoj+sR+EF4AdRk0Yf3owH4mJezCCmx5LkcUUOu+piRGTvx+utaXFGwtHmyStXFbOtC94 3SsONESscNeqLJfUnoRrEwEWpJB8C0s0AVOxLUFGfOWgGL/Z/RBZJMl2HBDR7THRYeNr45Et1fr m3IIgX47RIxRS362moH2pp3K5b5w1SPzZkxE/ X-Google-Smtp-Source: AGHT+IHBSD5xgqVtLPW7Ie1ApLdXu1ylBvAlNyRg/m6dABbRKmGS4jcvbdLe12gs66fPRSQeQ+l9FQ== X-Received: by 2002:a05:6000:230e:b0:3a4:e740:cd72 with SMTP id ffacd0b85a97d-3a572396df6mr13827720f8f.13.1750241857173; Wed, 18 Jun 2025 03:17:37 -0700 (PDT) Received: from igor-korotin-Precision-Tower-3620.airspan.com ([188.39.32.4]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a568a54a36sm16731721f8f.15.2025.06.18.03.17.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Jun 2025 03:17:36 -0700 (PDT) Sender: Igor Korotin From: Igor Korotin To: ojeda@kernel.org, alex.gaynor@gmail.com, rafael@kernel.org, gregkh@linuxfoundation.org, linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org, linux-acpi@vger.kernel.org Cc: boqun.feng@gmail.com, gary@garyguo.net, bjorn3_gh@protonmail.com, benno.lossin@proton.me, a.hindborg@kernel.org, aliceryhl@google.com, tmgross@umich.edu, dakr@kernel.org, lenb@kernel.org, wedsonaf@gmail.com, viresh.kumar@linaro.org, alex.hung@amd.com, dingxiangfei2009@gmail.com Subject: [PATCH v7 4/9] rust: acpi: add `acpi::DeviceId` abstraction Date: Wed, 18 Jun 2025 11:15:33 +0100 Message-ID: <20250618101533.3048391-1-igor.korotin.linux@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250618100221.3047133-1-igor.korotin.linux@gmail.com> References: <20250618100221.3047133-1-igor.korotin.linux@gmail.com> Precedence: bulk X-Mailing-List: linux-acpi@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 `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 --- 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 9f724cd556f4..acd36c148479 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/ 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 = &'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 = bindings::acpi_device_id; + + const DRIVER_DATA_OFFSET: usize = core::mem::offset_of!(bindings::acpi_device_id, driver_data); + + fn index(&self) -> usize { + self.0.driver_data as _ + } +} + +impl DeviceId { + const ACPI_ID_LEN: usize = 16; + + /// Create a new device id from an ACPI 'id' string. + pub const fn new(id: &[u8; N]) -> Self { + build_assert!(N <= Self::ACPI_ID_LEN, "ID exceeds 16 bytes"); + // Replace with `bindings::acpi_device_id::default()` once stabilized for `const`. + // SAFETY: FFI type is valid to be zero-initialized. + let mut acpi: bindings::acpi_device_id = unsafe { core::mem::zeroed() }; + let mut i = 0; + while i < N { + acpi.id[i] = id[i]; + i += 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, $table_data: expr) => { + const $table_name: $crate::device_id::IdArray< + $crate::acpi::DeviceId, + $id_info_type, + { $table_data.len() }, + > = $crate::device_id::IdArray::new($table_data); + + $crate::module_device_table!("acpi", $module_table_name, $table_name); + }; +} 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 @@ pub use ffi; +pub mod acpi; pub mod alloc; #[cfg(CONFIG_AUXILIARY_BUS)] pub mod auxiliary; From patchwork Wed Jun 18 10:19:52 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Igor Korotin X-Patchwork-Id: 897555 Received: from mail-wr1-f44.google.com (mail-wr1-f44.google.com [209.85.221.44]) (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 CD6C62877FF; Wed, 18 Jun 2025 10:21:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750242120; cv=none; b=DZf0XWI5XZEHpZnbba5D2HAJhvATdsRQGe6C4GdG3rlwJ9TRJ6RtANwSnXCz/SJXwObYynHVwBLwOyqZSRwfXAuxR6MlL7EhzvmetgwR+zLTwfiV6a+1ovWL3tCuC6Nntqv4rKGgEz+sGJYiW1cqF2niAlEgEGCi8iJbzUqZ1J4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750242120; c=relaxed/simple; bh=1Hy3ujJXBqxV9lfXBO++FN2/fZmpMCZpJfkWT5aJ4iQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=dZYxZVDtpB43qkdmmqb9csnwSmuijimnaVDz/NG7/o8wSpWkxcqPo9OdCwioerTQ4rUgBlzGqPKcpqCnOSnl4033oFpFSdGep/6NEnHgjPT+cRD5SMROuLpElD+NjtG1bkMzEBy17N+ufKMFNHj9Dc9BVrvox6aMofomOt0CaLM= 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=cXB2kXbk; arc=none smtp.client-ip=209.85.221.44 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="cXB2kXbk" Received: by mail-wr1-f44.google.com with SMTP id ffacd0b85a97d-3a35c894313so7551132f8f.2; Wed, 18 Jun 2025 03:21:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750242116; x=1750846916; 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=cXB2kXbkuAy9hDfKDfZozzZfsEXtcUnC5DP7KWb5mDfLn8iFyvLx2qfoez9TMRevoo LXZ0HRUUBrP+z8uC0DJCrfBrBLWFmX1rzbtP7ZxPV99tPzLEwFAh/al/MwKBy6vb7g9N CZZjVbxoA4qZTzKrzRWBNZwWxk0ekKuau41orO6Lcd8v8jCEAQf6i5tYRFwZ41nDwBqf iExHvMaQ4iirdDJzPheE9Sj+5favfHkKUurh442+3h5qla/nw9HoWH3Dry8BB4eNS9bs zXPrpXcqWdQh8xDqvXnDK3BQVOnZobPuWOt77hqoi/ShOFY4dyAbaH4sKQjdI8zONoz3 OF/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750242116; x=1750846916; 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=hmkQtZGirV4abw1sCv5SMQ4lLWneYhxabsl7QJ00D99WtyE49qkIsLmM/7aepIcqFx uFSmbVBzAC3kskCt7DD8m/ZMPGmM8iClaWY6+iFj6rMEcnRtU/OJ+REFQO2cj7k0r9x3 UFnXQO24xpUDKtUijUJiOasmBYjqx3NZFfyq3aoUKjzESxnPdqQvAohCZfq7FuYow5Ht UQcOFwHYdxlZ8RyrEgybRjFVeDwZ4plsJjiI4H8+XNd3umeaLeaxQ/0CjBXAafsoTgMI 5oq9vC+SF8GgUytx84aE/fux4doZEOPLHB/ztvT76HKwsGg0Mb95UdJB2JtV9tTWyq1V bApw== X-Forwarded-Encrypted: i=1; AJvYcCVwGxHIAQ4mL2JWwaj+OsVs0fmAGJ7FHGOCGXPNJvLC21/33NivPF2q8bok1aRLcx+Rrx8DH/hNu6cL@vger.kernel.org, AJvYcCW+uPLT9OvPbQ711ZUGk5IObIoAG7NLEPsMPy/CeqhWAkqxNRcdzQ7JXgkjabcF03xundhPQPaGff0TdMoN@vger.kernel.org, AJvYcCX1+6igHnUsyFSLaG6qHAxpTpAhzeLlzAGNynF+OQbS0M6CKZc5w4VeKC/b4Y1oa7IgVcEmkYzAGZv8rFEgkCw=@vger.kernel.org X-Gm-Message-State: AOJu0YzP//yJ+4chSzvc+KrZQN5NaV68D4/gG9Kor2J7lNm0ef3kvCOt z3QiSGwZFiLRbvD/qnwyvsE7+JhYfsPbj6USYxV5izmWP/Lq4WYbgrOm X-Gm-Gg: ASbGncuc4grRK8U/xC4A5qhAs8UuWq5HuHKgBUSrbxOUjw42gsEDJgYmyulxpT5rlZy YijuTPoeLxyT4GZpM4D03tOHz81fc5d61AaxdMN+/TU3aE3xDQOiFMpkourdbmYrqXV+E8CFOan Ddz2LC1h/cyImgl30wt3nJeUNWjhB94ymFvZD8LDwEhS6g2w+Ga3Hb0Mn6OjdSvIuR/eUYrlT2m /hH6nwIuH2FakFwlJp+o2gbEVR/TCoLZrNgy3EiJfmmP4rJbJCq42+D86f0C039ESUaVNX3vqUG XSmmjBU05rNMCTocYRtOjK7uaCtpP+NtitqGGY7BAFkTRjI6MPOy1soHGzjn8y++hOiPnV3qlws WwlhMog0hDYUWxg1IPt3iLISJZvhVOpVGh05c X-Google-Smtp-Source: AGHT+IHTcdjTyyUyU7t1sq6t+9KngpxfIL2u1E+Zj8SLI9gfO4QlomLwU83Tc/eX4WSsq1bROLC11A== X-Received: by 2002:a05:6000:1acb:b0:3a4:f038:af76 with SMTP id ffacd0b85a97d-3a572e886ddmr14451774f8f.53.1750242115844; Wed, 18 Jun 2025 03:21:55 -0700 (PDT) Received: from igor-korotin-Precision-Tower-3620.airspan.com ([188.39.32.4]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a568a53f79sm16320729f8f.4.2025.06.18.03.21.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Jun 2025 03:21:55 -0700 (PDT) Sender: Igor Korotin From: Igor Korotin To: ojeda@kernel.org, alex.gaynor@gmail.com, rafael@kernel.org, gregkh@linuxfoundation.org, linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org, linux-acpi@vger.kernel.org Cc: boqun.feng@gmail.com, gary@garyguo.net, bjorn3_gh@protonmail.com, benno.lossin@proton.me, a.hindborg@kernel.org, aliceryhl@google.com, tmgross@umich.edu, dakr@kernel.org, lenb@kernel.org, wedsonaf@gmail.com, viresh.kumar@linaro.org, alex.hung@amd.com, dingxiangfei2009@gmail.com Subject: [PATCH v7 6/9] rust: driver: Add ACPI id table support to Adapter trait Date: Wed, 18 Jun 2025 11:19:52 +0100 Message-ID: <20250618101952.3048902-1-igor.korotin.linux@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250618100221.3047133-1-igor.korotin.linux@gmail.com> References: <20250618100221.3047133-1-igor.korotin.linux@gmail.com> Precedence: bulk X-Mailing-List: linux-acpi@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 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_helper.h index bc494745f67b..dfb2dd500ef6 100644 --- a/rust/bindings/bindings_helper.h +++ b/rust/bindings/bindings_helper.h @@ -28,6 +28,7 @@ */ #include +#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. 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, ThisModule}; use core::pin::Pin; use pin_init::{pin_data, pinned_drop, PinInit}; @@ -141,6 +141,40 @@ pub trait Adapter { /// The type holding driver private data about each device id supported by the driver. type IdInfo: 'static; + /// 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 in the [`acpi::IdTable`]. + fn acpi_id_info(dev: &device::Device) -> Option<&'static Self::IdInfo> { + #[cfg(not(CONFIG_ACPI))] + { + let _ = dev; + return None; + } + + #[cfg(CONFIG_ACPI)] + { + let table = 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 = unsafe { bindings::acpi_match_device(table.as_ptr(), dev.as_raw()) }; + + if raw_id.is_null() { + None + } else { + // SAFETY: `DeviceId` is a `#[repr(transparent)` wrapper of `struct of_device_id` and + // does not add additional invariants, so it's safe to transmute. + let id = unsafe { &*raw_id.cast::() }; + + Some(table.info(::index(id))) + } + } + } + /// The [`of::IdTable`] of the corresponding driver. fn of_id_table() -> Option>; @@ -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 = Self::acpi_id_info(dev); + if id.is_some() { + return id; + } + let id = 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/platform_device.h) 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 + } } /// Declares a kernel module that exposes a single platform driver. From patchwork Wed Jun 18 10:24:34 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Igor Korotin X-Patchwork-Id: 897554 Received: from mail-wr1-f48.google.com (mail-wr1-f48.google.com [209.85.221.48]) (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 3783C288C25; Wed, 18 Jun 2025 10:26:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750242400; cv=none; b=div7dbqi2MwAkQZO7G+fpgsVyKwCVPtBOMe+t1A6pH//ff/+dpoMRTuh8pSW19RF/0AF2+0vgUDAbMnmEUcmE+eeTmaILdNq4Cn1HoFsY8T4oObDIT3/A/+OtRo8n75EuDWQAXQudPXIgK2aEGxYdvDkszRLEcVpVFKtsV4BZVI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750242400; c=relaxed/simple; bh=fCZg+qa6/P+Asbd0KRfxqaW80M7dwYJ1XuU8KBHp+rI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=NVxmcoom04o7qeZbaolkr67REZ0NsV+DH2oQiBZPBQ+SizxP/07s1sMgsOTIa4sqwWY1hfrgQ8x4hIAMYYb0p4RRnm+LRUl9K5/EuOhp40ML717q9tmIwM1Jj9O5uIU+zAcib8FLzV1NOlcUsnTDVI0ppDGONK2IuHszs7jiJhM= 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=OQbwelzu; arc=none smtp.client-ip=209.85.221.48 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="OQbwelzu" Received: by mail-wr1-f48.google.com with SMTP id ffacd0b85a97d-3a5257748e1so4859615f8f.2; Wed, 18 Jun 2025 03:26:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750242396; x=1750847196; 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=OQbwelzuFV6htrWm8OUkMzdTM1PH5HTFnjhH5V+Uflf1Z6Vwr7i88XOo874bO0Oeyb cyN2jJok7mGUHprnWFbWflDYRb8tzhl6aHU+VlAPkXk74T5nEsV+AIRwSpRpPTTQU8Yl xs4GF8de0zAE5+iJ8O6SxRdRGjZu/QcZPzQopwzdPWHegMSgtYB0lF+JFUzOJjioX/Ol 1IwLirer8by/6M85I7wwxze9sA5/+OdLaaY44dgC+At8FFEdEM5Bx9eIM5OpsVLrpehd 7B2TXID9JlSJye6oIoJ1jJuxol5JDad7HA6K8Cq6ZkpED3hZjHXxah4c7+yrxZGjQ1mU kQMw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750242396; x=1750847196; 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=kF2dDvWFYQRZUK6kO9VnmG8H54szA4Y1UTMpo/qy5ObQ0I4sR+JwVKoblhYa+Z8vjo 63NWR5d55MRfetEcS+/0PGSanLAIUDm0w1uIVwAnvf/MptyENWDREwKzL66sr8KoOBss KsYQLzLEL6DMYc2pc7cAbk90dji4oAJIpsvb6gwwLdHVlIAh3FNAXD19KmYVPxCbW+f3 LXVYTh3sXmmuce886I1Q/QG7IzjldT0k4cLp7HhBd9WKvBep1y3BKGUPEgXJh1m87s+L D4HSdu70wkVhxB0iBGpXZM0bGhkqrqT+106zmqQaVepzUDbV54bt5nJkTccUbjubzHr5 8IdQ== X-Forwarded-Encrypted: i=1; AJvYcCWh08koQ8tFYUolQYx8w2l1kxjOg8WXd/t/7iqNncL+ETDPEY4E+g4cR2Szq1dxZHNUgA1G2oMIAa5um5N/@vger.kernel.org, AJvYcCXFLKjbe0BjHX89py/lMN4750Oz63NBAhyy4QIcNB7jgWxisoyb4Sc1DnFuOpqeRMOhQav6tkteVx2S@vger.kernel.org, AJvYcCXMsdCzrgM30stsSpYqdNeNfyZHY4+huimSeV75JVhk5kdxD8A2DMdebaZdW02F6Ta0zXoGwgY+H1R0COHrrBU=@vger.kernel.org X-Gm-Message-State: AOJu0YzD4ueTMyZCBKQMx25pKS4QAZuMkixyLUJArAd4frtZy1J4lJjW 8ZgZ/XfeYmuplNGgGg7fqgfS+FEscFKO9PpwyFrArasgKE8EkrwNgjSs X-Gm-Gg: ASbGncsjBnw16TTO5syV0OLaWFUSbBrMOwOcBXlqtF6413n/0e9eFGXM5Z03ETezOX7 TsRJ970eR/MpWPPTy/WSGehD4jcVEai92Nhut/Ni+MOiBxnDoO0PYoR35HVzlZ8phgyU50rCjXX 0zumnaO5gwBqQYJfpi/brSJQ23gZlqjJS+6+HLI+f/TuNphDYr+fI5AoiU/me9bC4s1fD5A4Utr iiTaWZlThqBjHsKSfMwRlRPBLUakFbNMX+6TrajohOOu2RZZZIVY4RlOUF65l8uzLQgW8VXuo5/ hCfEJ8vn0cwRmiOWrBCewiMV2ffAQhH/WOURlbKD7jMlfDYkaC5TmNTEUCnCufpBY5SH1PRKVmT /gwye4UNE6os50L1Vc52XCT4w7GZufvF9iK2l X-Google-Smtp-Source: AGHT+IHb5FsVZYv2LilMOYqaP1j1L8oMI+dOxYRmokRF04f8+Qm6HB/QZ6y9DdDo5scMmE+j6mIm7Q== X-Received: by 2002:a05:6000:4202:b0:3a4:dfaa:df8d with SMTP id ffacd0b85a97d-3a572367c45mr15194880f8f.9.1750242396332; Wed, 18 Jun 2025 03:26:36 -0700 (PDT) Received: from igor-korotin-Precision-Tower-3620.airspan.com ([188.39.32.4]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4532e2354fbsm199608085e9.15.2025.06.18.03.26.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Jun 2025 03:26:36 -0700 (PDT) Sender: Igor Korotin From: Igor Korotin To: ojeda@kernel.org, alex.gaynor@gmail.com, rafael@kernel.org, gregkh@linuxfoundation.org, linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org, linux-acpi@vger.kernel.org Cc: boqun.feng@gmail.com, gary@garyguo.net, bjorn3_gh@protonmail.com, benno.lossin@proton.me, a.hindborg@kernel.org, aliceryhl@google.com, tmgross@umich.edu, dakr@kernel.org, lenb@kernel.org, wedsonaf@gmail.com, viresh.kumar@linaro.org, alex.hung@amd.com, dingxiangfei2009@gmail.com Subject: [PATCH v7 8/9] rust: platform: Add ACPI match table support to `Driver` trait Date: Wed, 18 Jun 2025 11:24:34 +0100 Message-ID: <20250618102434.3049816-1-igor.korotin.linux@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250618100221.3047133-1-igor.korotin.linux@gmail.com> References: <20250618100221.3047133-1-igor.korotin.linux@gmail.com> Precedence: bulk X-Mailing-List: linux-acpi@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 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 => core::ptr::null(), }; + let acpi_table = match T::ACPI_ID_TABLE { + Some(table) => table.as_ptr(), + None => core::ptr::null(), + }; + // SAFETY: It's safe to set the fields of `struct platform_driver` on initialization. unsafe { (*pdrv.get()).driver.name = name.as_char_ptr(); (*pdrv.get()).probe = Some(Self::probe_callback); (*pdrv.get()).remove = Some(Self::remove_callback); (*pdrv.get()).driver.of_match_table = of_table; + (*pdrv.get()).driver.acpi_match_table = acpi_table; } // SAFETY: `pdrv` is guaranteed to be a valid `RegType`. @@ -96,7 +102,7 @@ fn of_id_table() -> Option> { } fn acpi_id_table() -> Option> { - None + T::ACPI_ID_TABLE } } @@ -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 = (); /// const OF_ID_TABLE: Option> = Some(&OF_TABLE); +/// const ACPI_ID_TABLE: Option> = 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> = None; + /// The table of ACPI device ids supported by the driver. + const ACPI_ID_TABLE: Option> = None; + /// Platform driver probe. /// /// Called when a new platform device is added or discovered.