diff --git a/targets/corstone-300/target.cpp b/targets/corstone-300/target.cpp
index f52a5db..46d6a77 100644
--- a/targets/corstone-300/target.cpp
+++ b/targets/corstone-300/target.cpp
@@ -1,6 +1,5 @@
 /*
- * SPDX-FileCopyrightText: Copyright 2020-2021, 2023 Arm Limited and/or its affiliates <open-source-office@arm.com>
- *
+ * SPDX-FileCopyrightText: Copyright 2020-2021, 2023-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
@@ -45,8 +44,10 @@
 #define ETHOSU_IRQ          56
 #define ETHOSU_IRQ_PRIORITY 5
 
-#define ETHOSU0_TA0_BASE_ADDRESS 0x48103000
-#define ETHOSU0_TA1_BASE_ADDRESS 0x48103200
+#define ETHOSU_TA0_BASE_ADDRESS 0x48103000
+#define ETHOSU_TA1_BASE_ADDRESS 0x48103200
+
+#define ETHOSU_NUM_TA 2
 
 /****************************************************************************
  * Variables
@@ -173,37 +174,36 @@
 #define ETHOSU_TA_HISTCNT_1 0
 #endif
 
-static uintptr_t ethosu_ta_base_addrs[ETHOSU_NPU_COUNT][ETHOSU_NPU_TA_COUNT] = {
-    {ETHOSU0_TA0_BASE_ADDRESS, ETHOSU0_TA1_BASE_ADDRESS}};
-struct timing_adapter ethosu_ta[ETHOSU_NPU_COUNT][ETHOSU_NPU_TA_COUNT];
-struct timing_adapter_settings ethosu_ta_settings[ETHOSU_NPU_TA_COUNT] = {{ETHOSU_TA_MAXR_0,
-                                                                           ETHOSU_TA_MAXW_0,
-                                                                           ETHOSU_TA_MAXRW_0,
-                                                                           ETHOSU_TA_RLATENCY_0,
-                                                                           ETHOSU_TA_WLATENCY_0,
-                                                                           ETHOSU_TA_PULSE_ON_0,
-                                                                           ETHOSU_TA_PULSE_OFF_0,
-                                                                           ETHOSU_TA_BWCAP_0,
-                                                                           ETHOSU_TA_PERFCTRL_0,
-                                                                           ETHOSU_TA_PERFCNT_0,
-                                                                           ETHOSU_TA_MODE_0,
-                                                                           0, // Read only register
-                                                                           ETHOSU_TA_HISTBIN_0,
-                                                                           ETHOSU_TA_HISTCNT_0},
-                                                                          {ETHOSU_TA_MAXR_1,
-                                                                           ETHOSU_TA_MAXW_1,
-                                                                           ETHOSU_TA_MAXRW_1,
-                                                                           ETHOSU_TA_RLATENCY_1,
-                                                                           ETHOSU_TA_WLATENCY_1,
-                                                                           ETHOSU_TA_PULSE_ON_1,
-                                                                           ETHOSU_TA_PULSE_OFF_1,
-                                                                           ETHOSU_TA_BWCAP_1,
-                                                                           ETHOSU_TA_PERFCTRL_1,
-                                                                           ETHOSU_TA_PERFCNT_1,
-                                                                           ETHOSU_TA_MODE_1,
-                                                                           0, // Read only register
-                                                                           ETHOSU_TA_HISTBIN_1,
-                                                                           ETHOSU_TA_HISTCNT_1}};
+static uintptr_t ethosu_ta_base_addrs[ETHOSU_NUM_TA] = {ETHOSU_TA0_BASE_ADDRESS, ETHOSU_TA1_BASE_ADDRESS};
+struct timing_adapter ethosu_ta[ETHOSU_NUM_TA];
+struct timing_adapter_settings ethosu_ta_settings[ETHOSU_NUM_TA] = {{ETHOSU_TA_MAXR_0,
+                                                                     ETHOSU_TA_MAXW_0,
+                                                                     ETHOSU_TA_MAXRW_0,
+                                                                     ETHOSU_TA_RLATENCY_0,
+                                                                     ETHOSU_TA_WLATENCY_0,
+                                                                     ETHOSU_TA_PULSE_ON_0,
+                                                                     ETHOSU_TA_PULSE_OFF_0,
+                                                                     ETHOSU_TA_BWCAP_0,
+                                                                     ETHOSU_TA_PERFCTRL_0,
+                                                                     ETHOSU_TA_PERFCNT_0,
+                                                                     ETHOSU_TA_MODE_0,
+                                                                     0, // Read only register
+                                                                     ETHOSU_TA_HISTBIN_0,
+                                                                     ETHOSU_TA_HISTCNT_0},
+                                                                    {ETHOSU_TA_MAXR_1,
+                                                                     ETHOSU_TA_MAXW_1,
+                                                                     ETHOSU_TA_MAXRW_1,
+                                                                     ETHOSU_TA_RLATENCY_1,
+                                                                     ETHOSU_TA_WLATENCY_1,
+                                                                     ETHOSU_TA_PULSE_ON_1,
+                                                                     ETHOSU_TA_PULSE_OFF_1,
+                                                                     ETHOSU_TA_BWCAP_1,
+                                                                     ETHOSU_TA_PERFCTRL_1,
+                                                                     ETHOSU_TA_PERFCNT_1,
+                                                                     ETHOSU_TA_MODE_1,
+                                                                     0, // Read only register
+                                                                     ETHOSU_TA_HISTBIN_1,
+                                                                     ETHOSU_TA_HISTCNT_1}};
 
 #endif
 
@@ -289,14 +289,12 @@
 
 #ifdef ETHOSU
     // Initialize timing adapter(s)
-    for (int i = 0; i < ETHOSU_NPU_COUNT; i++) {
-        for (int j = 0; j < ETHOSU_NPU_TA_COUNT; j++) {
-            if (ta_init(&ethosu_ta[i][j], ethosu_ta_base_addrs[i][j])) {
-                printf("Failed to initialize timing-adapter %d for NPU %d\n", j, i);
-            } else {
-                // Set the updated configuration
-                ta_set_all(&ethosu_ta[i][j], &ethosu_ta_settings[j]);
-            }
+    for (int i = 0; i < ETHOSU_NUM_TA; i++) {
+        if (ta_init(&ethosu_ta[i], ethosu_ta_base_addrs[i])) {
+            printf("Failed to initialize M%d timing-adapter\n", i);
+        } else {
+            // Set the updated configuration
+            ta_set_all(&ethosu_ta[i], &ethosu_ta_settings[i]);
         }
     }
 
