aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-11-18Remove new line from log messages21.11-rc321.11-rc221.11Kristofer Jonsson
Remove new line from log messages to allow the log makros to format the output. Change-Id: Idc07d0ef1fb77530fa07279ae92b2c964ebb6287
2021-11-18Fix PMU event order to comply with interface filesJonny Svärd
Change-Id: I9e460e25e4c8ea4a86b460dbf4c634afb912b4de
2021-11-16Update Ethos-U55/U65 interface filesJonny Svärd
Change-Id: I33bb705ae0be282c071977d5077cdaf3093e90fe
2021-11-05Fix incorrect enum type used21.11-rc1Jonny Svärd
No functional change as they both evaluate to the same numerical value. Change-Id: Ia84c19e08defa63067755389857c967698127d8c
2021-11-01Autumn clean/refactor of NPU driverJonny Svärd
A continuation of the spring clean/refactor work. Create a better separation between driver and device(s). A short summary of what this commit contains: - Split device and driver - Simplify and hide the internal device interface - Remove (broken) abort inference functionality - Refactoring of structure - Optimizations and bugfixes Change-Id: I8988bc5f163f9ea62add2a933e4f100a82cc8d35
2021-09-07Remove unnecessary use of designated initializerJonny Svärd
Change-Id: I16de9223e59e46ad9fb25bd280a175cd50af913d
2021-08-31 Zephyr module files:Kristofer Jonsson
1. Update init.c: - Create a new flow using DT_INST_FOREACH_STATUS_OKAY() macro. This macro will: - parse each node in dtb file for each npu - run "init" function with dts params - run ethosu_init() - enable irq Change-Id: Iaf370d258e0521a133ae38f2df66f93c249754f9
2021-07-08Improved Logging - Core Driver logging clean up21.08-rc321.08-rc221.08-rc121.08Anton Moberg
Made a separate header file for logging specific content. Cleaned up logging messages. Change-Id: Id329b40977156ca5b954b3a222effaedbc6b2a2c
2021-06-28Revert "Remove static inline v2 function"Kristofer Jonsson
This reverts commit 49a81c148e3c55cf97d7eb79e22a1d1f5504a97d. Reason for revert: Dependency on other modules. Change-Id: Iac8e63144dce92c4fc07caffcb74b1ce9f26800c
2021-06-14Remove static inline v2 functionAnton Moberg
Updated tensorflow to use default entrypoint and so this static inline function is no longer necessary. Change-Id: I2cd4e9cc87a4e8cffd2f67e27149782ea9519c05
2021-06-14Add ethosu_deinit()Anton Moberg
Added ethosu_deinit method which calls ethosu_deregister_driver(). Change-Id: I12cb1b07169c06c011a80f66d26451431db3948a
2021-06-08Spring clean/refactor of NPU driverJonny Svärd
These changes mostly focus on creating a better structure for the driver. Creating a better separation between driver and device(s). A short summary of what this commit contains: - Move driver specific defines from device to driver - Prefix device functions with ethosu_dev - Remove device specific register access' from driver - Remove device specific debug/dump functions - Add function prototypes for weak functions - Remove legacy ARM_NPU_STUB support - Rename ethosu_device.c to ethosu_device_u55.c - Remove redundant irq handler prototype - Remove (deprecated) hardcoded instance ethosu_drv - Simplify versioning API Split driver version and hardware version/information so that driver version can be queried without a driver instance. - Improve and simplify logging Make warning the new default severity level to print and reduce severity levels to: err warning info debug - Add severity prefix to log lines. Error messages print file and line number, debug messages print function by default. - Clarify some log messages - Small optimizations and bugfixes Change-Id: I2dfbfc3a40d7eca133c82f187f422325e1e6d314
2021-05-27Fixing compilation warnings21.05Kristofer Jonsson
Change-Id: I5b7be2481c577b04f1e6b2804cd5147fcdfbaf92
2021-05-26Optimizations21.05-rc3Kristofer Jonsson
Removing the ASSERT() makro using assert() instead. assert() is better controlled with the NDEBUG define. Using uintptr_t instead of uint32_t * for the NPU base address. This saves a division by 4 in the register read and write functions. Change-Id: I65a91fe35dc63666e50bdf7a756ad15b56dc66e9
2021-05-24[Core Driver] Update and remove pmu "v2"-functionsAnton Moberg
NPU PMU interface currently have functions that have been stepped each time a compatibilty breaking changed has been introduced. Old entrypoints have been redefined with macro to use the latest version for backwards compatibility. This series of patches will remove any such functions and macro to unify the interface. Update: Remove all "_v2"-functions and make the latest version the base entrypoint Update: Remove all redefine macros to only allow base entrypoint Change-Id: Ie125e2428a0336fe797c7455014d269a981f6f92
2021-05-21Weak mutex_create returns NULLAnton Moberg
The weak linked symbol ethosu_mutex_create() should in the default case return NULL. Change-Id: Ia92ba8fb85137dc6d676b4d4ea050c9c14085472
2021-05-21Add weak definition of ethosu_inference_begin/end to driverJens Elofsson
Add ethosu_inference_begin/end calls to ethosu_invoke_v3. Change-Id: I52f08ab3e3524d4d8f73d8bca7dc9559438d4857
2021-05-03[Core driver] Update to support removal of "_v"-functions21.05-rc221.05-rc1Anton Moberg
NPU driver interface currently have functions which have been stepped each time a compatibilty breaking changed has been introduced. Old entrypoints have been redefined with macro to use the latest version for backwards compatibility. This series of patches will remove any such functions and macro to unify the interface. Update: Remove all "_v"-functions and make the latest version the base entrypoint Update: Remove all redefine macros to only allow base entrypoint Note: static inline ethosu_invoke_v2() is kept as it is needed for tensorflow backwards compatibility. Will be removed in later patches. Change-Id: Ifa331daab35af24dc29e0d0007096902b8efc319
2021-04-30Fix unused parameter compilation warningAnton Moberg
Change-Id: I947f52a83cc9352caf45a7b242e5a15fbdedf6e3
2021-04-13Power request bit fixAnton Moberg
Changed so that power_request bit will be set if ETHOSU_POWER_Q_DISABLE instead of ETHOSU_CLOCK_Q_DISABLE. Change-Id: I571ab165f8856ed71f6e932be401312d43e9cca8
2021-04-13MLBEDSW-4301 - Verification check custom_dmaAnton Moberg
Added: custom_dma bit to config structs Added: hardware verification check for custom_dma Change-Id: I31dca56063b3ca773d02f0adf30d21facfd0b80d
2021-04-12Clock request disabled when PMU enabledAnton Moberg
Currently clock request is enabled, which means NPU will only request clock when working. When NPU is going into idle it will no longer request clock and thus PMU won't be clocked either, and thus affect the cycle counter. Added: enum for request clients (PMU or INFERENCE). Added: clock_request added to driver struct (bit 0: PMU, bit 1: INFERENCE) which keeps track of which client requests clock. Added: power_request added to driver struct (bit 0: PMU, bit 1: INFERENCE) which keeps track of which client requests power. Added set_clock_and_power_request(...) updates clock_request and power_request depending on which client calls it. Sets clock and power if both PMU and INFERENCE requests it. Added: Call set_clock_and_power_request(...) from PMU. Changed: replace ethosu_set_clock_and_power(...) with set_clock_and_power_request(...) in ethosu_init and ethosu_invoke Change-Id: Ie7d8aee639d4abbf879b05e9a82035d7c0d40d40
2021-03-23Multi NPU update APIsAnton Moberg
Modifying mutex and semaphore APIs allowing the driver to create any number of mutexes and semaphores. Using semaphore when waiting for interrupt. Making irq_triggered a member of the driver struct. Change-Id: Ib0645c9c7c0c029795269ac4b18e6ec29159d0f8
2021-03-19Make IRQ handler weakKristofer Jonsson
Allow the IRQ handler to be overridden for test cases that operate directly on top of the device driver. Change-Id: Iddf7aec041a3183583e6e4d8521d5a637c379689
2021-03-16Use event enum for configuring cycle counterPer Åstrand
The pmu configuration API expects the internal configuration values, and not the exported enum. Update the API to instead use the enums to be able to configure them correctly. Change-Id: I038b1841f2459baec4a62a6a4389ea4b5f4822f2
2021-02-23Trademark information21.02Kristofer Jonsson
Updating readme files with trademark information. Change-Id: Id5313510777b771231f42701faff1da93765deda
2021-02-19MLBEDSW-3868 - Driver multiNPU lockingAnton Moberg
Added: Weak linked symbols for locking if RTOS overrides Added: Semaphore Producer (release a reserved driver) Added: Semaphore Consumer (all drivers reserved and waiting for returned driver) Added: Mutex protect thread sensitive driver access Added: Weak linked symbols for yielding & resuming thread/task while waiting for IRQ Added: static inline function of ethosu_invoke_v2(...) for backwards compatibility Change-Id: If415a73b01b2357b31bb6da86f3038344c4245c6
2021-01-27MLBEDSW-3796 Ethos-U driver interface multiple NPUs21.02-rc221.02-rc1Anton Moberg
---ethosu_driver--- Modified: Declarations for the driver interfaces to support multiNPU (takes *drv) Added: ethosu_register_driver(...) to allow for a specific NPU driver to be instantiated Added: ethosu_deregister_Driver(...) to allow for a specific NPU driver to be de-registered Added: ethosu_reserve_driver(...) to reserve & return the first NPU driver instance available Added: ethosu_release_driver(...) to release a specific NPU driver instance and make it available again Added: *registered_drivers - A static linked list of drivers ready be used ---ethosu_pmu--- Modified: Declarations for pmu interfaces to support multiNPU (takes *drv) ---ethosu_device--- Modified: Resolved a circular include dependency (Remove include and add ETHOSU_PMU_NCOUNTERS macro) Change-Id: Iede41cd41bb0d5d483bd9d929d1b6c9ca5d3c48e
2021-01-20Update arch version comparisonDouglas Troha
* Allow driver to run cmdstreams that are compiled for older arch versions Change-Id: Ia49fc6c34b118bd91ce24bd0c34d95abc4c25d6a Signed-off-by: Douglas Troha <douglas.troha@arm.com>
2021-01-18Added simplified driver setupAnton Moberg
If NPU power is guaranteed always on parts of driver setup can be omitted to reduce the number of cycles required to setup the NPU drivers. By enabling dev_power_always_on, the setup cycles are reduced by approx. ~50%. (4462->2238 in prologue, 1167->642 in epilogue) Change-Id: I56d380c2571fedbc8888fb7c00fce0e4320f7fb7
2020-12-17MLBEDSW-3728 Resolve compiler warningsBhavik Patel
Change-Id: I3a8b88fb63aee8a4741ab1ca47bc49c663479e21
2020-12-02Remove CPU build flags from driverDaniel Anderberg
Using a cpu without proper interrupt handling is not really usefull in this context, so remove that option. Change-Id: Ie94fd9025c918eef72272e14ad5b0a95ea7dc4a4
2020-11-24Update handling of soft reset20.11Kristofer Jonsson
Change-Id: Ia22b2934b4c85e3c480931c8b92608365351a877
2020-11-24Restore default init values as init_v2Per Åstrand
The addition of init_v3 accidentely changed default values for soft resetting Ethos-U. Restore the default parameters to non-secure, user mode for init_v1 and init_v2 and also make sure to check return value from ethosu_soft_reset. Change-Id: If7377f11ad1db7ff988fdcba03320a54e6e0c0c1
2020-11-20Add API to set secure and privilege level of NPU20.11-rc2Per Åstrand
Change-Id: I8ca309ea4e5885865d5c9cf848500f45f83e08a2
2020-11-16Flush and invalidate data cachesPer Åstrand
Implement a weak linked function to handle the data cache. If the specific device is implementing a data cache the function should be overriden with device specific implementation of the flush/invalidate functions to make sure that the cache is properly maintained with regards to the NPU DMA transaction. Change-Id: I175644ef37bee62cc77d789d2b7bc3073e72ea5a
2020-11-10Fast memory error handling20.11-rc1Kristofer Jonsson
Return error if the fast memory area would be smaller than the spilling tensor. Change-Id: Ica89a3a933a3317a346e3479f5209ddc735d1c91
2020-10-23Add security informationKristofer Jonsson
Change-Id: Id96dd7824352992c07b5fa3ce8a39a84926557a8
2020-10-23Incorrect PMU cycle counterKristofer Jonsson
The low and high PMU cycle counter registers were not combined correctly. Change-Id: I6b311b33527557f459fd87ebd5d4d3228625106a
2020-10-20PMU counter shadowKristofer Jonsson
Storing PMU counters in shadow variables, in case the PMU was powered off or soft reset. Change-Id: I64ccf3fb6195f9be2d8315891ec612bb75404885
2020-10-16MLBEDSW-3094 Improve soft reset of ETHOSU when running jobsBhavik Patel
The ETHOSU is soft-reset only if the previous job failed or if the current privilege level is not user or if the current security level is not secure. Change-Id: Id10b96058d67805d179ac693537606d55e10379b
2020-09-28Silence gcc > 7 type-limits warningPer Åstrand
GCC > 7 warns that the selected type of the enum makes the comparisson unneccesary. Since the selected enum fits in an integer, the input parameter is casted to an integer to make the comparison valid and asserts that the enum is within valid enum values (which we know are monotonically growing). Change-Id: Id81799e2ac43a83b998541ce7531d2039202cd62
2020-09-28Don't use NULL for integer variablesPer Åstrand
Avoid using NULL to initialize and compare with for integer variables. Change-Id: I1c370a9bb213dc93db845149d123915273411551
2020-09-28Avoid casting to integer of different sizePer Åstrand
Avoid casting pointers to integer types larger than the pointer itself, and let assignement handle the conversion. Change-Id: Icfd2401617f2cd0fc96c2a6a9ad8d2d8bec94c55
2020-09-28Add default switch statementPer Åstrand
Change-Id: I591284c1b06b660fc303bb5b4fa282d403ee42c0
2020-09-28Use inttypes format specifiers for logging valuesPer Åstrand
GCC and armclang uses different uint32_t types which makes it impossible to use standard format specifiers to satisfy both compilers. Move to inttypes.h macros to handle it in a portable way. Change-Id: If85e1148d302b64660af66d8f462efba9ac5d86b
2020-09-23Resetting cached cycle counterKristofer Jonsson
Change-Id: Ia2a0ac76fca0fd12efee305a2ea2ebd5b2055b2d
2020-09-04Move fast memory area to core driverKristofer Jonsson
Change-Id: Ie4186f5ab881d5c13021299404322ff582180d26
2020-09-01Update README.mdKristofer Jonsson
Add information how to contribute and how to report security incidents. Change-Id: I7946e66b30c4e338ffa5a279b5d769a764c34f0f
2020-08-26Save and restore PMU settings and counters20.08-rc220.08Kristofer Jonsson
Change-Id: I54a1927fef998bc97f5507f2de9faf7d4a7960f5