[gem5-dev] Change in gem5/gem5[develop]: dev-arm: Instantiate SCMI in VExpress_GEM5 platforms

2020-11-02 Thread Giacomo Travaglini (Gerrit) via gem5-dev
Giacomo Travaglini has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/34380 )


Change subject: dev-arm: Instantiate SCMI in VExpress_GEM5 platforms
..

dev-arm: Instantiate SCMI in VExpress_GEM5 platforms

JIRA: https://gem5.atlassian.net/browse/GEM5-768

Change-Id: If5c03aed43f6a521c657e0c9b1dfa95fa4c72413
Signed-off-by: Giacomo Travaglini 
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/34380
Tested-by: kokoro 
Reviewed-by: Andreas Sandberg 
Maintainer: Andreas Sandberg 
---
M src/dev/arm/RealView.py
1 file changed, 39 insertions(+), 0 deletions(-)

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



diff --git a/src/dev/arm/RealView.py b/src/dev/arm/RealView.py
index d35f7ce..bf8e0e6 100644
--- a/src/dev/arm/RealView.py
+++ b/src/dev/arm/RealView.py
@@ -53,6 +53,7 @@
 from m5.objects.SimpleMemory import SimpleMemory
 from m5.objects.GenericTimer import *
 from m5.objects.Gic import *
+from m5.objects.MHU import MHU, Scp2ApDoorbell, Ap2ScpDoorbell
 from m5.objects.EnergyCtrl import EnergyCtrl
 from m5.objects.ClockedObject import ClockedObject
 from m5.objects.SubSystem import SubSystem
@@ -61,6 +62,7 @@
 from m5.objects.PS2 import *
 from m5.objects.VirtIOMMIO import MmioVirtIO
 from m5.objects.Display import Display, Display1080p
+from m5.objects.Scmi import *
 from m5.objects.SMMUv3 import SMMUv3
 from m5.objects.PciDevice import PciLegacyIoBar, PciIoBar

@@ -607,6 +609,23 @@
 type = 'FVPBasePwrCtrl'
 cxx_header = 'dev/arm/fvp_base_pwr_ctrl.hh'

+class GenericMHU(MHU):
+lowp_scp2ap = Scp2ApDoorbell(
+set_address=0x10020008, clear_address=0x10020010,
+interrupt=ArmSPI(num=68))
+highp_scp2ap = Scp2ApDoorbell(
+set_address=0x10020028, clear_address=0x10020030,
+interrupt=ArmSPI(num=67))
+sec_scp2ap = Scp2ApDoorbell(
+set_address=0x10020208, clear_address=0x10020210,
+interrupt=ArmSPI(num=69))
+lowp_ap2scp = Ap2ScpDoorbell(
+set_address=0x10020108, clear_address=0x10020110)
+highp_ap2scp = Ap2ScpDoorbell(
+set_address=0x10020128, clear_address=0x10020130)
+sec_ap2scp = Ap2ScpDoorbell(
+set_address=0x10020308, clear_address=0x10020310)
+
 class RealView(Platform):
 type = 'RealView'
 cxx_header = "dev/arm/realview.hh"
@@ -912,6 +931,7 @@
0x1000-0x13ff: gem5-specific peripherals (Off-chip, CS5)
0x1000-0x1000: gem5 energy controller
0x1001-0x1001: gem5 pseudo-ops
+   0x1002-0x1002: gem5 MHU

0x1400-0x17ff: Reserved (Off-chip, PSRAM, CS1)
0x1800-0x1bff: Reserved (Off-chip, Peripherals, CS2)
@@ -1188,6 +1208,25 @@
 #  system.
 cur_sys.m5ops_base = 0x1001

+def attachScmi(self, bus):
+# Generate and attach the mailbox
+self.mailbox = GenericMHU(pio_addr=0x1002)
+self._attach_device(self.mailbox, bus)
+
+# Generate and attach the SCMI platform
+_scmi_comm = ScmiCommunication(
+agent_channel = ScmiAgentChannel(
+shmem=self.non_trusted_sram,
+shmem_range=AddrRange(0x2e00, size=0x200),
+doorbell=self.mailbox.highp_ap2scp),
+platform_channel = ScmiPlatformChannel(
+shmem=self.non_trusted_sram,
+shmem_range=AddrRange(0x2e00, size=0x200),
+doorbell=self.mailbox.highp_scp2ap))
+
+self.scmi = ScmiPlatform(comms=[ _scmi_comm ])
+self._attach_device(self.scmi, bus)
+
 def generateDeviceTree(self, state):
 # Generate using standard RealView function
 dt = list(super(VExpress_GEM5_Base,  
self).generateDeviceTree(state))


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


Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: If5c03aed43f6a521c657e0c9b1dfa95fa4c72413
Gerrit-Change-Number: 34380
Gerrit-PatchSet: 11
Gerrit-Owner: Giacomo Travaglini 
Gerrit-Reviewer: Andreas Sandberg 
Gerrit-Reviewer: Giacomo Travaglini 
Gerrit-Reviewer: kokoro 
Gerrit-MessageType: merged
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

