def testFdtCellsToCpu(self): val = self.node.props['intarray'].value self.assertEqual(0, fdt_util.fdt_cells_to_cpu(val, 0)) self.assertEqual(2, fdt_util.fdt_cells_to_cpu(val, 1)) dtb2 = fdt.FdtScan('tools/dtoc/dtoc_test_addr64.dts') node2 = dtb2.GetNode('/test1') val = node2.props['reg'].value self.assertEqual(0x1234, fdt_util.fdt_cells_to_cpu(val, 2))
def scan_reg_sizes(self): """Scan for 64-bit 'reg' properties and update the values This finds 'reg' properties with 64-bit data and converts the value to an array of 64-values. This allows it to be output in a way that the C code can read. """ for node in self._valid_nodes: reg = node.props.get('reg') if not reg: continue na, ns = self.get_num_cells(node) total = na + ns if reg.type != fdt.TYPE_INT: raise ValueError("Node '%s' reg property is not an int" % node.name) if len(reg.value) % total: raise ValueError( "Node '%s' reg property has %d cells " 'which is not a multiple of na + ns = %d + %d)' % (node.name, len(reg.value), na, ns)) reg.na = na reg.ns = ns if na != 1 or ns != 1: reg.type = fdt.TYPE_INT64 i = 0 new_value = [] val = reg.value if not isinstance(val, list): val = [val] while i < len(val): addr = fdt_util.fdt_cells_to_cpu(val[i:], reg.na) i += na size = fdt_util.fdt_cells_to_cpu(val[i:], reg.ns) i += ns new_value += [addr, size] reg.value = new_value
def scan_reg_sizes(self): """Scan for 64-bit 'reg' properties and update the values This finds 'reg' properties with 64-bit data and converts the value to an array of 64-values. This allows it to be output in a way that the C code can read. """ for node in self._valid_nodes: reg = node.props.get('reg') if not reg: continue na, ns = self.get_num_cells(node) total = na + ns if reg.type != fdt.TYPE_INT: raise ValueError("Node '%s' reg property is not an int" % node.name) if len(reg.value) % total: raise ValueError("Node '%s' reg property has %d cells " 'which is not a multiple of na + ns = %d + %d)' % (node.name, len(reg.value), na, ns)) reg.na = na reg.ns = ns if na != 1 or ns != 1: reg.type = fdt.TYPE_INT64 i = 0 new_value = [] val = reg.value if not isinstance(val, list): val = [val] while i < len(val): addr = fdt_util.fdt_cells_to_cpu(val[i:], reg.na) i += na size = fdt_util.fdt_cells_to_cpu(val[i:], reg.ns) i += ns new_value += [addr, size] reg.value = new_value