Age | Commit message (Collapse) | Author |
|
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
|
|
Added: custom_dma bit to config structs
Added: hardware verification check for custom_dma
Change-Id: I31dca56063b3ca773d02f0adf30d21facfd0b80d
|
|
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
|
|
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
|
|
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
|
|
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
|
|
---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
|
|
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
|
|
Change-Id: Ia22b2934b4c85e3c480931c8b92608365351a877
|
|
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
|
|
Change-Id: I8ca309ea4e5885865d5c9cf848500f45f83e08a2
|
|
Storing PMU counters in shadow variables, in case the PMU was powered
off or soft reset.
Change-Id: I64ccf3fb6195f9be2d8315891ec612bb75404885
|
|
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
|
|
Change-Id: Ie4186f5ab881d5c13021299404322ff582180d26
|
|
Change-Id: I54a1927fef998bc97f5507f2de9faf7d4a7960f5
|
|
Change-Id: I0f127f7460be2a5d2eda5be2868c91f58cac03c0
|
|
Change-Id: I84754f316ce940917516cb7f5c59189f523d4095
|
|
This includes resetting the Ethos-U and restoring the
previosuly saved PMU configuration (if any).
Change-Id: Id952fb6fef513468952b6a469e857510f8c0214c
|
|
Change-Id: I1145834000ff81d6e497a8fa77bf997478a80372
|
|
This change is done as a prerequisite to be able to set
base address for NPU through ethosu_init(). So instead of using
a mamory mapped struct we use the same functions to read/write
PMU registers as the rest of the ethos-u driver.
Change-Id: Ie1f6e6af4627cbe9375e2b2d079ba8017b6294d3
|
|
* Includes npu_active event
Signed-off-by: Douglas Troha <douglas.troha@arm.com>
Change-Id: I2346707c26b7c3709bb844c7b21365d714e9a089
|
|
Change-Id: I73c612746ca678d32d3dec3e1c5619ee1077c012
|
|
* Includes updates for 0.179
Change-Id: I8ab8e9d67ed5dabf9684ed7576d302a0831c1647
Signed-off-by: Douglas Troha <douglas.troha@arm.com>
|
|
Turn the IRQ initialization around, to have the application define the
interrupt handler and expose the driver routine that is to be called
when that happens.
Change-Id: Idbfba1b1d1a1eaf6678ee16e9583c496eb2287ed
|
|
Moving PMU files from ethosu_pmu to include and src.
Adding extern "C" to PMU header.
Removing CMake generated file.
Updating default path to CMSIS.
Removing timing adapter.
Change-Id: I4834c5361c14efe629c5cb36a17013d02cc765c8
|
|
Change-Id: If2e6ff0b6876380c597cdbc12a666a9cf1bf9dc4
|
|
Change-Id: Ieff4a4b66dcc8da09a2f959dfa6bc717cc816f5a
|
|
Change-Id: I541862775031c21e6483f26446a29dfe452382ab
|