1#!/usr/bin/env python3
2
3import argparse
4from defusedxml.lxml import parse
5
6def mmio_regions(etree):
7    ret = []
8
9    resources = etree.xpath("//resources/mmio")
10    for res in resources:
11        base = res.get("min")
12        top = res.get("max")
13        dev = res.getparent().getparent()
14        obj = dev.get("object")
15        ret.append((obj, int(base, base=16), int(top, base=16)))
16
17    return sorted(ret, key=lambda x:(x[1], x[2]))
18
19if __name__ == "__main__":
20    parser = argparse.ArgumentParser()
21    parser.add_argument("file", help="board XML file")
22    args = parser.parse_args()
23
24    etree = parse(args.file)
25    regions = mmio_regions(etree)
26    for region in regions:
27        print("%-4s 0x%08x 0x%08x" % (region[0], region[1], region[2]))
28