dev-arm: Use generateFdtProperty in the GenericTimer

Change-Id: I4115d14ba65685627b51b0e5438fe5a3ed9328bc
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/35397
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
This commit is contained in:
Giacomo Travaglini
2020-09-28 17:36:30 +01:00
parent 328880aaa9
commit aee7bb1769
2 changed files with 25 additions and 18 deletions

View File

@@ -104,12 +104,13 @@ Reference:
node.appendCompatible(["arm,cortex-a15-timer",
"arm,armv7-timer",
"arm,armv8-timer"])
node.append(FdtPropertyWords("interrupts", [
1, int(self.int_phys_s.num) - 16, 0xf08,
1, int(self.int_phys_ns.num) - 16, 0xf08,
1, int(self.int_virt.num) - 16, 0xf08,
1, int(self.int_hyp.num) - 16, 0xf08,
]))
gic = self._parent.unproxy(self).gic
node.append(FdtPropertyWords("interrupts",
self.int_phys_s.generateFdtProperty(gic) +
self.int_phys_ns.generateFdtProperty(gic) +
self.int_virt.generateFdtProperty(gic) +
self.int_hyp.generateFdtProperty(gic)))
if self._freq_in_dtb:
node.append(self.counter.unproxy(self).generateDtb())
@@ -139,13 +140,15 @@ Reference:
int_phys = Param.ArmSPI("Physical Interrupt")
int_virt = Param.ArmSPI("Virtual Interrupt")
def generateDeviceTree(self, state):
def generateDeviceTree(self, state, gic):
node = FdtNode("frame@{:08x}".format(self.cnt_base.value))
node.append(FdtPropertyWords("frame-number", self._frame_num))
ints = [0, int(self.int_phys.num) - 32, 4]
ints = self.int_phys.generateFdtProperty(gic)
if self.int_virt != NULL:
ints.extend([0, int(self.int_virt.num) - 32, 4])
ints.extend(self.int_virt.generateFdtProperty(gic))
node.append(FdtPropertyWords("interrupts", ints))
reg = state.addrCells(self.cnt_base) + state.sizeCells(0x1000)
if self.cnt_el0_base.value != MaxAddr:
reg.extend(state.addrCells(self.cnt_el0_base)
@@ -193,8 +196,10 @@ Reference:
if self._freq_in_dtb:
node.append(self.counter.unproxy(self).generateDtb())
gic = self._parent.unproxy(self).gic
for i, frame in enumerate(self.frames):
frame._frame_num = i
node.append(frame.generateDeviceTree(state))
node.append(frame.generateDeviceTree(state, gic))
yield node

View File

@@ -703,10 +703,11 @@ class VExpress_EMM(RealView):
pci_pio_base=0)
sys_counter = SystemCounter()
generic_timer = GenericTimer(int_phys_s=ArmPPI(num=29),
int_phys_ns=ArmPPI(num=30),
int_virt=ArmPPI(num=27),
int_hyp=ArmPPI(num=26))
generic_timer = GenericTimer(
int_phys_s=ArmPPI(num=29, int_type='IRQ_TYPE_LEVEL_LOW'),
int_phys_ns=ArmPPI(num=30, int_type='IRQ_TYPE_LEVEL_LOW'),
int_virt=ArmPPI(num=27, int_type='IRQ_TYPE_LEVEL_LOW'),
int_hyp=ArmPPI(num=26, int_type='IRQ_TYPE_LEVEL_LOW'))
timer0 = Sp804(int0=ArmSPI(num=34), int1=ArmSPI(num=34),
pio_addr=0x1C110000, clock0='1MHz', clock1='1MHz')
@@ -975,10 +976,11 @@ Interrupts:
trusted_watchdog = Sp805(pio_addr=0x2a490000, interrupt=ArmSPI(num=56))
sys_counter = SystemCounter()
generic_timer = GenericTimer(int_phys_s=ArmPPI(num=29),
int_phys_ns=ArmPPI(num=30),
int_virt=ArmPPI(num=27),
int_hyp=ArmPPI(num=26))
generic_timer = GenericTimer(
int_phys_s=ArmPPI(num=29, int_type='IRQ_TYPE_LEVEL_LOW'),
int_phys_ns=ArmPPI(num=30, int_type='IRQ_TYPE_LEVEL_LOW'),
int_virt=ArmPPI(num=27, int_type='IRQ_TYPE_LEVEL_LOW'),
int_hyp=ArmPPI(num=26, int_type='IRQ_TYPE_LEVEL_LOW'))
generic_timer_mem = GenericTimerMem(cnt_control_base=0x2a430000,
cnt_read_base=0x2a800000,
cnt_ctl_base=0x2a810000,