MLBEDSW-2594 Initialize the Ethos-U before every job

This includes resetting the Ethos-U and restoring the
previosuly saved PMU configuration (if any).

Change-Id: Id952fb6fef513468952b6a469e857510f8c0214c
diff --git a/include/ethosu_device.h b/include/ethosu_device.h
index 46772ba..81f24a9 100644
--- a/include/ethosu_device.h
+++ b/include/ethosu_device.h
@@ -22,6 +22,9 @@
  * Includes
  ******************************************************************************/
 
+#include "pmu_ethosu.h"
+
+#include <stdbool.h>
 #include <stdint.h>
 
 #ifdef __cplusplus
@@ -51,6 +54,10 @@
 struct ethosu_device
 {
     uintptr_t base_address;
+    bool restore_pmu_config;
+    uint64_t pmccntr;
+    uint32_t pmu_evcntr[ETHOSU_PMU_NCOUNTERS];
+    enum ethosu_pmu_event_type pmu_evtypr[ETHOSU_PMU_NCOUNTERS];
 };
 
 struct ethosu_id
@@ -355,6 +362,22 @@
 
 void ethosu_write_reg(struct ethosu_device *dev, uint32_t address, uint32_t value);
 
+/**
+ * Save the PMU configuration to ethosu_device struct.
+ * \param[in] dev              Ethos-U device where the PMU configuration is
+ *                             saved.
+ * \return                     \ref ethosu_error_codes
+ */
+enum ethosu_error_codes ethosu_save_pmu_config(struct ethosu_device *dev);
+
+/**
+ * Restore the PMU configuration from a ethosu_device struct.
+ * \param[in] dev              Ethos-U device where the PMU configuration is
+ *                             stored.
+ * \return                     \ref ethosu_error_codes
+ */
+enum ethosu_error_codes ethosu_restore_pmu_config(struct ethosu_device *dev);
+
 #ifdef __cplusplus
 }
 #endif