def run(tree: fdt.FdtParser, hardware: rule.HardwareYaml, config: config.Config, args: argparse.Namespace): devices = tree.get_elfloader_devices() cpu_info = get_elfloader_cpus(tree, devices) max_reg = 1 device_info = [] for dev in devices: obj = { 'compat': hardware.get_matched_compatible(dev), 'path': dev.path, 'regions': dev.get_regions() } max_reg = max(len(obj['regions']), max_reg) device_info.append(obj) device_info.sort(key=lambda a: a['compat']) template = Environment(loader=BaseLoader, trim_blocks=True, lstrip_blocks=True).from_string(HEADER_TEMPLATE) template_args = dict( builtins.__dict__, **{ 'cpus': cpu_info, 'devices': device_info, 'max_reg': max_reg, 'uses_psci': any([c['enable_method'] == 'psci' for c in cpu_info]) }) data = template.render(template_args) args.elfloader_out.write(data) args.elfloader_out.close()
def run(tree: FdtParser, hw_yaml: HardwareYaml, config: Config, args: argparse.Namespace): if not args.compat_strings_out: raise ValueError( 'You need to specify a compat-strings-out to use compat strings output' ) chosen = tree.get_kernel_devices() compatibles = set() for dev in chosen: compatibles.add(hw_yaml.get_matched_compatible(dev)) args.compat_strings_out.write(';'.join(sorted(compatibles)) + ';\n') args.compat_strings_out.close()