MLECO-2984: Refactor components

* Use UART component from Ethos-U core-platform
* Components as cmake project

Change-Id: I053f3a59800abc20216e6a4df8555db357e3f21d
Signed-off-by: Isabella Gottardi <isabella.gottardi@arm.com>
diff --git a/source/hal/platform/mps3/CMakeLists.txt b/source/hal/platform/mps3/CMakeLists.txt
index 75e70a2..7ef4ed4 100644
--- a/source/hal/platform/mps3/CMakeLists.txt
+++ b/source/hal/platform/mps3/CMakeLists.txt
@@ -20,7 +20,7 @@
 #########################################################
 
 cmake_minimum_required(VERSION 3.15.6)
-set(PLATFORM_DRIVERS_TARGET platform-drivers)
+set(PLATFORM_DRIVERS_TARGET platform_drivers)
 project(${PLATFORM_DRIVERS_TARGET}
     DESCRIPTION     "Platform drivers library for MPS3 FPGA/FVP targets"
     LANGUAGES       C CXX ASM)
@@ -54,145 +54,75 @@
 configure_file("${IRQ_PROFILE_TEMPLATE}" "${SOURCE_GEN_DIR}/peripheral_irqs.h")
 configure_file("${MEM_REGIONS_TEMPLATE}" "${SOURCE_GEN_DIR}/mem_regions.h")
 
-# If a TA config file is provided, we generate a settings file
-if (DEFINED TA_CONFIG_FILE)
-    include(${TA_CONFIG_FILE})
-    set(TA_SETTINGS_TEMPLATE ${CMAKE_CURRENT_SOURCE_DIR}/cmake/templates/timing_adapter_settings.template)
-    configure_file("${TA_SETTINGS_TEMPLATE}" "${SOURCE_GEN_DIR}/timing_adapter_settings.h")
-endif()
-
 # 4. Create static library
 add_library(${PLATFORM_DRIVERS_TARGET} STATIC)
 
+## Include directories - private
+target_include_directories(${PLATFORM_DRIVERS_TARGET}
+    PRIVATE
+    source)
+
 ## Include directories - public
 target_include_directories(${PLATFORM_DRIVERS_TARGET}
     PUBLIC
     include
     ${SOURCE_GEN_DIR})
 
-## Include directories - private
-target_include_directories(${PLATFORM_DRIVERS_TARGET}
-    PRIVATE
-    source/include)
-
 ## Platform sources
 target_sources(${PLATFORM_DRIVERS_TARGET}
     PRIVATE
     source/device_mps3.c
     source/timer_mps3.c
-    source/platform_drivers.c)
+    source/platform_drivers.c
+    source/glcd_mps3.c)
 
 ## Directory for additional components required by MPS3:
 if (NOT DEFINED COMPONENTS_DIR)
     set(COMPONENTS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../components)
 endif()
 
-## Platform component: uart
-target_sources(${PLATFORM_DRIVERS_TARGET}
-        PRIVATE
-        ${COMPONENTS_DIR}/uart_cmsdk/uart_cmsdk.c)
-target_include_directories(${PLATFORM_DRIVERS_TARGET}
-        PUBLIC
-        ${COMPONENTS_DIR}/uart_cmsdk/include)
-
-## Platform component: LCD
-target_sources(${PLATFORM_DRIVERS_TARGET}
-        PRIVATE
-        ${COMPONENTS_DIR}/lcd_mps3/glcd_mps3.c)
-target_include_directories(${PLATFORM_DRIVERS_TARGET}
-        PUBLIC
-        ${COMPONENTS_DIR}/lcd_mps3/include)
-
 ## This target provides the following definitions for MPS3 specific behaviour
 ## TODO: We should aim to remove this now with platform refactoring..
 target_compile_definitions(${PLATFORM_DRIVERS_TARGET}
     PUBLIC
     MPS3_PLATFORM
-    ACTIVATION_BUF_SRAM_SZ=${ACTIVATION_BUF_SRAM_SZ}
-    $<$<BOOL:TA_CONFIG_FILE>:TIMING_ADAPTER_AVAILABLE>)
+    ACTIVATION_BUF_SRAM_SZ=${ACTIVATION_BUF_SRAM_SZ})
+
+## Platform component: uart
+add_subdirectory(${DEPENDENCY_ROOT_DIR}/core-platform/drivers/uart ${CMAKE_BINARY_DIR}/uart)
 
 # Add dependencies:
 target_link_libraries(${PLATFORM_DRIVERS_TARGET} PUBLIC
-    log cmsis_device)
+    log
+    cmsis_device
+    ethosu_uart_cmsdk_apb)
 
 # If Ethos-U is enabled, we need the driver library too
 if (ETHOS_U_NPU_ENABLED)
 
