Boot: Remove platform specific code from bl2_main.c

Clean-up bl2_main.c and move all platform dependent code
to appropriate boot_hal.c

Signed-off-by: Balint Matyi <Balint.Matyi@arm.com>
Change-Id: Ieef1896ca6a0afc15c513bc4aa0acf3fa1a06c7a
diff --git a/bl2/ext/mcuboot/bl2_main.c b/bl2/ext/mcuboot/bl2_main.c
index e9fc75e..fcaab36 100644
--- a/bl2/ext/mcuboot/bl2_main.c
+++ b/bl2/ext/mcuboot/bl2_main.c
@@ -19,36 +19,21 @@
 #include <assert.h>
 #include "target.h"
 #include "tfm_hal_device_header.h"
-#include "Driver_Flash.h"
 #include "mbedtls/memory_buffer_alloc.h"
+#include "bootutil/security_cnt.h"
 #include "bootutil/bootutil_log.h"
 #include "bootutil/image.h"
 #include "bootutil/bootutil.h"
-#include "flash_map_backend/flash_map_backend.h"
 #include "bootutil/boot_record.h"
-#include "bootutil/security_cnt.h"
+#include "flash_map_backend/flash_map_backend.h"
 #include "boot_hal.h"
-#include "region.h"
-#if MCUBOOT_LOG_LEVEL > MCUBOOT_LOG_LEVEL_OFF
 #include "uart_stdout.h"
-#endif
-#if defined(CRYPTO_HW_ACCELERATOR) || \
-    defined(CRYPTO_HW_ACCELERATOR_OTP_PROVISIONING)
-#include "crypto_hw.h"
-#endif
 
 /* Avoids the semihosting issue */
 #if defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
 __asm("  .global __ARM_use_no_argv\n");
 #endif
 
-#if defined(__ARM_ARCH_8M_MAIN__) || defined(__ARM_ARCH_8M_BASE__)
-REGION_DECLARE(Image$$, ARM_LIB_STACK, $$ZI$$Base);
-#endif
-
-/* Flash device name must be specified by target */
-extern ARM_DRIVER_FLASH FLASH_DEV_NAME;
-
 #ifdef MCUBOOT_ENCRYPT_RSA
 #define BL2_MBEDTLS_MEM_BUF_LEN 0x225C
 #else
@@ -84,31 +69,29 @@
                                          rsp->br_image_off +
                                          rsp->br_hdr->ih_hdr_size);
     }
-    rc = FLASH_DEV_NAME.Uninitialize();
-    if(rc != ARM_DRIVER_OK) {
-        BOOT_LOG_ERR("Error while uninitializing Flash Interface");
-    }
 
 #if MCUBOOT_LOG_LEVEL > MCUBOOT_LOG_LEVEL_OFF
     stdio_uninit();
 #endif
+
     /* This function never returns, because it calls the secure application
-     * Reset_Handler()
+     * Reset_Handler().
      */
     boot_platform_quit(vt);
 }
 
 int main(void)
 {
-#if defined(__ARM_ARCH_8M_MAIN__) || defined(__ARM_ARCH_8M_BASE__)
-    uint32_t msp_stack_bottom =
-            (uint32_t)&REGION_NAME(Image$$, ARM_LIB_STACK, $$ZI$$Base);
-#endif
     struct boot_rsp rsp;
     int rc;
 
-#if defined(__ARM_ARCH_8M_MAIN__) || defined(__ARM_ARCH_8M_BASE__)
-    __set_MSPLIM(msp_stack_bottom);
+    /* Initialise the mbedtls static memory allocator so that mbedtls allocates
+     * memory from the provided static buffer instead of from the heap.
+     */
+    mbedtls_memory_buffer_alloc_init(mbedtls_mem_buf, BL2_MBEDTLS_MEM_BUF_LEN);
+
+#if MCUBOOT_LOG_LEVEL > MCUBOOT_LOG_LEVEL_OFF
+    stdio_init();
 #endif
 
     /* Perform platform specific initialization */
@@ -117,25 +100,8 @@
             ;
     }
 
-#if MCUBOOT_LOG_LEVEL > MCUBOOT_LOG_LEVEL_OFF
-    stdio_init();
-#endif
-
     BOOT_LOG_INF("Starting bootloader");
 
-    /* Initialise the mbedtls static memory allocator so that mbedtls allocates
-     * memory from the provided static buffer instead of from the heap.
-     */
-    mbedtls_memory_buffer_alloc_init(mbedtls_mem_buf, BL2_MBEDTLS_MEM_BUF_LEN);
-
-#ifdef CRYPTO_HW_ACCELERATOR
-    rc = crypto_hw_accelerator_init();
-    if (rc) {
-        BOOT_LOG_ERR("Error while initializing cryptographic accelerator.");
-        while (1);
-    }
-#endif /* CRYPTO_HW_ACCELERATOR */
-
     rc = boot_nv_security_counter_init();
     if (rc != 0) {
         BOOT_LOG_ERR("Error while initializing the security counter");
@@ -150,32 +116,6 @@
             ;
     }
 
-#ifdef CRYPTO_HW_ACCELERATOR
-    rc = crypto_hw_accelerator_finish();
-    if (rc) {
-        BOOT_LOG_ERR("Error while uninitializing cryptographic accelerator.");
-        while (1);
-    }
-#endif /* CRYPTO_HW_ACCELERATOR */
-
-/* This is a workaround to program the TF-M related cryptographic keys
- * to CC312 OTP memory. This functionality is independent from secure boot,
- * this is usually done in the factory floor during chip manufacturing.
- */
-#ifdef CRYPTO_HW_ACCELERATOR_OTP_PROVISIONING
-    BOOT_LOG_INF("OTP provisioning started.");
-    rc = crypto_hw_accelerator_otp_provisioning();
-    if (rc) {
-        BOOT_LOG_ERR("OTP provisioning FAILED: 0x%X", rc);
-        while (1);
-    } else {
-        BOOT_LOG_INF("OTP provisioning succeeded. TF-M won't be loaded.");
-
-        /* We don't need to boot - the only aim is provisioning. */
-        while (1);
-    }
-#endif /* CRYPTO_HW_ACCELERATOR_OTP_PROVISIONING */
-
     BOOT_LOG_INF("Bootloader chainload address offset: 0x%x",
                  rsp.br_image_off);
     BOOT_LOG_INF("Jumping to the first image slot");