[gem5-dev] Change in gem5/gem5[develop]: dev-arm: Instantiate SCMI in VExpress_GEM5 platforms

2020-09-11 Thread Giacomo Travaglini (Gerrit) via gem5-dev
Giacomo Travaglini has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/34380 )



Change subject: dev-arm: Instantiate SCMI in VExpress_GEM5 platforms
..

dev-arm: Instantiate SCMI in VExpress_GEM5 platforms

JIRA: https://gem5.atlassian.net/browse/GEM5-768

Change-Id: If5c03aed43f6a521c657e0c9b1dfa95fa4c72413
Signed-off-by: Giacomo Travaglini 
---
M src/dev/arm/RealView.py
1 file changed, 39 insertions(+), 0 deletions(-)



diff --git a/src/dev/arm/RealView.py b/src/dev/arm/RealView.py
index 4750be8..aea21e1 100644
--- a/src/dev/arm/RealView.py
+++ b/src/dev/arm/RealView.py
@@ -53,6 +53,7 @@
 from m5.objects.SimpleMemory import SimpleMemory
 from m5.objects.GenericTimer import *
 from m5.objects.Gic import *
+from m5.objects.MHU import MHU, Scp2ApDoorbell, Ap2ScpDoorbell
 from m5.objects.EnergyCtrl import EnergyCtrl
 from m5.objects.ClockedObject import ClockedObject
 from m5.objects.SubSystem import SubSystem
@@ -61,6 +62,7 @@
 from m5.objects.PS2 import *
 from m5.objects.VirtIOMMIO import MmioVirtIO
 from m5.objects.Display import Display, Display1080p
+from m5.objects.Scmi import *
 from m5.objects.SMMUv3 import SMMUv3

 # Platforms with KVM support should generally use in-kernel GIC
@@ -606,6 +608,23 @@
 type = 'FVPBasePwrCtrl'
 cxx_header = 'dev/arm/fvp_base_pwr_ctrl.hh'

+class GenericMHU(MHU):
+lowp_scp2ap = Scp2ApDoorbell(
+set_address=0x2b1f0008, clear_address=0x2b1f0010,
+interrupt=ArmSPI(num=68))
+highp_scp2ap = Scp2ApDoorbell(
+set_address=0x2b1f0028, clear_address=0x2b1f0030,
+interrupt=ArmSPI(num=67))
+sec_scp2ap = Scp2ApDoorbell(
+set_address=0x2b1f0208, clear_address=0x2b1f0210,
+interrupt=ArmSPI(num=69))
+lowp_ap2scp = Ap2ScpDoorbell(
+set_address=0x2b1f0108, clear_address=0x2b1f0110)
+highp_ap2scp = Ap2ScpDoorbell(
+set_address=0x2b1f0128, clear_address=0x2b1f0130)
+sec_ap2scp = Ap2ScpDoorbell(
+set_address=0x2b1f0308, clear_address=0x2b1f0310)
+
 class RealView(Platform):
 type = 'RealView'
 cxx_header = "dev/arm/realview.hh"
@@ -937,6 +956,7 @@
0x2a83-0x2a830fff: System Timer (frame 1)

0x2b00-0x2b00: HDLCD
+   0x2b1f-0x2b1f: MHU (gem5-specific)

0x2b06-0x2b060fff: System Watchdog (SP805)

@@ -1186,6 +1206,25 @@
 #  system.
 cur_sys.m5ops_base = 0x1001

+def attachScmi(self, bus):
+# Generate and attach the mailbox
+self.mailbox = GenericMHU(pio_addr=0x2b1f)
+self._attach_device(self.mailbox, bus)
+
+# Generate and attach the SCMI platform
+_scmi_comm = ScmiCommunication(
+agent_channel = ScmiAgentChannel(
+shmem=self.non_trusted_sram,
+shmem_range=AddrRange(0x2e00, size=0x200),
+doorbell=self.mailbox.highp_ap2scp),
+platform_channel = ScmiPlatformChannel(
+shmem=self.non_trusted_sram,
+shmem_range=AddrRange(0x2e00, size=0x200),
+doorbell=self.mailbox.highp_scp2ap))
+
+self.scmi = ScmiPlatform(comms=[ _scmi_comm ])
+self._attach_device(self.scmi, bus)
+
 def generateDeviceTree(self, state):
 # Generate using standard RealView function
 dt = list(super(VExpress_GEM5_Base,  
self).generateDeviceTree(state))


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


Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: If5c03aed43f6a521c657e0c9b1dfa95fa4c72413
Gerrit-Change-Number: 34380
Gerrit-PatchSet: 1
Gerrit-Owner: Giacomo Travaglini 
Gerrit-MessageType: newchange
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s