diff options
author | Giacomo Travaglini <giacomo.travaglini@arm.com> | 2019-08-12 19:56:00 +0100 |
---|---|---|
committer | Giacomo Travaglini <giacomo.travaglini@arm.com> | 2019-09-19 15:49:27 +0000 |
commit | 2e55ff352f2bd1c36f5b33f9c852430f123205ce (patch) | |
tree | 58940daab7a5bab821d55730a91f349c510a290a /src/dev/arm/RealView.py | |
parent | 6b6ac525f7bcb4259ef2065919bc9985c48ef35d (diff) | |
download | gem5-2e55ff352f2bd1c36f5b33f9c852430f123205ce.tar.xz |
dev-arm: Add HDLcd DTB autogeneration
A Display has been defined. Its sole purpose is to generate the device
tree node to be referenced by the HDLcd device. The encoder parameters
are based on the existing node defined in:
system/arm/dt/armv8.dts
Change-Id: I6cdeb0437dce207dbd0f2c65c16b224245eb74e1
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20330
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>
Diffstat (limited to 'src/dev/arm/RealView.py')
-rw-r--r-- | src/dev/arm/RealView.py | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/dev/arm/RealView.py b/src/dev/arm/RealView.py index 99f79eed8..b53cd9922 100644 --- a/src/dev/arm/RealView.py +++ b/src/dev/arm/RealView.py @@ -65,6 +65,7 @@ from m5.objects.Graphics import ImageFormat from m5.objects.ClockedObject import ClockedObject from m5.objects.PS2 import * from m5.objects.VirtIOMMIO import MmioVirtIO +from m5.objects.Display import Display, Display1080p # Platforms with KVM support should generally use in-kernel GIC # emulation. Use a GIC model that automatically switches between @@ -491,7 +492,29 @@ class HDLcd(AmbaDmaDevice): virt_refresh_rate = Param.Frequency("20Hz", "Frame refresh rate " "in KVM mode") + encoder = Param.Display(Display1080p(), "Display encoder") + + def endpointPhandle(self): + return "hdlcd_endpoint" + def generateDeviceTree(self, state): + endpoint_node = FdtNode("endpoint") + endpoint_node.appendPhandle(self.endpointPhandle()) + + for encoder_node in self.encoder.generateDeviceTree(state): + encoder_endpoint = self.encoder.endpointNode() + + # Endpoint subnode + endpoint_node.append(FdtPropertyWords("remote-endpoint", + [ state.phandle(self.encoder.endpointPhandle()) ])) + encoder_endpoint.append(FdtPropertyWords("remote-endpoint", + [ state.phandle(self.endpointPhandle()) ])) + + yield encoder_node + + port_node = FdtNode("port") + port_node.append(endpoint_node) + # Interrupt number is hardcoded; it is not a property of this class node = self.generateBasicPioDeviceNode(state, 'hdlcd', self.pio_addr, 0x1000, [63]) @@ -508,6 +531,8 @@ class HDLcd(AmbaDmaDevice): self.addIommuProperty(state, node) + node.append(port_node) + yield node class RealView(Platform): |