rust: device: Move property_present() to FwNode
The new FwNode abstraction will be used for accessing all device properties. It would be possible to duplicate the methods on the device itself, but since some of the methods on Device would have different type sigatures as the ones on FwNode, this would only lead to inconsistency and confusion. For this reason, property_present is removed from Device and existing users are updated. Acked-by: Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by: Remo Senekowitsch <remo@buenzli.dev> Link: https://lore.kernel.org/r/20250611102908.212514-4-remo@buenzli.dev Signed-off-by: Danilo Krummrich <dakr@kernel.org>
This commit is contained in:
committed by
Danilo Krummrich
parent
658f23b592
commit
d3393e8450
@@ -20,7 +20,8 @@ use kernel::{
|
||||
/// Finds exact supply name from the OF node.
|
||||
fn find_supply_name_exact(dev: &Device, name: &str) -> Option<CString> {
|
||||
let prop_name = CString::try_from_fmt(fmt!("{}-supply", name)).ok()?;
|
||||
dev.property_present(&prop_name)
|
||||
dev.fwnode()?
|
||||
.property_present(&prop_name)
|
||||
.then(|| CString::try_from_fmt(fmt!("{name}")).ok())
|
||||
.flatten()
|
||||
}
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
|
||||
use crate::{
|
||||
bindings,
|
||||
str::CStr,
|
||||
types::{ARef, Opaque},
|
||||
};
|
||||
use core::{fmt, marker::PhantomData, ptr};
|
||||
@@ -219,12 +218,6 @@ impl<Ctx: DeviceContext> Device<Ctx> {
|
||||
// defined as a `#[repr(transparent)]` wrapper around `fwnode_handle`.
|
||||
Some(unsafe { &*fwnode_handle.cast() })
|
||||
}
|
||||
|
||||
/// Checks if property is present or not.
|
||||
pub fn property_present(&self, name: &CStr) -> bool {
|
||||
// SAFETY: By the invariant of `CStr`, `name` is null-terminated.
|
||||
unsafe { bindings::device_property_present(self.as_raw().cast_const(), name.as_char_ptr()) }
|
||||
}
|
||||
}
|
||||
|
||||
// SAFETY: `Device` is a transparent wrapper of a type that doesn't depend on `Device`'s generic
|
||||
|
||||
@@ -8,6 +8,7 @@ use core::ptr;
|
||||
|
||||
use crate::{
|
||||
bindings,
|
||||
str::CStr,
|
||||
types::{ARef, Opaque},
|
||||
};
|
||||
|
||||
@@ -56,6 +57,12 @@ impl FwNode {
|
||||
pub(crate) fn as_raw(&self) -> *mut bindings::fwnode_handle {
|
||||
self.0.get()
|
||||
}
|
||||
|
||||
/// Checks if property is present or not.
|
||||
pub fn property_present(&self, name: &CStr) -> bool {
|
||||
// SAFETY: By the invariant of `CStr`, `name` is null-terminated.
|
||||
unsafe { bindings::fwnode_property_present(self.as_raw().cast_const(), name.as_char_ptr()) }
|
||||
}
|
||||
}
|
||||
|
||||
// SAFETY: Instances of `FwNode` are always reference-counted.
|
||||
|
||||
Reference in New Issue
Block a user