Giacomo Travaglini has submitted this change. ( https://gem5-review.googlesource.com/c/public/gem5/+/20053 )

Change subject: dev-arm: Enable DTB autogeneration in GICv3
......................................................................

dev-arm: Enable DTB autogeneration in GICv3

Change-Id: I539ae5ae74bc6f42f291441594a0d14c98e687f4
Signed-off-by: Giacomo Travaglini <giacomo.travagl...@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandb...@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20053
Maintainer: Andreas Sandberg <andreas.sandb...@arm.com>
Tested-by: kokoro <noreply+kok...@google.com>
---
M src/dev/arm/Gic.py
1 file changed, 37 insertions(+), 1 deletion(-)

Approvals:
  Andreas Sandberg: Looks good to me, approved; Looks good to me, approved
  kokoro: Regressions pass



diff --git a/src/dev/arm/Gic.py b/src/dev/arm/Gic.py
index b431a6e..d2e2ace 100644
--- a/src/dev/arm/Gic.py
+++ b/src/dev/arm/Gic.py
@@ -192,7 +192,7 @@
     cxx_header = "dev/arm/gic_v3.hh"

     # Used for DTB autogeneration
-    _state = FdtState(addr_cells=2, interrupt_cells=3)
+    _state = FdtState(addr_cells=2, size_cells=2, interrupt_cells=3)

     its = Param.Gicv3Its(Gicv3Its(), "GICv3 Interrupt Translation Service")

@@ -214,3 +214,39 @@
         "redistributors")

     gicv4 = Param.Bool(True, "GICv4 extension available")
+
+    def interruptCells(self, int_type, int_num, int_flag):
+        """
+        Interupt cells generation helper:
+        Following specifications described in
+
+ Documentation/devicetree/bindings/interrupt-controller/arm,gic-v3.txt
+        """
+        prop = self._state.interruptCells(0)
+        assert len(prop) >= 3
+        prop[0] = int_type
+        prop[1] = int_num
+        prop[2] = int_flag
+        return prop
+
+    def generateDeviceTree(self, state):
+        node = FdtNode("interrupt-controller")
+        node.appendCompatible(["arm,gic-v3"])
+        node.append(self._state.interruptCellsProperty())
+        node.append(self._state.addrCellsProperty())
+        node.append(self._state.sizeCellsProperty())
+        node.append(FdtProperty("interrupt-controller"))
+
+        regs = (
+            state.addrCells(self.dist_addr) +
+            state.sizeCells(0x10000) +
+            state.addrCells(self.redist_addr) +
+            state.sizeCells(0x2000000) )
+
+        node.append(FdtPropertyWords("reg", regs))
+        node.append(FdtPropertyWords("interrupts",
+            self.interruptCells(1, int(self.maint_int.num)-16, 0xf04)))
+
+        node.appendPhandle(self)
+
+        yield node

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/20053
To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings

Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-Change-Id: I539ae5ae74bc6f42f291441594a0d14c98e687f4
Gerrit-Change-Number: 20053
Gerrit-PatchSet: 2
Gerrit-Owner: Giacomo Travaglini <giacomo.travagl...@arm.com>
Gerrit-Reviewer: Andreas Sandberg <andreas.sandb...@arm.com>
Gerrit-Reviewer: Giacomo Travaglini <giacomo.travagl...@arm.com>
Gerrit-Reviewer: kokoro <noreply+kok...@google.com>
Gerrit-MessageType: merged
_______________________________________________
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to