summaryrefslogtreecommitdiff
path: root/rust/kernel/i2c.rs
diff options
context:
space:
mode:
authorGary Guo <gary@garyguo.net>2026-06-29 13:39:43 +0100
committerDanilo Krummrich <dakr@kernel.org>2026-07-30 22:50:15 +0200
commit2c5d17cdc4e9783e3e95d4f71cf4d3e73d113d4e (patch)
tree77dfc950e991772464401101268330c905757e03 /rust/kernel/i2c.rs
parent0b76335e8f321a59c32a5f52759f635d2e5db5c8 (diff)
downloadlinux-next-2c5d17cdc4e9783e3e95d4f71cf4d3e73d113d4e.tar.gz
linux-next-2c5d17cdc4e9783e3e95d4f71cf4d3e73d113d4e.zip
rust: driver: remove open-coded matching logic
With device ID info now including pointers instead of indices, the open-coded ACPI/OF matching is no longer needed and can be replaced with `device_get_match_data`. With the removal of open-coded matching, the exposed functions and helpers are also removed; this effectively reverts most of commit 2690d071584e ("rust: ACPI: fix missing match data for PRP0001"). Signed-off-by: Gary Guo <gary@garyguo.net> Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Link: https://patch.msgid.link/20260629-id_info-v2-9-56fccbe9c5ef@garyguo.net [ Consider the serdev code merged in the meantime. - Danilo ] Signed-off-by: Danilo Krummrich <dakr@kernel.org>
Diffstat (limited to 'rust/kernel/i2c.rs')
-rw-r--r--rust/kernel/i2c.rs6
1 files changed, 4 insertions, 2 deletions
diff --git a/rust/kernel/i2c.rs b/rust/kernel/i2c.rs
index 31f2cfe6be31..2d2191164e25 100644
--- a/rust/kernel/i2c.rs
+++ b/rust/kernel/i2c.rs
@@ -149,8 +149,10 @@ impl<T: Driver> Adapter<T> {
// INVARIANT: `idev` is valid for the duration of `probe_callback()`.
let idev = unsafe { &*idev.cast::<I2cClient<device::CoreInternal<'_>>>() };
- let info =
- Self::i2c_id_info(idev).or_else(|| <Self as driver::Adapter>::id_info(idev.as_ref()));
+ let info = Self::i2c_id_info(idev).or_else(|| {
+ // SAFETY: `idev` matched data is of type `Self::IdInfo`.
+ unsafe { <Self as driver::Adapter>::id_info(idev.as_ref()) }
+ });
from_result(|| {
let data = T::probe(idev, info);