diff options
author | Mikael Olsson <mikael.olsson@arm.com> | 2024-02-16 11:04:46 +0100 |
---|---|---|
committer | Mikael Olsson <mikael.olsson@arm.com> | 2024-02-19 13:27:51 +0100 |
commit | dc18ceaa54957d5ac05292b363a5ac6fe479f409 (patch) | |
tree | b7fae5e1448ef4436e78c0c838f4a07e59ce3039 /driver_library/include/ethosu.hpp | |
parent | 16be28550f0906e2bfff20b94dd373f59b4a2ccf (diff) | |
download | ethos-u-linux-driver-stack-dc18ceaa54957d5ac05292b363a5ac6fe479f409.tar.gz |
Add NPU device type to capabilities
In preparation to support the Linux kernel driver directly managing the
NPU without a subsystem. A NPU device type has been added to the
capabilities to be able to specify what kind of NPU is used.
Change-Id: I45345b7d75d234f821d70b858453d3af2a99194e
Signed-off-by: Mikael Olsson <mikael.olsson@arm.com>
Diffstat (limited to 'driver_library/include/ethosu.hpp')
-rw-r--r-- | driver_library/include/ethosu.hpp | 27 |
1 files changed, 24 insertions, 3 deletions
diff --git a/driver_library/include/ethosu.hpp b/driver_library/include/ethosu.hpp index 27f6828..d0e391c 100644 --- a/driver_library/include/ethosu.hpp +++ b/driver_library/include/ethosu.hpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright 2020-2023 Arm Limited and/or its affiliates <open-source-office@arm.com> + * SPDX-FileCopyrightText: Copyright 2020-2024 Arm Limited and/or its affiliates <open-source-office@arm.com> * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the License); you may @@ -106,18 +106,39 @@ public: * Hardware Configuration * @macsPerClockCycle: MACs per clock cycle * @cmdStreamVersion: NPU command stream version + * @type: NPU device type * @customDma: Custom DMA enabled */ struct HardwareConfiguration { public: - HardwareConfiguration(uint32_t _macsPerClockCycle = 0, uint32_t _cmdStreamVersion = 0, bool _customDma = false) : - macsPerClockCycle(_macsPerClockCycle), cmdStreamVersion(_cmdStreamVersion), customDma(_customDma) {} + HardwareConfiguration(uint32_t _macsPerClockCycle = 0, + uint32_t _cmdStreamVersion = 0, + uint32_t _type = static_cast<uint32_t>(DeviceType::UNKNOWN), + bool _customDma = false) : + macsPerClockCycle(_macsPerClockCycle), + cmdStreamVersion(_cmdStreamVersion), customDma(_customDma) { + + if (_type > static_cast<uint32_t>(DeviceType::DIRECT)) { + throw EthosU::Exception(std::string("Invalid device type: ").append(std::to_string(_type)).c_str()); + } + + type = static_cast<DeviceType>(_type); + } + + enum class DeviceType { + UNKNOWN = 0, + SUBSYSTEM, + DIRECT, + }; uint32_t macsPerClockCycle; uint32_t cmdStreamVersion; + DeviceType type; bool customDma; }; +std::ostream &operator<<(std::ostream &out, const HardwareConfiguration::DeviceType &deviceType); + /** * Device capabilities * @hwId: Hardware |