Skip to content

Commit 1f05e14

Browse files
committed
When there are multiple nodes that named memory present,
it can't get the memory info,traverse all nodes.
1 parent 16bf9d2 commit 1f05e14

File tree

1 file changed

+14
-9
lines changed

1 file changed

+14
-9
lines changed

devicetree/devicetree.cpp

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -125,16 +125,21 @@ std::vector<DdrRange> Devicetree::get_ddr_size(){
125125
std::vector<std::shared_ptr<device_node>> nodes = find_node_by_name("memory");
126126
if (nodes.size() == 0)
127127
return res;
128-
std::shared_ptr<Property> prop = getprop(nodes[0]->addr,"device_type");
129-
std::string tempstr = (char *)prop->value;
130-
if (tempstr != "memory"){
131-
return res;
128+
for (auto node: nodes){
129+
std::shared_ptr<Property> prop = getprop(node->addr,"device_type");
130+
if (prop == nullptr){
131+
continue;
132+
}
133+
std::string tempstr = (char *)prop->value;
134+
if (tempstr != "memory"){
135+
continue;
136+
}
137+
// read property of reg
138+
// <| start | | size |
139+
// reg = <0x0 0x40000000 0x0 0x3ee00000 0x0 0x80000000 0x0 0x40000000>
140+
prop = getprop(node->addr,"reg");
141+
res = parse_memory_regs(prop);
132142
}
133-
// read property of reg
134-
// <| start | | size |
135-
// reg = <0x0 0x40000000 0x0 0x3ee00000 0x0 0x80000000 0x0 0x40000000>
136-
prop = getprop(nodes[0]->addr,"reg");
137-
res = parse_memory_regs(prop);
138143
return res;
139144
}
140145

0 commit comments

Comments
 (0)