Move drivers to core_platform

Move to core_platform repository.
core_software repository should only contain components related to
running an inference. Drivers are platform components.

Change-Id: I232ef14ce151db7e89cef39ec3b2d6c0b4da8aef
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 62db31e..9e0f38b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -83,15 +83,13 @@
 # Build applications
 add_subdirectory(applications)
 
-# Build drivers
-add_subdirectory(drivers)
 
 # Merge libraries into static library
-target_link_libraries(ethosu_core INTERFACE tflu ethosu_applications ethosu_drivers)
+target_link_libraries(ethosu_core INTERFACE tflu ethosu_applications)
 
 message(STATUS "*******************************************************")
 message(STATUS "PROJECT_NAME                           : ${PROJECT_NAME}")
 message(STATUS "CORE_SOFTWARE_RTOS                     : ${CORE_SOFTWARE_RTOS}")
 message(STATUS "CORE_SOFTWARE_ACCELERATOR              : ${CORE_SOFTWARE_ACCELERATOR}")
 message(STATUS "ETHOSU_LOG_SEVERITY                    : ${ETHOSU_LOG_SEVERITY}")
-message(STATUS "*******************************************************")
\ No newline at end of file
+message(STATUS "*******************************************************")
diff --git a/drivers/CMakeLists.txt b/drivers/CMakeLists.txt
deleted file mode 100644
index 10b97cb..0000000
--- a/drivers/CMakeLists.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# Copyright (c) 2020-2021 Arm Limited. All rights reserved.
-#
-# SPDX-License-Identifier: Apache-2.0
-#
-# Licensed under the Apache License, Version 2.0 (the License); you may
-# not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an AS IS BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-add_library(ethosu_drivers INTERFACE)
-
-#############################################################################
-# Mailbox driver
-#############################################################################
-add_subdirectory(mailbox)
-target_link_libraries(ethosu_drivers INTERFACE ethosu_mailbox)
-
-#############################################################################
-# MHU drivers
-#############################################################################
-# NOTE: These are all built and linked from a CMake perspective. However the
-#       application code can instantiate one or more of the drivers. The
-#       one(s) not used will later be removed by the linker.
-add_subdirectory(mhu_v2)
-add_subdirectory(mhu_juno)
-add_subdirectory(mhu_dummy)
-target_link_libraries(ethosu_drivers INTERFACE ethosu_mhu_v2)
-target_link_libraries(ethosu_drivers INTERFACE ethosu_mhu_juno)
-target_link_libraries(ethosu_drivers INTERFACE ethosu_mhu_dummy)
-
-#############################################################################
-# UART drivers
-#############################################################################
-# NOTE: All UART drivers are built, however a platform application should
-#       link the appropriate driver target (see drivers/uart/CMakeLists.txt).
-add_subdirectory(uart)
-
-#############################################################################
-# Timing adapter driver
-#############################################################################
-add_subdirectory(timing_adapter)
-target_link_libraries(ethosu_drivers INTERFACE timing_adapter)
diff --git a/drivers/mailbox/CMakeLists.txt b/drivers/mailbox/CMakeLists.txt
deleted file mode 100644
index bf8889a..0000000
--- a/drivers/mailbox/CMakeLists.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-#
-# Copyright (c) 2020-2021 Arm Limited. All rights reserved.
-#
-# SPDX-License-Identifier: Apache-2.0
-#
-# Licensed under the Apache License, Version 2.0 (the License); you may
-# not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an AS IS BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-add_library(ethosu_mailbox STATIC)
-target_include_directories(ethosu_mailbox PUBLIC include)
-target_sources(ethosu_mailbox PRIVATE src/mailbox.cpp)
diff --git a/drivers/mailbox/include/mailbox.hpp b/drivers/mailbox/include/mailbox.hpp
deleted file mode 100644
index f3a2dc4..0000000
--- a/drivers/mailbox/include/mailbox.hpp
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Copyright (c) 2020 Arm Limited. All rights reserved.
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the License); you may
- * not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef MAILBOX_HPP
-#define MAILBOX_HPP
-
-#include <cstddef>
-#include <cstdint>
-#include <list>
-
-namespace Mailbox {
-
-/**
- * The Mailbox parent class
- *
- * Intended to be implemented by a driver subclass, see MHU_v2 driver as example.
- */
-class Mailbox {
-public:
-    /**
-     * Constructor/Destructor
-     */
-    Mailbox();
-    virtual ~Mailbox();
-
-    /**
-     * Intended to trigger an interrupt to an external block
-     * MUST be implemented by subclass.
-     */
-    virtual bool sendMessage() = 0;
-
-    /**
-     * Intended to be called when Cortex M has received an
-     * interrupt/event from mailbox/mhu. If an interrupt needs to be cleared,
-     * this is a good place to do that. MUST call notify().
-     * MUST be implemented by subclass.
-     */
-    virtual void handleMessage() = 0;
-
-    /**
-     * Can be used to verify that hardware versions match expected versions
-     * CAN be implemented by subclass, optional. Default impl returns true.
-     */
-    virtual bool verifyHardware();
-
-    /**
-     * Function signature for callbacks
-     */
-    typedef void (*CallbackFptr)(void *userArg);
-
-    /**
-     * Register a callback to be called when a message is received.
-     */
-    void registerCallback(CallbackFptr callback, void *userArg);
-
-    /**
-     * Remove a specific callback from the callback list.
-     */
-    void deregisterCallback(CallbackFptr callback, void *userArg);
-
-protected:
-    /**
-     * Calls every registered callback when a message has been received.
-     */
-    void notify();
-
-    /**
-     * Helper functions
-     */
-    uint32_t read32(volatile uint32_t *baseAddr, const uint32_t offset);
-    void write32(volatile uint32_t *baseAddr, const uint32_t offset, const uint32_t value);
-
-private:
-    struct Callback {
-        bool operator==(const Callback &b) const;
-        CallbackFptr callback;
-        void *userArg;
-    };
-
-    std::list<Callback> callbacks;
-};
-
-} // namespace Mailbox
-
-#endif
diff --git a/drivers/mailbox/src/mailbox.cpp b/drivers/mailbox/src/mailbox.cpp
deleted file mode 100644
index e5950f0..0000000
--- a/drivers/mailbox/src/mailbox.cpp
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright (c) 2020-2021 Arm Limited. All rights reserved.
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the License); you may
- * not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <mailbox.hpp>
-
-#include <cassert>
-#include <cstddef>
-
-namespace Mailbox {
-
-Mailbox::Mailbox() {}
-Mailbox::~Mailbox() {}
-
-bool Mailbox::verifyHardware() {
-    return true;
-}
-
-void Mailbox::registerCallback(CallbackFptr callback, void *userArg) {
-    callbacks.push_back({callback, userArg});
-}
-
-void Mailbox::deregisterCallback(CallbackFptr callback, void *userArg) {
-    callbacks.remove({callback, userArg});
-}
-
-void Mailbox::notify() {
-    for (auto &it : callbacks) {
-        it.callback(it.userArg);
-    }
-}
-
-uint32_t Mailbox::read32(volatile uint32_t *baseAddr, const uint32_t offset) {
-    assert(offset % 4 == 0);
-    volatile uint32_t *addr = baseAddr + (offset / 4);
-
-    return *addr;
-}
-
-void Mailbox::write32(volatile uint32_t *baseAddr, const uint32_t offset, const uint32_t value) {
-    assert(offset % 4 == 0);
-    volatile uint32_t *addr = baseAddr + (offset / 4);
-
-    *addr = value;
-}
-
-bool Mailbox::Callback::operator==(const Callback &b) const {
-    return (callback == b.callback && userArg == b.userArg);
-}
-
-} // namespace Mailbox
diff --git a/drivers/mhu_dummy/CMakeLists.txt b/drivers/mhu_dummy/CMakeLists.txt
deleted file mode 100644
index fca7d5b..0000000
--- a/drivers/mhu_dummy/CMakeLists.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-#
-# Copyright (c) 2020-2021 Arm Limited. All rights reserved.
-#
-# SPDX-License-Identifier: Apache-2.0
-#
-# Licensed under the Apache License, Version 2.0 (the License); you may
-# not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an AS IS BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-add_library(ethosu_mhu_dummy STATIC)
-target_include_directories(ethosu_mhu_dummy PUBLIC include)
-
-target_sources(ethosu_mhu_dummy PRIVATE src/mhu_dummy.cpp)
-target_link_libraries(ethosu_mhu_dummy PRIVATE ethosu_mailbox)
diff --git a/drivers/mhu_dummy/include/mhu_dummy.hpp b/drivers/mhu_dummy/include/mhu_dummy.hpp
deleted file mode 100644
index 365f392..0000000
--- a/drivers/mhu_dummy/include/mhu_dummy.hpp
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (c) 2020 Arm Limited. All rights reserved.
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the License); you may
- * not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef MHU_DUMMY_HPP
-#define MHU_DUMMY_HPP
-
-#include <mailbox.hpp>
-
-namespace Mailbox {
-
-class MHUDummy : public Mailbox {
-public:
-    MHUDummy();
-    virtual ~MHUDummy();
-    virtual bool sendMessage() final;
-    virtual void handleMessage() final;
-};
-
-} // namespace Mailbox
-
-#endif /* #ifndef MHU_DUMMY_HPP */
diff --git a/drivers/mhu_dummy/src/mhu_dummy.cpp b/drivers/mhu_dummy/src/mhu_dummy.cpp
deleted file mode 100644
index 3ae51e7..0000000
--- a/drivers/mhu_dummy/src/mhu_dummy.cpp
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (c) 2020-2021 Arm Limited. All rights reserved.
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the License); you may
- * not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <mhu_dummy.hpp>
-
-namespace Mailbox {
-
-MHUDummy::MHUDummy() {}
-MHUDummy::~MHUDummy() {}
-
-void MHUDummy::handleMessage() {
-    notify();
-}
-bool MHUDummy::sendMessage() {
-    return true;
-}
-
-} // namespace Mailbox
diff --git a/drivers/mhu_juno/CMakeLists.txt b/drivers/mhu_juno/CMakeLists.txt
deleted file mode 100644
index 2116ee7..0000000
--- a/drivers/mhu_juno/CMakeLists.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-#
-# Copyright (c) 2020-2021 Arm Limited. All rights reserved.
-#
-# SPDX-License-Identifier: Apache-2.0
-#
-# Licensed under the Apache License, Version 2.0 (the License); you may
-# not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an AS IS BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-add_library(ethosu_mhu_juno STATIC)
-target_include_directories(ethosu_mhu_juno PUBLIC include)
-
-target_sources(ethosu_mhu_juno PRIVATE src/mhu_juno.cpp)
-target_link_libraries(ethosu_mhu_juno PRIVATE ethosu_mailbox)
diff --git a/drivers/mhu_juno/include/mhu_juno.hpp b/drivers/mhu_juno/include/mhu_juno.hpp
deleted file mode 100644
index f864cd5..0000000
--- a/drivers/mhu_juno/include/mhu_juno.hpp
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (c) 2020 Arm Limited. All rights reserved.
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the License); you may
- * not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef MHU_JUNO_HPP
-#define MHU_JUNO_HPP
-
-#include <mailbox.hpp>
-
-#include <cstddef>
-#include <cstdint>
-
-namespace Mailbox {
-
-// Doorbell implementation only
-class MHUJuno : public Mailbox {
-public:
-    MHUJuno(const uint32_t baseAddress);
-    virtual ~MHUJuno();
-    virtual bool sendMessage() final;
-    virtual void handleMessage() final;
-    virtual bool verifyHardware() final;
-
-private:
-    /* Offsets */
-    static constexpr uint32_t CPU0_INTR_STAT = 0x00;
-    static constexpr uint32_t CPU0_INTR_SET  = 0x04;
-    static constexpr uint32_t CPU0_INTR_CLR  = 0x08;
-    static constexpr uint32_t CPU1_INTR_STAT = 0x10;
-    static constexpr uint32_t CPU1_INTR_SET  = 0x14;
-    static constexpr uint32_t CPU1_INTR_CLR  = 0x18;
-    static constexpr uint32_t OFFSET         = 0x10;
-    static constexpr uint32_t PIDR0          = 0xfe0;
-    static constexpr uint32_t PIDR1          = 0xfe4;
-    static constexpr uint32_t PIDR2          = 0xfe8;
-    static constexpr uint32_t PIDR3          = 0xfec;
-    static constexpr uint32_t PIDR4          = 0xfd0;
-    static constexpr uint32_t CIDR0          = 0xff0;
-    static constexpr uint32_t CIDR1          = 0xff4;
-    static constexpr uint32_t CIDR2          = 0xff8;
-    static constexpr uint32_t CIDR3          = 0xffc;
-
-    volatile uint32_t *baseAddr;
-
-    void clearMessage();
-    void write(uint32_t offset, uint32_t val);
-    uint32_t read(uint32_t offset);
-};
-
-} // namespace Mailbox
-
-#endif /* #ifndef MHU_JUNO_HPP */
diff --git a/drivers/mhu_juno/src/mhu_juno.cpp b/drivers/mhu_juno/src/mhu_juno.cpp
deleted file mode 100644
index 04b1352..0000000
--- a/drivers/mhu_juno/src/mhu_juno.cpp
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright (c) 2020-2021 Arm Limited. All rights reserved.
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the License); you may
- * not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <mhu_juno.hpp>
-
-#include <cassert>
-#include <cstddef>
-#include <cstdint>
-#include <cstdio>
-#include <cstring>
-
-namespace Mailbox {
-
-MHUJuno::MHUJuno(const uint32_t baseAddress) {
-    baseAddr = reinterpret_cast<volatile uint32_t *>(baseAddress);
-}
-
-void MHUJuno::handleMessage() {
-    clearMessage();
-    notify();
-}
-
-MHUJuno::~MHUJuno() {}
-
-// Doorbell only
-bool MHUJuno::sendMessage() {
-    write(CPU1_INTR_SET, 1);
-    return true;
-}
-// Doorbell only
-void MHUJuno::clearMessage() {
-    write(CPU0_INTR_CLR, 0xF);
-}
-
-bool MHUJuno::verifyHardware() {
-    uint32_t pidr0 = read(PIDR0);
-    uint32_t pidr1 = read(PIDR1);
-    uint32_t pidr2 = read(PIDR2);
-    uint32_t pidr3 = read(PIDR3);
-    uint32_t pidr4 = read(PIDR4);
-    uint32_t cidr0 = read(CIDR0);
-    uint32_t cidr1 = read(CIDR1);
-    uint32_t cidr2 = read(CIDR2);
-    uint32_t cidr3 = read(CIDR3);
-
-    if (pidr0 != 0x56 || pidr1 != 0xb8 || pidr2 != 0x0b || pidr3 != 0x00 || pidr4 != 0x04 || cidr0 != 0x0d ||
-        cidr1 != 0xf0 || cidr2 != 0x05 || cidr3 != 0xb1) {
-        return false;
-    }
-    return true;
-}
-
-void MHUJuno::write(const uint32_t offset, const uint32_t value) {
-    write32(baseAddr, offset, value);
-}
-
-uint32_t MHUJuno::read(const uint32_t offset) {
-    return read32(baseAddr, offset);
-}
-
-} // namespace Mailbox
diff --git a/drivers/mhu_v2/CMakeLists.txt b/drivers/mhu_v2/CMakeLists.txt
deleted file mode 100644
index 2505901..0000000
--- a/drivers/mhu_v2/CMakeLists.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-#
-# Copyright (c) 2020-2021 Arm Limited. All rights reserved.
-#
-# SPDX-License-Identifier: Apache-2.0
-#
-# Licensed under the Apache License, Version 2.0 (the License); you may
-# not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an AS IS BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-add_library(ethosu_mhu_v2 STATIC)
-target_include_directories(ethosu_mhu_v2 PUBLIC include)
-
-target_sources(ethosu_mhu_v2 PRIVATE src/mhu_v2.cpp)
-target_link_libraries(ethosu_mhu_v2 PRIVATE ethosu_mailbox ethosu_log)
diff --git a/drivers/mhu_v2/include/mhu_v2.hpp b/drivers/mhu_v2/include/mhu_v2.hpp
deleted file mode 100644
index 881c0ea..0000000
--- a/drivers/mhu_v2/include/mhu_v2.hpp
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * Copyright (c) 2020 Arm Limited. All rights reserved.
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the License); you may
- * not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef MHU_V2_HPP
-#define MHU_V2_HPP
-
-#include <mailbox.hpp>
-
-#include <cstddef>
-#include <cstdint>
-#include <cstdio>
-#include <cstring>
-
-namespace Mailbox {
-/*
- * SENDER OVERVIEW
- * ------------------------------------------------------------------------
- * Offset       Access Type Register Name                        Short Name
- * ------------------------------------------------------------------------
- * 0x000-0xF7C  -           Sender Channel Window 0-123          -
- * 0xF80        RO          Message Handling Unit Configuration  MHU_CFG
- * 0xF84        RW          Response Configuration               RESP_CFG
- * 0xF88        RW          Access Request                       ACCESS_REQUEST
- * 0xF8C        RO          Access Ready                         ACCESS_READY
- * 0xF90        RO          Interrupt Status                     INT_ST
- * 0xF94        WO          Interrupt Clear                      INT_CLR
- * 0xF98        RW          Interrupt Enable                     INT_EN
- * 0xF9C-0xFC4  RO          Reserved                             -
- * 0xFC8        RO          Implementer Identification Register  IIDR
- * 0xFCC        RO          Architecture Identification Register AIDR
- * 0xFD0-0xFFC  -           IMPL DEF Identification Regs         -
- */
-
-/*
- * RECEIVER OVERVIEW
- * ------------------------------------------------------------------------
- * Offset       Access Type Register Name                        Short Name
- * ------------------------------------------------------------------------
- * 0x000-0xF7C  -           Receiver Channel Window 0-123        -
- * 0xF80        RO          Message Handling Unit Configuration  MHU_CFG
- * 0xF84-0xFC4  RO          Reserved                             -
- * 0xFC8        RO          Implementer Identification Register  IIDR
- * 0xFCC        RO          Architecture Identification Register AIDR
- * 0xFD0-0xFFC  -           IMPL DEF Identification Regs         -
- */
-
-/*
- * Sender Channel Window
- * ------------------------------------------------------------------------
- * Offset       Access Type Register Name                        Short Name
- * ------------------------------------------------------------------------
- * 0x00         RO          Channel Status                       CH_ST
- * 0x04         RO          Reserved                             -
- * 0x08         RO          Reserved                             -
- * 0x0C         WO          Channel Set                          CH_SET
- * 0x10         RO          Reserved                             -
- * 0x14         RO          Reserved                             -
- * 0x18         RO          Reserved                             -
- * 0x1C         RO          Reserved                             -
- */
-
-/*
- * Receiver Channel Window
- * ------------------------------------------------------------------------
- * Offset       Access Type Register Name                        Short Name
- * ------------------------------------------------------------------------
- * 0x00         RO          Channel Status                       CH_ST
- * 0x04         RO          Channel Status Masked                CH_ST_MSK
- * 0x08         WO          Channel Clear                        CH_CLR
- * 0x0C         RO          Reserved                             -
- * 0x10         RO          Channel Mask Status                  CH_MSK_ST
- * 0x14         WO          Channel Mask Set                     CH_MSK_SET
- * 0x18         WO          Channel Mask Clear                   CH_MSK_CLR
- * 0x1C         RO          Reserved                             -
- */
-
-// Doorbell implementation only
-// NOTE: MHUv2 is unidirectional. Two MHU's are needed for bidirectional
-//       messaging. txBase/rxBase refers to the base address of _two_
-//       separate MHU blocks.
-class MHUv2 : public Mailbox {
-public:
-    MHUv2(const uint32_t txBaseAddress, const uint32_t rxBaseAddress);
-    virtual ~MHUv2();
-    virtual bool sendMessage() final;
-    virtual void handleMessage() final;
-    virtual bool verifyHardware() final;
-
-private:
-    /* Offsets */
-    static constexpr uint32_t MHUv2_CH_ST                   = 0x00;
-    static constexpr uint32_t MHUv2_CH_ST_MSK               = 0x04;
-    static constexpr uint32_t MHUv2_CH_CLR                  = 0x08;
-    static constexpr uint32_t MHUv2_CH_SET                  = 0x0C;
-    static constexpr uint32_t MHUv2_CH_MSK_ST               = 0x10;
-    static constexpr uint32_t MHUv2_CH_MSK_SET              = 0x14;
-    static constexpr uint32_t MHUv2_CH_MSK_CLR              = 0x18;
-    static constexpr uint32_t MHUv2_CH_INT_CLR              = 0x14;
-    static constexpr uint32_t MHUv2_CH_INT_EN               = 0x18;
-    static constexpr uint32_t MHUv2_SND_CHAN_WINDOW_SIZE    = 0x20;
-    static constexpr uint32_t MHUv2_SND_MHU_CFG_OFFS        = 0xF80;
-    static constexpr uint32_t MHUv2_SND_RESP_CFG_OFFS       = 0xF84;
-    static constexpr uint32_t MHUv2_SND_ACCESS_REQUEST_OFFS = 0xF88;
-    static constexpr uint32_t MHUv2_SND_ACCESS_READY_OFFS   = 0xF8C;
-    static constexpr uint32_t MHUv2_SND_INT_ST_OFFS         = 0xF90;
-    static constexpr uint32_t MHUv2_SND_INT_CLR_OFFS        = 0xF94;
-    static constexpr uint32_t MHUv2_SND_INT_EN_OFFS         = 0xF98;
-    static constexpr uint32_t MHUv2_SND_IIDR_OFFS           = 0xFC8;
-    static constexpr uint32_t MHUv2_SND_AIDR_OFFS           = 0xFCC;
-    static constexpr uint32_t MHUv2_RCV_CHAN_WINDOW_SIZE    = 0x20;
-    static constexpr uint32_t MHUv2_RCV_MHU_CFG_OFFS        = 0xF80;
-    static constexpr uint32_t MHUv2_RCV_IIDR_OFFS           = 0xFC8;
-    static constexpr uint32_t MHUv2_RCV_AIDR_OFFS           = 0xFCC;
-    static constexpr uint32_t MHUv2_RCV_INT_EN_OFFS         = 0xF98;
-
-    struct aidr_t {
-        uint32_t ARCH_MINOR_REV : 4;
-        uint32_t ARCH_MAJOR_REV : 4;
-        uint32_t RESERVED : 24;
-    };
-
-    volatile uint32_t *txBaseAddr;
-    volatile uint32_t *rxBaseAddr;
-
-    void clearMessage();
-    void printAIDR(bool tx = true, bool rx = true);
-
-    void txWrite(uint32_t offset, uint32_t value);
-    void rxWrite(uint32_t offset, uint32_t value);
-    uint32_t txRead(uint32_t offset);
-    uint32_t rxRead(uint32_t offset);
-
-    // Sender/tx
-    uint32_t getAccessReady();
-    uint32_t getAccessRequest();
-    uint32_t getInterruptStatus();
-    uint32_t getTxAIDR();
-    uint32_t getTxStatusForChan(uint8_t chan);
-    void enableAccessRequest();
-    void disableAccessRequest();
-    void setCombinedClearInterrupt(bool enable);
-    void setReadyNotReadyInterrupts(bool enable);
-
-    // Receiver/rx
-    uint32_t getRxAIDR();
-    uint32_t getRxStatusForChan(uint8_t chan);
-    void setCombinedRecvInterrupt(bool enable);
-    void enableClearChanInterrupt(uint8_t chan);
-    void disableClearChanInterrupt(uint8_t chan);
-};
-
-} // namespace Mailbox
-
-#endif /* #ifndef MHU_V2_HPP */
diff --git a/drivers/timing_adapter/CMakeLists.txt b/drivers/timing_adapter/CMakeLists.txt
deleted file mode 100644
index f17eaeb..0000000
--- a/drivers/timing_adapter/CMakeLists.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-#
-# Copyright (c) 2020-2021 Arm Limited. All rights reserved.
-#
-# SPDX-License-Identifier: Apache-2.0
-#
-# Licensed under the Apache License, Version 2.0 (the License); you may
-# not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an AS IS BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-add_library(timing_adapter STATIC)
-target_include_directories(timing_adapter PUBLIC include)
-
-target_sources(timing_adapter PRIVATE src/timing_adapter.c)
-
diff --git a/drivers/timing_adapter/include/timing_adapter.h b/drivers/timing_adapter/include/timing_adapter.h
deleted file mode 100644
index ef4f9b9..0000000
--- a/drivers/timing_adapter/include/timing_adapter.h
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * Copyright (c) 2019-2021 Arm Limited. All rights reserved.
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the License); you may
- * not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef TIMING_ADAPTER_H_
-#define TIMING_ADAPTER_H_
-
-#include <stdint.h>
-
-#if defined __cplusplus
-extern "C" {
-#endif
-
-/** TIMING ADAPTER
- *
- * The timing adapter is an AXI-to-AXI bridge for providing well-defined memory timing
- * to allow performance evaluation of an AXI master. The bridge works by delaying the
- * responses from the memory according to run-time configurable parameters that can be
- * set in the timing adapter. Parameters include read and write response latencies,
- * no. of outstanding transactions, and a model of interferring traffic.
- */
-
-struct timing_adapter {
-    uintptr_t base_addr;
-};
-
-/** LIMITATIONS FOR FVP:
- *
- *  - TA_MODE is hardcoded to 1 (one) at all times.
- *  - Only TA_PERFCTRL_AWTRANS and TA_PERFCTRL_ARTRANS support is
- *    implemented for the performance counter.
- */
-
-struct timing_adapter_settings {
-    uint32_t maxr;       // 6-bit field. Max no. of pending reads. 0=infinite
-    uint32_t maxw;       // 6-bit field. Max no. of pending writes. 0=infinite
-    uint32_t maxrw;      // 6-bit field. Max no. of pending reads+writes. 0=infinite
-    uint32_t rlatency;   // 12-bit field. Minimum latency (clock cycles) from AVALID to RVALID.
-    uint32_t wlatency;   // 12-bit field. Minimum latency (clock cycles) from WVALID&WLAST to BVALID.
-    uint32_t pulse_on;   // No. of cycles addresses let through (0-65535).
-    uint32_t pulse_off;  // No. of cycles addresses blocked (0-65535).
-    uint32_t bwcap;      // 16-bit field. Max no. of 64-bit words transfered per pulse cycle 0=infinite
-    uint32_t perfctrl;   // 6-bit field selecting an event for event counter 0=default
-    uint32_t perfcnt;    // 32-bit event counter
-    uint32_t mode;       // Bit 0: 1=enable dynamic clocking to avoid underrun
-                         // Bit 1: 1=enable random AR reordering (0=default)
-                         // Bit 2: 1=enable random R reordering (0=default)
-                         // Bit 3: 1=enable random B reordering (0=default)
-                         // Bit 11-4: Frequency scale 0=full speed, 255=(1/256) speed
-    uint32_t maxpending; // (Read-only) Max supported value in MAXR and MAXW registers
-    uint32_t histbin;    // Controlls which histogram bin (0-15) that should be accessed by HISTCNT.
-    uint32_t histcnt;    // 32-bit field. Read/write the selected histogram bin.
-};
-
-enum timing_adapter_perfctrl_settings {
-    TA_PERFCTRL_OFF = 0,     // Disable performance counting
-    TA_PERFCTRL_CYCLES,      // Count all cycles (root clock)
-    TA_PERFCTRL_UNDERRUN_R,  // Unable to meet RLATENCY deadline
-    TA_PERFCTRL_UNDERRUN_B,  // Unable to meet WLATENCY deadline
-    TA_PERFCTRL_OVERFLOW_AR, // Internal read address FIFO full
-    TA_PERFCTRL_OVERFLOW_AW, // Internal write address FIFO full
-    TA_PERFCTRL_OVERFLOW_R,  // Internal read data FIFO full
-    TA_PERFCTRL_OVERFLOW_W,  // Internal write data FIFO full
-    TA_PERFCTRL_OVERFLOW_B,  // Internal write response FIFO full
-    TA_PERFCTRL_RREADY,      // RREADY wait state
-    TA_PERFCTRL_BREADY,      // BREADY wait state
-    TA_PERFCTRL_RTRANS,      // Handshake on R channel
-    TA_PERFCTRL_WTRANS,      // Handshake on W channel
-    TA_PERFCTRL_BTRANS,      // Handshake on B channel
-    TA_PERFCTRL_ARTRANS,     // Handshake on AR channel
-    TA_PERFCTRL_AWTRANS,     // Handshake on AW channel
-    TA_PERFCTRL_ARQTIME,     // Histogram of how much time spent with outstanding read transactions
-    TA_PERFCTRL_AWQTIME,     // Histogram of how much time spent with outstanding write transactions
-    TA_PERFCTRL_MCLK_ON,     // Count cycles when DUT clock is on
-    TA_PERFCTRL_MCLK_OFF,    // Count cycles when DUT clock is off
-    TA_PERFCTRL_ARLEN0 = 32, // Handshake on AR channel with ARLEN=0
-    TA_PERFCTRL_AWLEN0 = 48  // Handshake on AW channel with AWLEN=0
-};
-
-int ta_init(struct timing_adapter *ta, uintptr_t base_addr);
-void ta_uninit(struct timing_adapter *ta);
-
-void ta_set_all(struct timing_adapter *ta, struct timing_adapter_settings *in);
-void ta_set_maxr(struct timing_adapter *ta, uint32_t val);
-void ta_set_maxw(struct timing_adapter *ta, uint32_t val);
-void ta_set_maxrw(struct timing_adapter *ta, uint32_t val);
-void ta_set_rlatency(struct timing_adapter *ta, uint32_t val);
-void ta_set_wlatency(struct timing_adapter *ta, uint32_t val);
-void ta_set_pulse_on(struct timing_adapter *ta, uint32_t val);
-void ta_set_pulse_off(struct timing_adapter *ta, uint32_t val);
-void ta_set_bwcap(struct timing_adapter *ta, uint32_t val);
-void ta_set_perfctrl(struct timing_adapter *ta, uint32_t val);
-void ta_set_perfcnt(struct timing_adapter *ta, uint32_t val);
-void ta_set_mode(struct timing_adapter *ta, uint32_t val);
-void ta_set_histbin(struct timing_adapter *ta, uint32_t val);
-void ta_set_histcnt(struct timing_adapter *ta, uint32_t val);
-
-void ta_get_all(struct timing_adapter *ta, struct timing_adapter_settings *out);
-uint32_t ta_get_maxr(struct timing_adapter *ta);
-uint32_t ta_get_maxw(struct timing_adapter *ta);
-uint32_t ta_get_maxrw(struct timing_adapter *ta);
-uint32_t ta_get_rlatency(struct timing_adapter *ta);
-uint32_t ta_get_wlatency(struct timing_adapter *ta);
-uint32_t ta_get_pulse_on(struct timing_adapter *ta);
-uint32_t ta_get_pulse_off(struct timing_adapter *ta);
-uint32_t ta_get_bwcap(struct timing_adapter *ta);
-uint32_t ta_get_perfctrl(struct timing_adapter *ta);
-uint32_t ta_get_perfcnt(struct timing_adapter *ta);
-uint32_t ta_get_mode(struct timing_adapter *ta);
-uint32_t ta_get_maxpending(struct timing_adapter *ta);
-uint32_t ta_get_histbin(struct timing_adapter *ta);
-uint32_t ta_get_histcnt(struct timing_adapter *ta);
-uint32_t ta_get_version(struct timing_adapter *ta);
-
-#if defined __cplusplus
-}
-#endif
-
-#endif
diff --git a/drivers/timing_adapter/src/timing_adapter.c b/drivers/timing_adapter/src/timing_adapter.c
deleted file mode 100644
index 65e4178..0000000
--- a/drivers/timing_adapter/src/timing_adapter.c
+++ /dev/null
@@ -1,215 +0,0 @@
-/*
- * Copyright (c) 2020-2021 Arm Limited. All rights reserved.
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the License); you may
- * not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <stdint.h>
-#include <timing_adapter.h>
-
-// Register offsets
-#define TA_MAXR       0x00
-#define TA_MAXW       0x04
-#define TA_MAXRW      0x08
-#define TA_RLATENCY   0x0C
-#define TA_WLATENCY   0x10
-#define TA_PULSE_ON   0x14
-#define TA_PULSE_OFF  0x18
-#define TA_BWCAP      0x1C
-#define TA_PERFCTRL   0x20
-#define TA_PERFCNT    0x24
-#define TA_MODE       0x28
-#define TA_MAXPENDING 0x2C
-#define TA_HISTBIN    0x30
-#define TA_HISTCNT    0x34
-#define TA_VERSION    0x38
-
-// Register masks
-#define TA_MAXR_MASK       0x0000003F
-#define TA_MAXW_MASK       0x0000003F
-#define TA_MAXRW_MASK      0x0000003F
-#define TA_RLATENCY_MASK   0x00000FFF
-#define TA_WLATENCY_MASK   0x00000FFF
-#define TA_PULSE_ON_MASK   0x0000FFFF
-#define TA_PULSE_OFF_MASK  0x0000FFFF
-#define TA_BWCAP_MASK      0x0000FFFF
-#define TA_PERFCTRL_MASK   0x0000003F
-#define TA_PERFCNT_MASK    0xFFFFFFFF
-#define TA_MODE_MASK       0x00000FFF
-#define TA_MAXPENDING_MASK 0xFFFFFFFF
-#define TA_HISTBIN_MASK    0x0000000F
-#define TA_HISTCNT_MASK    0xFFFFFFFF
-
-#define TA_VERSION_SUPPORTED 0x1117
-
-int ta_init(struct timing_adapter *ta, uintptr_t base_addr) {
-    ta->base_addr = base_addr;
-
-    if (ta_get_version(ta) != TA_VERSION_SUPPORTED) {
-        return -1;
-    }
-    return 0;
-}
-
-void ta_uninit(struct timing_adapter *ta) {
-    ta->base_addr = 0;
-}
-
-// -- Set API --------------------------------------
-void ta_set_all(struct timing_adapter *ta, struct timing_adapter_settings *in) {
-    ta_set_maxr(ta, in->maxr);
-    ta_set_maxw(ta, in->maxw);
-    ta_set_maxrw(ta, in->maxrw);
-    ta_set_rlatency(ta, in->rlatency);
-    ta_set_wlatency(ta, in->wlatency);
-    ta_set_pulse_on(ta, in->pulse_on);
-    ta_set_pulse_off(ta, in->pulse_off);
-    ta_set_bwcap(ta, in->bwcap);
-    ta_set_perfctrl(ta, in->perfctrl);
-    ta_set_perfcnt(ta, in->perfcnt);
-    ta_set_mode(ta, in->mode);
-    ta_set_histbin(ta, in->histbin);
-    ta_set_histcnt(ta, in->histcnt);
-}
-
-void ta_set_maxr(struct timing_adapter *ta, uint32_t val) {
-    *(volatile uint32_t *)(ta->base_addr + TA_MAXR) = val & TA_MAXR_MASK;
-};
-
-void ta_set_maxw(struct timing_adapter *ta, uint32_t val) {
-    *(volatile uint32_t *)(ta->base_addr + TA_MAXW) = val & TA_MAXW_MASK;
-};
-
-void ta_set_maxrw(struct timing_adapter *ta, uint32_t val) {
-    *(volatile uint32_t *)(ta->base_addr + TA_MAXRW) = val & TA_MAXRW_MASK;
-};
-
-void ta_set_rlatency(struct timing_adapter *ta, uint32_t val) {
-    *(volatile uint32_t *)(ta->base_addr + TA_RLATENCY) = val & TA_RLATENCY_MASK;
-};
-
-void ta_set_wlatency(struct timing_adapter *ta, uint32_t val) {
-    *(volatile uint32_t *)(ta->base_addr + TA_WLATENCY) = val & TA_WLATENCY_MASK;
-};
-
-void ta_set_pulse_on(struct timing_adapter *ta, uint32_t val) {
-    *(volatile uint32_t *)(ta->base_addr + TA_PULSE_ON) = val & TA_PULSE_ON_MASK;
-};
-
-void ta_set_pulse_off(struct timing_adapter *ta, uint32_t val) {
-    *(volatile uint32_t *)(ta->base_addr + TA_PULSE_OFF) = val & TA_PULSE_OFF_MASK;
-};
-
-void ta_set_bwcap(struct timing_adapter *ta, uint32_t val) {
-    *(volatile uint32_t *)(ta->base_addr + TA_BWCAP) = val & TA_BWCAP_MASK;
-};
-
-void ta_set_perfctrl(struct timing_adapter *ta, uint32_t val) {
-    *(volatile uint32_t *)(ta->base_addr + TA_PERFCTRL) = val & TA_PERFCTRL_MASK;
-};
-
-void ta_set_perfcnt(struct timing_adapter *ta, uint32_t val) {
-    *(volatile uint32_t *)(ta->base_addr + TA_PERFCNT) = val & TA_PERFCNT_MASK;
-};
-
-void ta_set_mode(struct timing_adapter *ta, uint32_t val) {
-    *(volatile uint32_t *)(ta->base_addr + TA_MODE) = val & TA_MODE_MASK;
-};
-
-void ta_set_histbin(struct timing_adapter *ta, uint32_t val) {
-    *(volatile uint32_t *)(ta->base_addr + TA_HISTBIN) = val & TA_HISTBIN_MASK;
-};
-
-void ta_set_histcnt(struct timing_adapter *ta, uint32_t val) {
-    *(volatile uint32_t *)(ta->base_addr + TA_HISTCNT) = val & TA_HISTCNT_MASK;
-};
-
-// -- Get API --------------------------------------
-void ta_get_all(struct timing_adapter *ta, struct timing_adapter_settings *out) {
-    out->maxr       = ta_get_maxr(ta);
-    out->maxw       = ta_get_maxw(ta);
-    out->maxrw      = ta_get_maxrw(ta);
-    out->rlatency   = ta_get_rlatency(ta);
-    out->wlatency   = ta_get_wlatency(ta);
-    out->pulse_on   = ta_get_pulse_on(ta);
-    out->pulse_off  = ta_get_pulse_off(ta);
-    out->bwcap      = ta_get_bwcap(ta);
-    out->perfctrl   = ta_get_perfctrl(ta);
-    out->perfcnt    = ta_get_perfcnt(ta);
-    out->mode       = ta_get_mode(ta);
-    out->maxpending = ta_get_maxpending(ta);
-    out->histbin    = ta_get_histbin(ta);
-    out->histcnt    = ta_get_histcnt(ta);
-}
-
-uint32_t ta_get_maxr(struct timing_adapter *ta) {
-    return *(volatile uint32_t *)(ta->base_addr + TA_MAXR) & TA_MAXR_MASK;
-};
-
-uint32_t ta_get_maxw(struct timing_adapter *ta) {
-    return *(volatile uint32_t *)(ta->base_addr + TA_MAXW) & TA_MAXW_MASK;
-};
-
-uint32_t ta_get_maxrw(struct timing_adapter *ta) {
-    return *(volatile uint32_t *)(ta->base_addr + TA_MAXRW) & TA_MAXRW_MASK;
-};
-
-uint32_t ta_get_rlatency(struct timing_adapter *ta) {
-    return *(volatile uint32_t *)(ta->base_addr + TA_RLATENCY) & TA_RLATENCY_MASK;
-};
-
-uint32_t ta_get_wlatency(struct timing_adapter *ta) {
-    return *(volatile uint32_t *)(ta->base_addr + TA_WLATENCY) & TA_WLATENCY_MASK;
-};
-
-uint32_t ta_get_pulse_on(struct timing_adapter *ta) {
-    return *(volatile uint32_t *)(ta->base_addr + TA_PULSE_ON) & TA_PULSE_ON_MASK;
-};
-
-uint32_t ta_get_pulse_off(struct timing_adapter *ta) {
-    return *(volatile uint32_t *)(ta->base_addr + TA_PULSE_OFF) & TA_PULSE_OFF_MASK;
-};
-
-uint32_t ta_get_bwcap(struct timing_adapter *ta) {
-    return *(volatile uint32_t *)(ta->base_addr + TA_BWCAP) & TA_BWCAP_MASK;
-};
-
-uint32_t ta_get_perfctrl(struct timing_adapter *ta) {
-    return *(volatile uint32_t *)(ta->base_addr + TA_PERFCTRL) & TA_PERFCTRL_MASK;
-};
-
-uint32_t ta_get_perfcnt(struct timing_adapter *ta) {
-    return *(volatile uint32_t *)(ta->base_addr + TA_PERFCNT) & TA_PERFCNT_MASK;
-};
-
-uint32_t ta_get_mode(struct timing_adapter *ta) {
-    return *(volatile uint32_t *)(ta->base_addr + TA_MODE) & TA_MODE_MASK;
-};
-
-uint32_t ta_get_maxpending(struct timing_adapter *ta) {
-    return *(volatile uint32_t *)(ta->base_addr + TA_MAXPENDING) & TA_MAXPENDING_MASK;
-};
-
-uint32_t ta_get_histbin(struct timing_adapter *ta) {
-    return *(volatile uint32_t *)(ta->base_addr + TA_HISTBIN) & TA_HISTBIN_MASK;
-};
-
-uint32_t ta_get_histcnt(struct timing_adapter *ta) {
-    return *(volatile uint32_t *)(ta->base_addr + TA_HISTCNT) & TA_HISTCNT_MASK;
-};
-
-uint32_t ta_get_version(struct timing_adapter *ta) {
-    return *(volatile uint32_t *)(ta->base_addr + TA_VERSION);
-};
diff --git a/drivers/uart/CMakeLists.txt b/drivers/uart/CMakeLists.txt
deleted file mode 100644
index 1293bdc..0000000
--- a/drivers/uart/CMakeLists.txt
+++ /dev/null
@@ -1,41 +0,0 @@
-#
-# Copyright (c) 2019-2020 Arm Limited. All rights reserved.
-#
-# SPDX-License-Identifier: Apache-2.0
-#
-# Licensed under the Apache License, Version 2.0 (the License); you may
-# not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an AS IS BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-add_library(ethosu_uart_common INTERFACE)
-
-target_include_directories(ethosu_uart_common INTERFACE
-                           include
-                           ${CMAKE_CURRENT_BINARY_DIR})
-
-# UART configuration (can be overriden from user project)
-set(UART0_BASE        "0xFFFFFFFF" CACHE STRING "UART base address")
-set(UART0_BAUDRATE    "115200"     CACHE STRING "UART baudrate")
-set(SYSTEM_CORE_CLOCK "25000000"   CACHE STRING "System core clock (Hz)")
-
-# Generate UART configuration file
-configure_file("${CMAKE_CURRENT_SOURCE_DIR}/uart_config.h.in" "${CMAKE_CURRENT_BINARY_DIR}/uart_config.h")
-
-# Drivers
-add_library(ethosu_uart_cmsdk_apb STATIC src/uart_cmsdk_apb.c)
-target_link_libraries(ethosu_uart_cmsdk_apb PUBLIC ethosu_uart_common)
-
-add_library(ethosu_uart_pl011 STATIC src/uart_pl011.c)
-target_link_libraries(ethosu_uart_pl011 PUBLIC ethosu_uart_common)
-
-add_library(ethosu_uart_dummy STATIC src/uart_dummy.c)
-target_link_libraries(ethosu_uart_dummy PUBLIC ethosu_uart_common)
diff --git a/drivers/uart/include/uart_stdout.h b/drivers/uart/include/uart_stdout.h
deleted file mode 100644
index 02f8e49..0000000
--- a/drivers/uart/include/uart_stdout.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (c) 2019-2020 Arm Limited. All rights reserved.
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the License); you may
- * not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef _UART_STDOUT_H_
-#define _UART_STDOUT_H_
-
-#if __cplusplus
-extern "C" {
-#endif
-
-void UartStdOutInit(void);
-unsigned char UartPutc(unsigned char my_ch);
-unsigned char UartGetc(void);
-unsigned int GetLine(char *lp, unsigned int len);
-
-#if __cplusplus
-}
-#endif
-
-#endif
diff --git a/drivers/uart/src/uart_cmsdk_apb.c b/drivers/uart/src/uart_cmsdk_apb.c
deleted file mode 100644
index 4cbc68c..0000000
--- a/drivers/uart/src/uart_cmsdk_apb.c
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Copyright (c) 2019-2020 Arm Limited. All rights reserved.
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the License); you may
- * not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/* Basic CMSDK APB UART driver */
-
-#include "uart_config.h"
-#include "uart_stdout.h"
-#include <stdint.h>
-#include <stdio.h>
-
-#define CNTLQ     0x11
-#define CNTLS     0x13
-#define DEL       0x7F
-#define BACKSPACE 0x08
-#define CR        0x0D
-#define LF        0x0A
-#define ESC       0x1B
-
-#define __IO volatile
-#define __I  volatile const
-#define __O  volatile
-
-typedef struct {
-    __IO uint32_t DATA;  /* Offset: 0x000 (R/W) Data Register    */
-    __IO uint32_t STATE; /* Offset: 0x004 (R/W) Status Register  */
-    __IO uint32_t CTRL;  /* Offset: 0x008 (R/W) Control Register */
-    union {
-        __I uint32_t INTSTATUS; /* Offset: 0x00C (R/ ) Interrupt Status Register */
-        __O uint32_t INTCLEAR;  /* Offset: 0x00C ( /W) Interrupt Clear Register  */
-    };
-    __IO uint32_t BAUDDIV; /* Offset: 0x010 (R/W) Baudrate Divider Register */
-} CMSDK_UART_TypeDef;
-
-#define CMSDK_UART0_BASE     UART0_BASE
-#define CMSDK_UART0          ((CMSDK_UART_TypeDef *)CMSDK_UART0_BASE)
-#define CMSDK_UART0_BAUDRATE UART0_BAUDRATE
-
-void UartStdOutInit(void) {
-    CMSDK_UART0->BAUDDIV = SYSTEM_CORE_CLOCK / CMSDK_UART0_BAUDRATE;
-
-    CMSDK_UART0->CTRL = ((1ul << 0) | /* TX enable */
-                         (1ul << 1)); /* RX enable */
-}
-
-// Output a character
-unsigned char UartPutc(unsigned char my_ch) {
-    while ((CMSDK_UART0->STATE & 1))
-        ; // Wait if Transmit Holding register is full
-
-    if (my_ch == '\n') {
-        CMSDK_UART0->DATA = '\r';
-        while ((CMSDK_UART0->STATE & 1))
-            ; // Wait if Transmit Holding register is full
-    }
-
-    CMSDK_UART0->DATA = my_ch; // write to transmit holding register
-
-    return (my_ch);
-}
-
-// Get a character
-unsigned char UartGetc(void) {
-    unsigned char my_ch;
-    // unsigned int  cnt;
-
-    while ((CMSDK_UART0->STATE & 2) == 0) // Wait if Receive Holding register is empty
-        ;
-
-    my_ch = CMSDK_UART0->DATA;
-
-    // Convert CR to LF
-    if (my_ch == '\r')
-        my_ch = '\n';
-
-    return (my_ch);
-}
-
-// Get line from terminal
-unsigned int GetLine(char *lp, unsigned int len) {
-    unsigned int cnt = 0;
-    char c;
-
-    do {
-        c = UartGetc();
-        switch (c) {
-        case CNTLQ: /* ignore Control S/Q             */
-        case CNTLS:
-            break;
-        case BACKSPACE:
-        case DEL:
-            if (cnt == 0) {
-                break;
-            }
-            cnt--;          /* decrement count                */
-            lp--;           /* and line pointer               */
-            UartPutc(0x08); /* echo backspace                 */
-            UartPutc(' ');
-            UartPutc(0x08);
-            fflush(stdout);
-            break;
-        case ESC:
-        case 0:
-            *lp = 0; /* ESC - stop editing line        */
-            return 0;
-        case CR: /* CR - done, stop editing line   */
-            *lp = c;
-            lp++;  /* increment line pointer         */
-            cnt++; /* and count                      */
-            c = LF;
-            /* fall through */
-        default:
-            UartPutc(*lp = c); /* echo and store character       */
-            fflush(stdout);
-            lp++;  /* increment line pointer         */
-            cnt++; /* and count                      */
-            break;
-        }
-    } while (cnt < len - 2 && c != LF); /* check limit and CR             */
-    *lp = 0;                            /* mark end of string             */
-    return 1;
-}
diff --git a/drivers/uart/src/uart_dummy.c b/drivers/uart/src/uart_dummy.c
deleted file mode 100644
index ebe384b..0000000
--- a/drivers/uart/src/uart_dummy.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (c) 2019-2020 Arm Limited. All rights reserved.
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the License); you may
- * not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "uart_stdout.h"
-
-void UartStdOutInit(void) {}
-
-unsigned char UartPutc(unsigned char c) {
-    (void)c;
-    return 0;
-}
-
-unsigned char UartGetc(void) {
-    return 0;
-}
-
-unsigned int GetLine(char *lp, unsigned int len) {
-    (void)lp;
-    (void)len;
-    return 0;
-}
diff --git a/drivers/uart/src/uart_pl011.c b/drivers/uart/src/uart_pl011.c
deleted file mode 100644
index 617ce5f..0000000
--- a/drivers/uart/src/uart_pl011.c
+++ /dev/null
@@ -1,220 +0,0 @@
-/*
- * Copyright (c) 2019-2020 Arm Limited. All rights reserved.
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the License); you may
- * not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/* Basic PL011 UART driver */
-
-#include "uart_config.h"
-#include "uart_stdout.h"
-#include <stdint.h>
-#include <stdio.h>
-
-#define CNTLQ     0x11
-#define CNTLS     0x13
-#define DEL       0x7F
-#define BACKSPACE 0x08
-#define CR        0x0D
-#define LF        0x0A
-#define ESC       0x1B
-
-/*****************************************************************************/
-/*  UART Control Register Locations                                          */
-/*****************************************************************************/
-#define UART0_DR   *((volatile uint32_t *)UART0_BASE)
-#define UART0_RSR  *((volatile uint32_t *)(UART0_BASE + 0x04))
-#define UART0_ECR  *((volatile uint32_t *)(UART0_BASE + 0x04))
-#define UART0_LCRH *((volatile uint32_t *)(UART0_BASE + 0x2C))
-#define UART0_LCRM *((volatile uint32_t *)(UART0_BASE + 0x28))
-#define UART0_LCRL *((volatile uint32_t *)(UART0_BASE + 0x24))
-#define UART0_CR   *((volatile uint32_t *)(UART0_BASE + 0x30))
-#define UART0_FR   *((volatile uint32_t *)(UART0_BASE + 0x18))
-#define UART0_IIR  *((volatile uint32_t *)(UART0_BASE + 0x1C))
-#define UART0_ICR  *((volatile uint32_t *)(UART0_BASE + 0x44))
-
-/*****************************************************************************/
-/* Received Status Register - RSR                                            */
-/*****************************************************************************/
-#define RSR_OVERRUN_ERROR 0x08
-#define RSR_BREAK_ERROR   0x04
-#define RSR_PARITY_ERROR  0x02
-#define RSR_FRAMING_ERROR 0x01
-
-/*****************************************************************************/
-/* Line Control High Byte Register - LCRH                                    */
-/*****************************************************************************/
-#define LCRH_WORD_LENGTH_8 0x60
-#define LCRH_WORD_LENGTH_7 0x40
-#define LCRH_WORD_LENGTH_6 0x20
-#define LCRH_WORD_LENGTH_5 0x00
-#define LCRH_FIFO_ENABLED  0x10
-#define LCRH_2_STOP_BITS   0x08
-#define LCRH_EVEN_PARITY   0x04
-#define LCRH_PARITY_ENABLE 0x02
-#define LCRH_SEND_BREAK    0x01
-
-/*****************************************************************************/
-/* Line Control Medium Byte Register - LCRM                                  */
-/* This register specifies the high byte of the Baud rate divisor            */
-/*****************************************************************************/
-#define LCRM_BAUD_460800 0x00
-#define LCRM_BAUD_230400 0x00
-#define LCRM_BAUD_115200 0x00
-#define LCRM_BAUD_76800  0x00
-#define LCRM_BAUD_57600  0x00
-#define LCRM_BAUD_38400  0x00
-#define LCRM_BAUD_19200  0x00
-#define LCRM_BAUD_14400  0x00
-#define LCRM_BAUD_9600   0x00
-#define LCRM_BAUD_2400   0x01
-#define LCRM_BAUD_1200   0x02
-
-/*****************************************************************************/
-/* Line Control Low Byte Register - LCRL                                     */
-/* This register specifies the low byte of the Baud rate divisor             */
-/*****************************************************************************/
-#define LCRL_BAUD_460800 0x01
-#define LCRL_BAUD_230400 0x03
-#define LCRL_BAUD_115200 0x07
-#define LCRL_BAUD_76800  0x0B
-#define LCRL_BAUD_57600  0x0F
-#define LCRL_BAUD_38400  0xC
-#define LCRL_BAUD_19200  0x2F
-#define LCRL_BAUD_14400  0x3F
-#define LCRL_BAUD_9600   0x5F
-#define LCRL_BAUD_2400   0x7F
-#define LCRL_BAUD_1200   0xFF
-
-/*****************************************************************************/
-/* Control Register - CR                                                     */
-/*****************************************************************************/
-#define CR_LOOP_BACK_EN   0x80
-#define CR_TIMEOUT_INT_EN 0x40
-#define CR_TX_INT_ENABLE  0x100
-#define CR_RX_INT_ENABLE  0x200
-#define CR_MODSTAT_INT_EN 0x08
-#define CR_UART_ENABLE    0x01
-
-/*****************************************************************************/
-/* Flag Register - FR                                                        */
-/*****************************************************************************/
-#define FR_TX_FIFO_EMPTY  0x80
-#define FR_RX_FIFO_FULL   0x40
-#define FR_TX_FIFO_FULL   0x20
-#define FR_RX_FIFO_EMPTY  0x10
-#define FR_BUSY           0x08
-#define FR_CARRIER_DETECT 0x04
-#define FR_SET_READY      0x02
-#define FR_CLEAR_TO_SEND  0x01
-
-/*****************************************************************************/
-/* Interrupt Identification Register - IIR                                   */
-/*****************************************************************************/
-#define IIR_RX_TIME_OUT 0x08
-#define IIR_TX          0x04
-#define IIR_RX          0x02
-#define IIR_MODEM       0x01
-
-void UartStdOutInit(void) {
-    // Disable the serial port while setting the baud rate and word length
-    UART0_CR = 0;
-
-    // Clear the receive status register
-    UART0_ECR = 0;
-
-    // Set the correct baud rate and word length
-    UART0_LCRL = LCRL_BAUD_115200;
-    UART0_LCRM = LCRM_BAUD_115200;
-    UART0_LCRH = LCRH_WORD_LENGTH_8;
-
-    // Explicitly disable FIFO's for char mode
-    UART0_LCRH &= ~LCRH_FIFO_ENABLED;
-
-    // Enable UART0 (and RX/TX) without interrupts
-    UART0_CR = CR_UART_ENABLE | CR_TX_INT_ENABLE | CR_RX_INT_ENABLE;
-}
-
-unsigned char UartPutc(unsigned char ch) {
-    if (ch == '\n') {
-        (void)UartPutc('\r');
-    }
-    while (UART0_FR & FR_TX_FIFO_FULL)
-        ;
-    UART0_DR = ch;
-
-    return ch;
-}
-
-unsigned char UartGetc(void) {
-    unsigned char c;
-    while (UART0_FR & FR_RX_FIFO_EMPTY)
-        ;
-    c = UART0_DR;
-    if (c == '\r') {
-        c = '\n';
-    }
-
-    return c;
-}
-
-// Get line from terminal
-unsigned int GetLine(char *lp, unsigned int len) {
-    unsigned int cnt = 0;
-    char c;
-
-    do {
-        c = UartGetc();
-        switch (c) {
-        case CNTLQ: /* ignore Control S/Q             */
-        case CNTLS:
-            break;
-        case BACKSPACE:
-        case DEL:
-            if (cnt == 0) {
-                break;
-            }
-            cnt--;          /* decrement count                */
-            lp--;           /* and line pointer               */
-            UartPutc(0x08); /* echo backspace                 */
-            UartPutc(' ');
-            UartPutc(0x08);
-            fflush(stdout);
-            break;
-        case ESC:
-        case 0:
-            *lp = 0; /* ESC - stop editing line        */
-            return 0;
-        case CR: /* CR - done, stop editing line   */
-            *lp = c;
-            lp++;  /* increment line pointer         */
-            cnt++; /* and count                      */
-            c = LF;
-            UartPutc(*lp = c); /* echo and store character       */
-            fflush(stdout);
-            lp++;  /* increment line pointer         */
-            cnt++; /* and count                      */
-            break;
-        default:
-            UartPutc(*lp = c); /* echo and store character       */
-            fflush(stdout);
-            lp++;  /* increment line pointer         */
-            cnt++; /* and count                      */
-            break;
-        }
-    } while (cnt < len - 2 && c != LF); /* check limit and CR             */
-    *lp = 0;                            /* mark end of string             */
-    return 1;
-}
diff --git a/drivers/uart/uart_config.h.in b/drivers/uart/uart_config.h.in
deleted file mode 100644
index eb858fa..0000000
--- a/drivers/uart/uart_config.h.in
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Copyright (c) 2019-2020 Arm Limited. All rights reserved.
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the License); you may
- * not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#pragma once
-
-#define UART0_BASE          (@UART0_BASE@)
-#define UART0_BAUDRATE      (@UART0_BAUDRATE@)
-#define SYSTEM_CORE_CLOCK   (@SYSTEM_CORE_CLOCK@)