python: FdtState using interrupt-cells
authorGiacomo Travaglini <giacomo.travaglini@arm.com>
Fri, 9 Aug 2019 21:21:34 +0000 (22:21 +0100)
committerGiacomo Travaglini <giacomo.travaglini@arm.com>
Mon, 12 Aug 2019 18:17:45 +0000 (18:17 +0000)
Change-Id: I37813748f518b442d2b53c2bc4f381edb2e26146
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20050
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>
src/python/m5/util/fdthelper.py

index c8760508c0fbbdefad34d56f3c9be657f896c47d..27d6f844c296d88ff7beca6c8ecf8bb7a7bc2475 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (c) 2016 ARM Limited
+# Copyright (c) 2016,2019 ARM Limited
 # All rights reserved.
 #
 # The license below extends only to copyright in the software and shall
@@ -87,13 +87,14 @@ class FdtState(object):
     phandle_counter = 0
     phandles = dict()
 
-    def __init__(self, addr_cells, size_cells, cpu_cells):
+    def __init__(self, **kwargs):
         """Instantiate values of this state. The state can only be initialized
         once."""
 
-        self.addr_cells = addr_cells
-        self.size_cells = size_cells
-        self.cpu_cells = cpu_cells
+        self.addr_cells = kwargs.pop('addr_cells', 0)
+        self.size_cells = kwargs.pop('size_cells', 0)
+        self.cpu_cells = kwargs.pop('cpu_cells', 0)
+        self.interrupt_cells = kwargs.pop('interrupt_cells', 0)
 
     def phandle(self, obj):
         """Return a unique phandle number for a key. The key can be a SimObject
@@ -142,6 +143,11 @@ class FdtState(object):
         state."""
         return self.int_to_cells(size, self.size_cells)
 
+    def interruptCells(self, interrupt):
+        """Format an integer type according to the interrupt_cells value
+        of this state."""
+        return self.int_to_cells(interrupt, self.interrupt_cells)
+
     def addrCellsProperty(self):
         """Return an #address-cells property with the value of this state."""
         return FdtPropertyWords("#address-cells", self.addr_cells)
@@ -155,6 +161,12 @@ class FdtState(object):
         of this state."""
         return FdtPropertyWords("#address-cells", self.cpu_cells)
 
+    def interruptCellsProperty(self):
+        """Return an #interrupt-cells property for cpu nodes with the value
+        of this state."""
+        return FdtPropertyWords("#interrupt-cells", self.interrupt_cells)
+
+
 class FdtNop(pyfdt.FdtNop):
     """Create an empty node."""
     pass