-
-    ## Platform component: Ethos-U initialization
-    target_sources(${PLATFORM_DRIVERS_TARGET}
-            PRIVATE
-            ${COMPONENTS_DIR}/ethosu_npu_init/ethosu_npu_init.c)
-    target_include_directories(${PLATFORM_DRIVERS_TARGET}
-            PUBLIC
-            ${COMPONENTS_DIR}/ethosu_npu_init/include)
-
-    ## Platform component: Ethos-U timing apadpter initialization
-    target_sources(${PLATFORM_DRIVERS_TARGET}
-            PRIVATE
-            ${COMPONENTS_DIR}/ethosu_ta_init/ethosu_ta_init.c)
-    target_include_directories(${PLATFORM_DRIVERS_TARGET}
-            PUBLIC
-            ${COMPONENTS_DIR}/ethosu_ta_init/include)
-
-    if (NOT DEFINED ETHOS_U_NPU_DRIVER_SRC_PATH)
-        message(FATAL_ERROR "ETHOS_U_NPU_DRIVER_SRC_PATH should"
-                " be defined when ETHOS_U_NPU_ENABLED=${ETHOS_U_NPU_ENABLED}")
-    endif()
-
-    # Timing adapter
-    if (NOT DEFINED ETHOS_U_NPU_TIMING_ADAPTER_SRC_PATH)
-        message(FATAL_ERROR "ETHOS_U_NPU_TIMING_ADAPTER_SRC_PATH should"
-                " be defined when ETHOS_U_NPU_ENABLED=${ETHOS_U_NPU_ENABLED}")
-    endif()
-
     target_compile_definitions(${PLATFORM_DRIVERS_TARGET}
         PUBLIC
         ARM_NPU)
 
-    # For the driver, we need to provide the CMSIS_PATH variable
-    set(CMSIS_PATH ${CMSIS_SRC_PATH} CACHE PATH "Path to CMSIS directory")
-    add_subdirectory(${ETHOS_U_NPU_DRIVER_SRC_PATH} ${CMAKE_BINARY_DIR}/ethos-u-driver)
-    add_subdirectory(${ETHOS_U_NPU_TIMING_ADAPTER_SRC_PATH} ${CMAKE_BINARY_DIR}/timing-adapter)
+    ## Platform component: Ethos-U initialization
+    add_subdirectory(${COMPONENTS_DIR}/ethosu_npu_init ${CMAKE_BINARY_DIR}/ethosu_npu_init)
 
     target_link_libraries(${PLATFORM_DRIVERS_TARGET}
         PUBLIC
-        ethosu_core_driver
-        timing_adapter)
+        ethosu_npu_init_component)
 
-    if (NOT DEFINED ETHOS_U_NPU_ID)
-        set(ETHOS_U_NPU_ID U55)
+    if (ETHOS_U_NPU_TIMING_ADAPTER_ENABLED)
+        ## Platform component: Ethos-U timing adapter initialization
+        add_subdirectory(${COMPONENTS_DIR}/ethosu_ta_init ${CMAKE_BINARY_DIR}/ethosu_ta_init)
+
+        target_link_libraries(${PLATFORM_DRIVERS_TARGET}
+            PUBLIC
+            ethosu_ta_init_component)
+        target_compile_definitions(${PLATFORM_DRIVERS_TARGET}
+            PUBLIC
+            ETHOS_U_NPU_TIMING_ADAPTER_ENABLED)
     endif()
 
-    if (NOT DEFINED ETHOS_U_NPU_MEMORY_MODE)
-        set(ETHOS_U_NPU_MEMORY_MODE Shared_Sram)
-    endif()
-
-    if (ETHOS_U_NPU_MEMORY_MODE STREQUAL Sram_Only)
-        if (ETHOS_U_NPU_ID STREQUAL U55)
-            set(ETHOS_U_NPU_MEMORY_MODE_FLAG "-DETHOS_U_NPU_MEMORY_MODE=ETHOS_U_NPU_MEM_MODE_SRAM_ONLY")
-        else ()
-            message(FATAL_ERROR "Non compatible Ethos-U NPU memory mode and processor ${ETHOS_U_NPU_MEMORY_MODE} - ${ETHOS_U_NPU_ID}. `sram_only` can be used only for Ethos-U55.")
-        endif ()
-
-    elseif (ETHOS_U_NPU_MEMORY_MODE STREQUAL Shared_Sram)
-        # Shared Sram can be used for Ethos-U55 and Ethos-U65
-        set(ETHOS_U_NPU_MEMORY_MODE_FLAG "-DETHOS_U_NPU_MEMORY_MODE=ETHOS_U_NPU_MEMORY_MODE_SHARED_SRAM")
-
-    elseif (ETHOS_U_NPU_MEMORY_MODE STREQUAL Dedicated_Sram)
-        # Dedicated Sram is used only for Ethos-U65
-        if (ETHOS_U_NPU_ID STREQUAL U65)
-            list(APPEND ETHOS_U_NPU_MEMORY_MODE_FLAG "-DETHOS_U_NPU_MEMORY_MODE=ETHOS_U_NPU_MEMORY_MODE_DEDICATED_SRAM" "-DETHOS_U_NPU_CACHE_SIZE=${ETHOS_U_NPU_CACHE_SIZE}")
-        else ()
-            message(FATAL_ERROR "Non compatible Ethos-U NPU memory mode and processor ${ETHOS_U_NPU_MEMORY_MODE} - ${ETHOS_U_NPU_ID}. `dedicated_sram` can be used only for Ethos-U65.")
-        endif ()
-    else ()
-        message(FATAL_ERROR "Non compatible Ethos-U NPU memory mode ${ETHOS_U_NPU_MEMORY_MODE}")
-    endif ()
-
-    target_compile_definitions(${PLATFORM_DRIVERS_TARGET}
-        PUBLIC
-        ${ETHOS_U_NPU_MEMORY_MODE_FLAG})
 endif()
 
 # 5. Display status: