From 8a921e354575cd16aaa6f2f5a2aeaaaea35ab886 Mon Sep 17 00:00:00 2001 From: Joshua Pimm Date: Wed, 9 Nov 2022 11:26:11 +0000 Subject: [PATCH] feat(ethos-n): add multiple asset allocators Adds additional asset allocators to the device tree include file as the non-secure world kernel module for the Arm(R) Ethos(TM)-N NPU now fully supports having and using multiple asset allocators. Signed-off-by: Joshua Pimm Signed-off-by: Mikael Olsson Change-Id: I82d53667ef64968ee814f611d0a90abd3b3cf3de --- fdts/juno-ethosn.dtsi | 237 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 231 insertions(+), 6 deletions(-) diff --git a/fdts/juno-ethosn.dtsi b/fdts/juno-ethosn.dtsi index 460952482..6f8e8ae0a 100644 --- a/fdts/juno-ethosn.dtsi +++ b/fdts/juno-ethosn.dtsi @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021-2022, Arm Limited. All rights reserved. + * Copyright (c) 2021-2023, Arm Limited. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -48,28 +48,253 @@ }; }; - asset_allocator { + asset_allocator0 { compatible = "ethosn-asset_allocator"; status = "okay"; command_stream { compatible = "ethosn-memory"; - iommus = <&smmu_ethosn0 2>; + iommus = <&smmu_ethosn0 4>; }; weight_data { compatible = "ethosn-memory"; - iommus = <&smmu_ethosn0 3>; + iommus = <&smmu_ethosn0 5>; }; buffer_data { compatible = "ethosn-memory"; - iommus = <&smmu_ethosn0 4>; + iommus = <&smmu_ethosn0 6>; }; intermediate_data { compatible = "ethosn-memory"; - iommus = <&smmu_ethosn0 5>; + iommus = <&smmu_ethosn0 7>; + }; + }; + + asset_allocator1 { + compatible = "ethosn-asset_allocator"; + status = "okay"; + + command_stream { + compatible = "ethosn-memory"; + iommus = <&smmu_ethosn0 8>; + }; + + weight_data { + compatible = "ethosn-memory"; + iommus = <&smmu_ethosn0 9>; + }; + + buffer_data { + compatible = "ethosn-memory"; + iommus = <&smmu_ethosn0 10>; + }; + + intermediate_data { + compatible = "ethosn-memory"; + iommus = <&smmu_ethosn0 11>; + }; + }; + + asset_allocator2 { + compatible = "ethosn-asset_allocator"; + status = "okay"; + + command_stream { + compatible = "ethosn-memory"; + iommus = <&smmu_ethosn0 12>; + }; + + weight_data { + compatible = "ethosn-memory"; + iommus = <&smmu_ethosn0 13>; + }; + + buffer_data { + compatible = "ethosn-memory"; + iommus = <&smmu_ethosn0 14>; + }; + + intermediate_data { + compatible = "ethosn-memory"; + iommus = <&smmu_ethosn0 15>; + }; + }; + + asset_allocator3 { + compatible = "ethosn-asset_allocator"; + status = "okay"; + + command_stream { + compatible = "ethosn-memory"; + iommus = <&smmu_ethosn0 16>; + }; + + weight_data { + compatible = "ethosn-memory"; + iommus = <&smmu_ethosn0 17>; + }; + + buffer_data { + compatible = "ethosn-memory"; + iommus = <&smmu_ethosn0 18>; + }; + + intermediate_data { + compatible = "ethosn-memory"; + iommus = <&smmu_ethosn0 19>; + }; + }; + + asset_allocator4 { + compatible = "ethosn-asset_allocator"; + status = "okay"; + + command_stream { + compatible = "ethosn-memory"; + iommus = <&smmu_ethosn0 20>; + }; + + weight_data { + compatible = "ethosn-memory"; + iommus = <&smmu_ethosn0 21>; + }; + + buffer_data { + compatible = "ethosn-memory"; + iommus = <&smmu_ethosn0 22>; + }; + + intermediate_data { + compatible = "ethosn-memory"; + iommus = <&smmu_ethosn0 23>; + }; + }; + + asset_allocator5 { + compatible = "ethosn-asset_allocator"; + status = "okay"; + + command_stream { + compatible = "ethosn-memory"; + iommus = <&smmu_ethosn0 24>; + }; + + weight_data { + compatible = "ethosn-memory"; + iommus = <&smmu_ethosn0 25>; + }; + + buffer_data { + compatible = "ethosn-memory"; + iommus = <&smmu_ethosn0 26>; + }; + + intermediate_data { + compatible = "ethosn-memory"; + iommus = <&smmu_ethosn0 27>; + }; + }; + + asset_allocator6 { + compatible = "ethosn-asset_allocator"; + status = "okay"; + + command_stream { + compatible = "ethosn-memory"; + iommus = <&smmu_ethosn0 28>; + }; + + weight_data { + compatible = "ethosn-memory"; + iommus = <&smmu_ethosn0 29>; + }; + + buffer_data { + compatible = "ethosn-memory"; + iommus = <&smmu_ethosn0 30>; + }; + + intermediate_data { + compatible = "ethosn-memory"; + iommus = <&smmu_ethosn0 31>; + }; + }; + + asset_allocator7 { + compatible = "ethosn-asset_allocator"; + status = "okay"; + + command_stream { + compatible = "ethosn-memory"; + iommus = <&smmu_ethosn0 32>; + }; + + weight_data { + compatible = "ethosn-memory"; + iommus = <&smmu_ethosn0 33>; + }; + + buffer_data { + compatible = "ethosn-memory"; + iommus = <&smmu_ethosn0 34>; + }; + + intermediate_data { + compatible = "ethosn-memory"; + iommus = <&smmu_ethosn0 35>; + }; + }; + + asset_allocator8 { + compatible = "ethosn-asset_allocator"; + status = "okay"; + + command_stream { + compatible = "ethosn-memory"; + iommus = <&smmu_ethosn0 36>; + }; + + weight_data { + compatible = "ethosn-memory"; + iommus = <&smmu_ethosn0 37>; + }; + + buffer_data { + compatible = "ethosn-memory"; + iommus = <&smmu_ethosn0 38>; + }; + + intermediate_data { + compatible = "ethosn-memory"; + iommus = <&smmu_ethosn0 39>; + }; + }; + + asset_allocator9 { + compatible = "ethosn-asset_allocator"; + status = "okay"; + + command_stream { + compatible = "ethosn-memory"; + iommus = <&smmu_ethosn0 40>; + }; + + weight_data { + compatible = "ethosn-memory"; + iommus = <&smmu_ethosn0 41>; + }; + + buffer_data { + compatible = "ethosn-memory"; + iommus = <&smmu_ethosn0 42>; + }; + + intermediate_data { + compatible = "ethosn-memory"; + iommus = <&smmu_ethosn0 43>; }; }; };