mirror of https://github.com/torvalds/linux.git
samples: rust: platform: Add property child and reference args examples
Add some example usage of the device property methods for reading DT/ACPI/swnode child nodes and reference args. Signed-off-by: Remo Senekowitsch <remo@buenzli.dev> Link: https://lore.kernel.org/r/20250616154511.1862909-4-remo@buenzli.dev [ Convert 'child@{0,1}' to 'child-{0,1}'; skip child nodes without 'compatible' property in of_unittest_platform_populate() as proposed by Rob Herring. - Danilo] Signed-off-by: Danilo Krummrich <dakr@kernel.org>
This commit is contained in:
parent
c3e05bd15e
commit
c79cbde9b7
|
|
@ -40,6 +40,13 @@ test-device@2 {
|
|||
|
||||
test,u32-prop = <0xdeadbeef>;
|
||||
test,i16-array = /bits/ 16 <1 2 (-3) (-4)>;
|
||||
|
||||
ref_child_0: child-0 {
|
||||
test,ref-arg = <&ref_child_1 0x20 0x32>;
|
||||
};
|
||||
ref_child_1: child-1 {
|
||||
test,ref-arg = <&ref_child_0 0x10 0x64>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -1856,6 +1856,8 @@ static void __init of_unittest_platform_populate(void)
|
|||
of_platform_populate(np, match, NULL, &test_bus->dev);
|
||||
for_each_child_of_node(np, child) {
|
||||
for_each_child_of_node(child, grandchild) {
|
||||
if (!of_property_present(grandchild, "compatible"))
|
||||
continue;
|
||||
pdev = of_find_device_by_node(grandchild);
|
||||
unittest(pdev,
|
||||
"Could not create device for node '%pOFn'\n",
|
||||
|
|
|
|||
|
|
@ -4,7 +4,11 @@
|
|||
|
||||
use kernel::{
|
||||
c_str,
|
||||
device::{self, Core},
|
||||
device::{
|
||||
self,
|
||||
property::{FwNodeReferenceArgs, NArgs},
|
||||
Core,
|
||||
},
|
||||
of, platform,
|
||||
prelude::*,
|
||||
str::CString,
|
||||
|
|
@ -91,6 +95,13 @@ fn properties_parse(dev: &device::Device) -> Result {
|
|||
let prop: KVec<i16> = fwnode.property_read_array_vec(name, 4)?.required_by(dev)?;
|
||||
dev_info!(dev, "'{name}'='{prop:?}' (KVec)\n");
|
||||
|
||||
for child in fwnode.children() {
|
||||
let name = c_str!("test,ref-arg");
|
||||
let nargs = NArgs::N(2);
|
||||
let prop: FwNodeReferenceArgs = child.property_get_reference_args(name, nargs, 0)?;
|
||||
dev_info!(dev, "'{name}'='{prop:?}'\n");
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue