dev: Enable DTB IOMMU binding with a DMA object
This happens by storing a iommu reference in the dma device, and by calling the addIommuProperty method once doing dtb autogeneration for the device Change-Id: Ibd585addac686a9eeaba6959f459d81901087549 Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com> Reviewed-by: Ciro Santilli <ciro.santilli@arm.com> Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com> Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20839 Maintainer: Andreas Sandberg <andreas.sandberg@arm.com> Tested-by: kokoro <noreply+kokoro@google.com>
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2012-2016 ARM Limited
|
||||
# Copyright (c) 2012-2016,2019 ARM Limited
|
||||
# All rights reserved.
|
||||
#
|
||||
# The license below extends only to copyright in the software and shall
|
||||
@@ -84,6 +84,8 @@ class DmaDevice(PioDevice):
|
||||
abstract = True
|
||||
dma = MasterPort("DMA port")
|
||||
|
||||
_iommu = None
|
||||
|
||||
sid = Param.Unsigned(0,
|
||||
"Stream identifier used by an IOMMU to distinguish amongst "
|
||||
"several devices attached to it")
|
||||
@@ -91,6 +93,17 @@ class DmaDevice(PioDevice):
|
||||
"Substream identifier used by an IOMMU to distinguish amongst "
|
||||
"several devices attached to it")
|
||||
|
||||
def addIommuProperty(self, state, node):
|
||||
"""
|
||||
This method takes an FdtState and a FdtNode as parameters, and
|
||||
it is appending a "iommus = <>" property in case the DmaDevice
|
||||
is attached to an IOMMU.
|
||||
This method is necessary for autogenerating a binding between
|
||||
a dma device and the iommu.
|
||||
"""
|
||||
if self._iommu is not None:
|
||||
node.append(FdtPropertyWords("iommus",
|
||||
[ state.phandle(self._iommu), self.sid ]))
|
||||
|
||||
class IsaFake(BasicPioDevice):
|
||||
type = 'IsaFake'
|
||||
|
||||
Reference in New Issue
Block a user