diff --git a/plat/arm/css/common/css_bl2_setup.c b/plat/arm/css/common/css_bl2_setup.c
index 73549aa..0712e3a 100644
--- a/plat/arm/css/common/css_bl2_setup.c
+++ b/plat/arm/css/common/css_bl2_setup.c
@@ -11,7 +11,7 @@
 #include <plat_arm.h>
 #include <string.h>
 #include <utils.h>
-#include "css_scp_bootloader.h"
+#include "../drivers/scp/css_scp.h"
 
 /* Weak definition may be overridden in specific CSS based platform */
 #if LOAD_IMAGE_V2
@@ -34,10 +34,13 @@
 
 	INFO("BL2: Initiating SCP_BL2 transfer to SCP\n");
 
-	ret = scp_bootloader_transfer((void *)scp_bl2_image_info->image_base,
+	ret = css_scp_boot_image_xfer((void *)scp_bl2_image_info->image_base,
 		scp_bl2_image_info->image_size);
 
 	if (ret == 0)
+		ret = css_scp_boot_ready();
+
+	if (ret == 0)
 		INFO("BL2: SCP_BL2 transferred to SCP\n");
 	else
 		ERROR("BL2: SCP_BL2 transfer failure\n");
diff --git a/plat/arm/css/common/css_bl2u_setup.c b/plat/arm/css/common/css_bl2u_setup.c
index cc18758..d225151 100644
--- a/plat/arm/css/common/css_bl2u_setup.c
+++ b/plat/arm/css/common/css_bl2u_setup.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, ARM Limited and Contributors. All rights reserved.
+ * Copyright (c) 2015-2017, ARM Limited and Contributors. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
  */
@@ -7,7 +7,7 @@
 #include <bl_common.h>
 #include <debug.h>
 #include <plat_arm.h>
-#include "css_scp_bootloader.h"
+#include "../drivers/scp/css_scp.h"
 
 /* Weak definition may be overridden in specific CSS based platform */
 #pragma weak bl2u_plat_handle_scp_bl2u
@@ -40,10 +40,13 @@
 
 	INFO("BL2U: Initiating SCP_BL2U transfer to SCP\n");
 
-	ret = scp_bootloader_transfer((void *)scp_bl2u_image_info.image_base,
+	ret = css_scp_boot_image_xfer((void *)scp_bl2u_image_info.image_base,
 		scp_bl2u_image_info.image_size);
 
 	if (ret == 0)
+		ret = css_scp_boot_ready();
+
+	if (ret == 0)
 		INFO("BL2U: SCP_BL2U transferred to SCP\n");
 	else
 		ERROR("BL2U: SCP_BL2U transfer failure\n");
diff --git a/plat/arm/css/common/css_common.mk b/plat/arm/css/common/css_common.mk
index c2ae921..9381e4c 100644
--- a/plat/arm/css/common/css_common.mk
+++ b/plat/arm/css/common/css_common.mk
@@ -56,8 +56,8 @@
     $(eval $(call FWU_FIP_ADD_IMG,SCP_BL2U,--scp-fwu-cfg))
   endif
 
-  BL2U_SOURCES		+=	plat/arm/css/common/css_scp_bootloader.c
-  BL2_SOURCES		+=	plat/arm/css/common/css_scp_bootloader.c
+  BL2U_SOURCES		+=	plat/arm/css/drivers/scp/css_bom_bootloader.c
+  BL2_SOURCES		+=	plat/arm/css/drivers/scp/css_bom_bootloader.c
 endif
 
 # Enable option to detect whether the SCP ROM firmware in use predates version
diff --git a/plat/arm/css/common/css_scp_bootloader.c b/plat/arm/css/common/css_scp_bootloader.c
deleted file mode 100644
index 3db5cf5..0000000
--- a/plat/arm/css/common/css_scp_bootloader.c
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- * Copyright (c) 2014-2016, ARM Limited and Contributors. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-#include <arch_helpers.h>
-#include <assert.h>
-#include <css_def.h>
-#include <debug.h>
-#include <platform.h>
-#include <stdint.h>
-#include "../drivers/scpi/css_mhu.h"
-#include "../drivers/scpi/css_scpi.h"
-#include "css_scp_bootloader.h"
-
-/* ID of the MHU slot used for the BOM protocol */
-#define BOM_MHU_SLOT_ID		0
-
-/* Boot commands sent from AP -> SCP */
-#define BOOT_CMD_INFO	0x00
-#define BOOT_CMD_DATA	0x01
-
-/* BOM command header */
-typedef struct {
-	uint32_t id : 8;
-	uint32_t reserved : 24;
-} bom_cmd_t;
-
-typedef struct {
-	uint32_t image_size;
-	uint32_t checksum;
-} cmd_info_payload_t;
-
-/*
- * Unlike the SCPI protocol, the boot protocol uses the same memory region
- * for both AP -> SCP and SCP -> AP transfers; define the address of this...
- */
-#define BOM_SHARED_MEM		PLAT_CSS_SCP_COM_SHARED_MEM_BASE
-#define BOM_CMD_HEADER		((bom_cmd_t *) BOM_SHARED_MEM)
-#define BOM_CMD_PAYLOAD		((void *) (BOM_SHARED_MEM + sizeof(bom_cmd_t)))
-
-typedef struct {
-	/* Offset from the base address of the Trusted RAM */
-	uint32_t offset;
-	uint32_t block_size;
-} cmd_data_payload_t;
-
-static void scp_boot_message_start(void)
-{
-	mhu_secure_message_start(BOM_MHU_SLOT_ID);
-}
-
-static void scp_boot_message_send(size_t payload_size)
-{
-	/* Ensure that any write to the BOM payload area is seen by SCP before
-	 * we write to the MHU register. If these 2 writes were reordered by
-	 * the CPU then SCP would read stale payload data */
-	dmbst();
-
-	/* Send command to SCP */
-	mhu_secure_message_send(BOM_MHU_SLOT_ID);
-}
-
-static uint32_t scp_boot_message_wait(size_t size)
-{
-	uint32_t mhu_status;
-
-	mhu_status = mhu_secure_message_wait();
-
-	/* Expect an SCP Boot Protocol message, reject any other protocol */
-	if (mhu_status != (1 << BOM_MHU_SLOT_ID)) {
-		ERROR("MHU: Unexpected protocol (MHU status: 0x%x)\n",
-			mhu_status);
-		panic();
-	}
-
-	/* Ensure that any read to the BOM payload area is done after reading
-	 * the MHU register. If these 2 reads were reordered then the CPU would
-	 * read invalid payload data */
-	dmbld();
-
-	return *(uint32_t *) BOM_SHARED_MEM;
-}
-
-static void scp_boot_message_end(void)
-{
-	mhu_secure_message_end(BOM_MHU_SLOT_ID);
-}
-
-int scp_bootloader_transfer(void *image, unsigned int image_size)
-{
-	uint32_t response;
-	uint32_t checksum;
-	cmd_info_payload_t *cmd_info_payload;
-	cmd_data_payload_t *cmd_data_payload;
-
-	assert((uintptr_t) image == SCP_BL2_BASE);
-
-	if ((image_size == 0) || (image_size % 4 != 0)) {
-		ERROR("Invalid size for the SCP_BL2 image. Must be a multiple of "
-			"4 bytes and not zero (current size = 0x%x)\n",
-			image_size);
-		return -1;
-	}
-
-	/* Extract the checksum from the image */
-	checksum = *(uint32_t *) image;
-	image = (char *) image + sizeof(checksum);
-	image_size -= sizeof(checksum);
-
-	mhu_secure_init();
-
-	VERBOSE("Send info about the SCP_BL2 image to be transferred to SCP\n");
-
-	/*
-	 * Send information about the SCP firmware image about to be transferred
-	 * to SCP
-	 */
-	scp_boot_message_start();
-
-	BOM_CMD_HEADER->id = BOOT_CMD_INFO;
-	cmd_info_payload = BOM_CMD_PAYLOAD;
-	cmd_info_payload->image_size = image_size;
-	cmd_info_payload->checksum = checksum;
-
-	scp_boot_message_send(sizeof(*cmd_info_payload));
-#if CSS_DETECT_PRE_1_7_0_SCP
-	{
-		const uint32_t deprecated_scp_nack_cmd = 0x404;
-		uint32_t mhu_status;
-
-		VERBOSE("Detecting SCP version incompatibility\n");
-
-		mhu_status = mhu_secure_message_wait();
-		if (mhu_status == deprecated_scp_nack_cmd) {
-			ERROR("Detected an incompatible version of the SCP firmware.\n");
-			ERROR("Only versions from v1.7.0 onwards are supported.\n");
-			ERROR("Please update the SCP firmware.\n");
-			return -1;
-		}
-
-		VERBOSE("SCP version looks OK\n");
-	}
-#endif /* CSS_DETECT_PRE_1_7_0_SCP */
-	response = scp_boot_message_wait(sizeof(response));
-	scp_boot_message_end();
-
-	if (response != 0) {
-		ERROR("SCP BOOT_CMD_INFO returned error %u\n", response);
-		return -1;
-	}
-
-	VERBOSE("Transferring SCP_BL2 image to SCP\n");
-
-	/* Transfer SCP_BL2 image to SCP */
-	scp_boot_message_start();
-
-	BOM_CMD_HEADER->id = BOOT_CMD_DATA;
-	cmd_data_payload = BOM_CMD_PAYLOAD;
-	cmd_data_payload->offset = (uintptr_t) image - ARM_TRUSTED_SRAM_BASE;
-	cmd_data_payload->block_size = image_size;
-
-	scp_boot_message_send(sizeof(*cmd_data_payload));
-	response = scp_boot_message_wait(sizeof(response));
-	scp_boot_message_end();
-
-	if (response != 0) {
-		ERROR("SCP BOOT_CMD_DATA returned error %u\n", response);
-		return -1;
-	}
-
-	VERBOSE("Waiting for SCP to signal it is ready to go on\n");
-
-	/* Wait for SCP to signal it's ready */
-	return scpi_wait_ready();
-}
diff --git a/plat/arm/css/common/css_scp_bootloader.h b/plat/arm/css/common/css_scp_bootloader.h
deleted file mode 100644
index 0d6a6a2..0000000
--- a/plat/arm/css/common/css_scp_bootloader.h
+++ /dev/null
@@ -1,12 +0,0 @@
-/*
- * Copyright (c) 2014, ARM Limited and Contributors. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-#ifndef __CSS_SCP_BOOTLOADER_H__
-#define __CSS_SCP_BOOTLOADER_H__
-
-int scp_bootloader_transfer(void *image, unsigned int image_size);
-
-#endif /* __CSS_SCP_BOOTLOADER_H__ */
