Skip to content

Commit b5b6e2d

Browse files
committed
rust: of: Add reserved_mem_region_to_resource_byname()
Creates Resource from a reserved memory region. Depends on commit f4fcfdd ("of: reserved_mem: Add functions to parse "memory-region"") from v6.16-rc1. Signed-off-by: Janne Grunau <j@jannau.net>
1 parent 6ac08f2 commit b5b6e2d

2 files changed

Lines changed: 20 additions & 0 deletions

File tree

rust/bindings/bindings_helper.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
#include <linux/of.h>
5757
#include <linux/of_address.h>
5858
#include <linux/of_device.h>
59+
#include <linux/of_reserved_mem.h>
5960
#include <linux/pci.h>
6061
#include <linux/phy.h>
6162
#include <linux/pid_namespace.h>

rust/kernel/of.rs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ use crate::{bindings, device_id::RawDeviceId, prelude::*};
1111
use core::marker::PhantomData;
1212
use core::num::NonZeroU32;
1313

14+
use crate::error::to_result;
15+
use crate::io::resource::Resource;
16+
1417
/// IdTable type for OF drivers.
1518
pub type IdTable<T> = &'static dyn kernel::device_id::IdTable<DeviceId, T>;
1619

@@ -211,6 +214,22 @@ impl Node {
211214
}
212215
}
213216

217+
/// Get a reserved memory region as a resource
218+
pub fn reserved_mem_region_to_resource_byname(&self, name: &CStr) -> Result<Resource> {
219+
let res = Resource::zeroed();
220+
// SAFETY: This function is safe to call as long as the arguments are valid pointers.
221+
let ret = unsafe {
222+
bindings::of_reserved_mem_region_to_resource_byname(
223+
self.raw_node,
224+
name.as_char_ptr(),
225+
res.as_raw(),
226+
)
227+
};
228+
to_result(ret)?;
229+
230+
Ok(res)
231+
}
232+
214233
#[allow(unused_variables)]
215234
/// Look up a node property by name, returning a `Property` object if found.
216235
pub fn find_property(&self, propname: &CStr) -> Option<Property<'_>> {

0 commit comments

Comments
 (0)