diff --git a/applications/driver_unit_tests/command_stream.cpp b/applications/driver_unit_tests/command_stream.cpp
index e099b73..2de1ae8 100644
--- a/applications/driver_unit_tests/command_stream.cpp
+++ b/applications/driver_unit_tests/command_stream.cpp
@@ -102,7 +102,7 @@
     drv(ethosu_reserve_driver()),
     commandStream(_commandStream), basePointers(_basePointers), pmu(drv, _pmuEvents) {
     // Disable clock gating, else the NPU PMU will be clock gated and report too few cycles
-    ethosu_set_clock_and_power(&drv->dev, ETHOSU_CLOCK_Q_DISABLE, ETHOSU_POWER_Q_DISABLE);
+    ethosu_dev_set_clock_and_power(&drv->dev, ETHOSU_CLOCK_Q_DISABLE, ETHOSU_POWER_Q_DISABLE);
 
     // Use simplified driver setup
     ethosu_set_power_mode(drv, true);
@@ -115,16 +115,16 @@
 
 int CommandStream::run(size_t repeat) {
     // Base pointer array
-    uint64_t baseAddress[ETHOSU_DRIVER_BASEP_INDEXES];
-    size_t baseAddressSize[ETHOSU_DRIVER_BASEP_INDEXES];
-    for (size_t i = 0; i < ETHOSU_DRIVER_BASEP_INDEXES; i++) {
+    uint64_t baseAddress[ETHOSU_BASEP_INDEXES];
+    size_t baseAddressSize[ETHOSU_BASEP_INDEXES];
+    for (size_t i = 0; i < ETHOSU_BASEP_INDEXES; i++) {
         baseAddress[i]     = reinterpret_cast<uint64_t>(basePointers[i].data);
         baseAddressSize[i] = reinterpret_cast<size_t>(basePointers[i].size);
     }
 
     while (repeat-- > 0) {
         int error = ethosu_invoke(
-            drv, commandStream.data, commandStream.size, baseAddress, baseAddressSize, ETHOSU_DRIVER_BASEP_INDEXES);
+            drv, commandStream.data, commandStream.size, baseAddress, baseAddressSize, ETHOSU_BASEP_INDEXES);
 
         if (error != 0) {
             printf("Inference failed. error=%d\n", error);
@@ -134,7 +134,7 @@
         // Wait for interrupt
         while (true) {
             uint16_t status;
-            ethosu_get_status_mask(&drv->dev, &status);
+            ethosu_dev_get_status_mask(&drv->dev, &status);
 
             // Return if NPU raise error status
             if (status & 0xcc) {
diff --git a/applications/driver_unit_tests/command_stream.hpp b/applications/driver_unit_tests/command_stream.hpp
index 4a0b602..2004b03 100644
--- a/applications/driver_unit_tests/command_stream.hpp
+++ b/applications/driver_unit_tests/command_stream.hpp
@@ -74,7 +74,7 @@
  * CommandStream
  ****************************************************************************/
 
-using BasePointers = std::array<DataPointer, ETHOSU_DRIVER_BASEP_INDEXES>;
+using BasePointers = std::array<DataPointer, ETHOSU_BASEP_INDEXES>;
 
 class CommandStream {
 public:
diff --git a/targets/corstone-300/target.cpp b/targets/corstone-300/target.cpp
index 2344995..541d4a5 100644
--- a/targets/corstone-300/target.cpp
+++ b/targets/corstone-300/target.cpp
@@ -60,7 +60,7 @@
 #endif
 
 #ifdef ETHOSU
-struct ethosu_driver *ethosu0_driver = &ethosu_drv;
+struct ethosu_driver ethosu0_driver;
 #endif
 
 static uintptr_t ethosu_ta_base_addrs[ETHOSU_NPU_COUNT][ETHOSU_NPU_TA_COUNT] = {
@@ -135,7 +135,7 @@
 
 #ifdef ETHOSU
 void ethosuIrqHandler() {
-    ethosu_irq_handler(ethosu0_driver);
+    ethosu_irq_handler(&ethosu0_driver);
 }
 #endif
 
@@ -158,7 +158,7 @@
 
 #ifdef ETHOSU
     // Initialize Ethos-U NPU driver
-    if (ethosu_init(ethosu0_driver,
+    if (ethosu_init(&ethosu0_driver,
                     reinterpret_cast<void *>(ETHOSU_BASE_ADDRESS),
                     ethosu_scratch,
                     ETHOSU_FAST_MEMORY_SIZE,
