m1n1.adt: Add to_bus_addr() method

So that one knows what to put in reg properties.

Signed-off-by: Martin Povišer <povik@cutebit.org>
This commit is contained in:
Martin Povišer 2022-07-31 16:51:09 +02:00 committed by Hector Martin
parent 6f460b1f6a
commit d94f918433

View file

@ -601,6 +601,23 @@ class ADTNode:
return addr
def to_bus_addr(self, addr):
node = self._parent
descend = []
while node is not None:
if "ranges" not in node._properties:
break
descend.append(node)
node = node._parent
for node in reversed(descend):
for r in node.ranges:
if r.parent_addr <= addr < (r.parent_addr + r.size):
addr = addr - r.parent_addr + r.bus_addr
break
return addr
def tostruct(self):
properties = []
for k,v in itertools.chain(self._properties.items()):