refactor: use dma device properties struct within device node
No functional change. This refactoring is needed for the next patch
which creates a helper utility to obtain various common fields from
memory region node and device region node of a partition manifest.
Signed-off-by: Madhukar Pappireddy <madhukar.pappireddy@arm.com>
Change-Id: I38b65136297e09411938f68dce18c0265d710924
diff --git a/src/arch/aarch64/arm_smmuv3/arm_smmuv3.c b/src/arch/aarch64/arm_smmuv3/arm_smmuv3.c
index 3e14ad7..32e622c 100644
--- a/src/arch/aarch64/arm_smmuv3/arm_smmuv3.c
+++ b/src/arch/aarch64/arm_smmuv3/arm_smmuv3.c
@@ -1409,7 +1409,7 @@
unsigned int i;
unsigned int j;
- struct device_region upstream_peripheral;
+ struct dma_device_properties upstream_peripheral;
uint16_t vm_id;
struct mm_ptable *iommu_ptable;
struct mm_ptable *iommu_ptable_ns;
@@ -1434,7 +1434,8 @@
/* Iterate through device region nodes described in vm manifest */
for (i = 0; i < manifest_vm->partition.dev_region_count; i++) {
- upstream_peripheral = manifest_vm->partition.dev_regions[i];
+ upstream_peripheral =
+ manifest_vm->partition.dev_regions[i].dma_prop;
if (upstream_peripheral.smmu_id != MANIFEST_INVALID_ID &&
upstream_peripheral.smmu_id != arm_smmuv3.smmu_id) {
diff --git a/src/manifest.c b/src/manifest.c
index cc5923e..dc61cd9 100644
--- a/src/manifest.c
+++ b/src/manifest.c
@@ -737,7 +737,7 @@
dlog_verbose(" %u\n", permissions);
if (j == 0) {
- mem_regions[i].dma_prop.dma_access_permissions =
+ mem_regions[i].dma_access_permissions =
permissions;
}
@@ -746,7 +746,7 @@
* the same access permissions.
*/
if (permissions !=
- mem_regions[i].dma_prop.dma_access_permissions) {
+ mem_regions[i].dma_access_permissions) {
return MANIFEST_ERROR_MISMATCH_DMA_ACCESS_PERMISSIONS;
}
@@ -761,7 +761,7 @@
if (j > 0) {
/* Filter the dma access permissions. */
- mem_regions[i].dma_prop.dma_access_permissions &=
+ mem_regions[i].dma_access_permissions &=
MANIFEST_REGION_ALL_ATTR_MASK;
}
@@ -966,10 +966,10 @@
TRY(read_optional_uint32(dev_node, "smmu-id",
MANIFEST_INVALID_ID,
- &dev_regions[i].smmu_id));
- if (dev_regions[i].smmu_id != MANIFEST_INVALID_ID) {
+ &dev_regions[i].dma_prop.smmu_id));
+ if (dev_regions[i].dma_prop.smmu_id != MANIFEST_INVALID_ID) {
dlog_verbose(" smmu-id: %u\n",
- dev_regions[i].smmu_id);
+ dev_regions[i].dma_prop.smmu_id);
}
TRY(read_optional_uint32list(dev_node, "stream-ids", &list));
@@ -981,17 +981,18 @@
return MANIFEST_ERROR_STREAM_IDS_OVERFLOW;
}
- TRY(uint32list_get_next(&list,
- &dev_regions[i].stream_ids[j]));
+ TRY(uint32list_get_next(
+ &list, &dev_regions[i].dma_prop.stream_ids[j]));
dlog_verbose(" %u\n",
- dev_regions[i].stream_ids[j]);
+ dev_regions[i].dma_prop.stream_ids[j]);
j++;
}
if (j == 0) {
dlog_verbose(" None\n");
- } else if (dev_regions[i].smmu_id != MANIFEST_INVALID_ID) {
- dev_regions[i].dma_device_id = dma_device_id++;
+ } else if (dev_regions[i].dma_prop.smmu_id !=
+ MANIFEST_INVALID_ID) {
+ dev_regions[i].dma_prop.dma_device_id = dma_device_id++;
*dma_device_count = dma_device_id;
if (*dma_device_count > PARTITION_MAX_DMA_DEVICES) {
@@ -999,7 +1000,7 @@
}
dlog_verbose(" dma peripheral device id: %u\n",
- dev_regions[i].dma_device_id);
+ dev_regions[i].dma_prop.dma_device_id);
} else {
/*
* SMMU ID must be specified if the partition specifies
@@ -1008,7 +1009,7 @@
return MANIFEST_ERROR_MISSING_SMMU_ID;
}
- dev_regions[i].stream_count = j;
+ dev_regions[i].dma_prop.stream_count = j;
TRY(read_bool(dev_node, "exclusive-access",
&dev_regions[i].exclusive_access));
@@ -1139,9 +1140,9 @@
struct device_region dev_region =
manifest_vm->partition.dev_regions[i];
- for (uint8_t j = 0; j < dev_region.stream_count; j++) {
- if (sid == dev_region.stream_ids[j]) {
- *device_id = dev_region.dma_device_id;
+ for (uint8_t j = 0; j < dev_region.dma_prop.stream_count; j++) {
+ if (sid == dev_region.dma_prop.stream_ids[j]) {
+ *device_id = dev_region.dma_prop.dma_device_id;
return true;
}
}
diff --git a/src/manifest_test.cc b/src/manifest_test.cc
index c6c919f..f2b5018 100644
--- a/src/manifest_test.cc
+++ b/src/manifest_test.cc
@@ -1789,9 +1789,9 @@
ASSERT_EQ(vm->partition.dev_regions[0].base_address, 0x24000000);
ASSERT_EQ(vm->partition.dev_regions[0].page_count, 16);
ASSERT_EQ(vm->partition.dev_regions[0].attributes, (16 | 3));
- ASSERT_EQ(vm->partition.dev_regions[0].smmu_id, 1);
- ASSERT_EQ(vm->partition.dev_regions[0].stream_ids[0], 0);
- ASSERT_EQ(vm->partition.dev_regions[0].stream_ids[1], 1);
+ ASSERT_EQ(vm->partition.dev_regions[0].dma_prop.smmu_id, 1);
+ ASSERT_EQ(vm->partition.dev_regions[0].dma_prop.stream_ids[0], 0);
+ ASSERT_EQ(vm->partition.dev_regions[0].dma_prop.stream_ids[1], 1);
ASSERT_EQ(vm->partition.dev_regions[0].interrupts[0].id, 2);
ASSERT_EQ(vm->partition.dev_regions[0].interrupts[0].attributes, 3);
ASSERT_EQ(vm->partition.dev_regions[0].interrupts[1].id, 4);
@@ -1831,9 +1831,9 @@
ASSERT_EQ(vm->partition.dev_regions[0].base_address, 0x24000000);
ASSERT_EQ(vm->partition.dev_regions[0].page_count, 16);
ASSERT_EQ(vm->partition.dev_regions[0].attributes, (16 | 3));
- ASSERT_EQ(vm->partition.dev_regions[0].smmu_id, 1);
- ASSERT_EQ(vm->partition.dev_regions[0].stream_ids[0], 0);
- ASSERT_EQ(vm->partition.dev_regions[0].stream_ids[1], 1);
+ ASSERT_EQ(vm->partition.dev_regions[0].dma_prop.smmu_id, 1);
+ ASSERT_EQ(vm->partition.dev_regions[0].dma_prop.stream_ids[0], 0);
+ ASSERT_EQ(vm->partition.dev_regions[0].dma_prop.stream_ids[1], 1);
ASSERT_EQ(vm->partition.dev_regions[0].interrupts[0].id, 2);
ASSERT_EQ(vm->partition.dev_regions[0].interrupts[0].attributes, 3);
ASSERT_EQ(vm->partition.dev_regions[0].interrupts[0].mpidr_valid, true);