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