diff --git a/plat/arm/css/drivers/mhu/css_mhu.c b/drivers/arm/css/mhu/css_mhu.c
similarity index 98%
rename from plat/arm/css/drivers/mhu/css_mhu.c
rename to drivers/arm/css/mhu/css_mhu.c
index 65695d846212ca4970b69414bbbb1a70fef6e8ba..b7faf7ed9e8b87cb149a22f22f4257193308ec8a 100644
--- a/plat/arm/css/drivers/mhu/css_mhu.c
+++ b/drivers/arm/css/mhu/css_mhu.c
@@ -9,12 +9,11 @@
 #include <platform_def.h>
 
 #include <arch_helpers.h>
+#include <drivers/arm/css/css_mhu.h>
 #include <lib/bakery_lock.h>
 #include <lib/mmio.h>
 #include <plat/arm/common/plat_arm.h>
 
-#include "css_mhu.h"
-
 /* SCP MHU secure channel registers */
 #define SCP_INTR_S_STAT		0x200
 #define SCP_INTR_S_SET		0x208
diff --git a/plat/arm/css/drivers/mhu/css_mhu_doorbell.c b/drivers/arm/css/mhu/css_mhu_doorbell.c
similarity index 94%
rename from plat/arm/css/drivers/mhu/css_mhu_doorbell.c
rename to drivers/arm/css/mhu/css_mhu_doorbell.c
index c031efa5eeb4661a9268f59601e5ae0ac85237fa..885874272f5a8431ac11d171cefbbb7e65ce3d58 100644
--- a/plat/arm/css/drivers/mhu/css_mhu_doorbell.c
+++ b/drivers/arm/css/mhu/css_mhu_doorbell.c
@@ -7,10 +7,9 @@
 #include <platform_def.h>
 
 #include <arch_helpers.h>
+#include <drivers/arm/css/css_mhu_doorbell.h>
 #include <drivers/arm/css/scmi.h>
 
-#include "css_mhu_doorbell.h"
-
 void mhu_ring_doorbell(struct scmi_channel_plat_info *plat_info)
 {
 	MHU_RING_DOORBELL(plat_info->db_reg_addr,
diff --git a/plat/arm/css/drivers/mhu/css_mhu.h b/include/drivers/arm/css/css_mhu.h
similarity index 100%
rename from plat/arm/css/drivers/mhu/css_mhu.h
rename to include/drivers/arm/css/css_mhu.h
diff --git a/plat/arm/css/drivers/mhu/css_mhu_doorbell.h b/include/drivers/arm/css/css_mhu_doorbell.h
similarity index 100%
rename from plat/arm/css/drivers/mhu/css_mhu_doorbell.h
rename to include/drivers/arm/css/css_mhu_doorbell.h
diff --git a/plat/arm/board/juno/juno_topology.c b/plat/arm/board/juno/juno_topology.c
index d83bd9aaecbefd877ca77112a0eef8517568f2ad..ca5c344d61b5eec0e109c5a54905e965abc472c7 100644
--- a/plat/arm/board/juno/juno_topology.c
+++ b/plat/arm/board/juno/juno_topology.c
@@ -4,14 +4,13 @@
  * SPDX-License-Identifier: BSD-3-Clause
  */
 
+#include <drivers/arm/css/css_mhu_doorbell.h>
 #include <drivers/arm/css/scmi.h>
 #include <plat/arm/common/plat_arm.h>
 #include <plat/arm/css/common/css_pm.h>
 #include <plat/common/platform.h>
 #include <platform_def.h>
 
-#include "../../css/drivers/mhu/css_mhu_doorbell.h"
-
 #if CSS_USE_SCMI_SDS_DRIVER
 static scmi_channel_plat_info_t juno_scmi_plat_info = {
 		.scmi_mbx_mem = CSS_SCMI_PAYLOAD_BASE,
diff --git a/plat/arm/board/n1sdp/n1sdp_bl31_setup.c b/plat/arm/board/n1sdp/n1sdp_bl31_setup.c
index a1669b9baa90592b50438d539209ddf3245b7da4..18a0deaba35cce0ba2f0eaf5dadcc52805ac94d9 100644
--- a/plat/arm/board/n1sdp/n1sdp_bl31_setup.c
+++ b/plat/arm/board/n1sdp/n1sdp_bl31_setup.c
@@ -6,11 +6,10 @@
 
 #include <platform_def.h>
 
+#include <drivers/arm/css/css_mhu_doorbell.h>
 #include <drivers/arm/css/scmi.h>
 #include <plat/arm/common/plat_arm.h>
 
-#include "../../css/drivers/mhu/css_mhu_doorbell.h"
-
 static scmi_channel_plat_info_t n1sdp_scmi_plat_info = {
 		.scmi_mbx_mem = N1SDP_SCMI_PAYLOAD_BASE,
 		.db_reg_addr = PLAT_CSS_MHU_BASE + CSS_SCMI_MHU_DB_REG_OFF,
diff --git a/plat/arm/css/common/css_common.mk b/plat/arm/css/common/css_common.mk
index b8e974f384f12c752af0c056787a3881c1667742..55303f11d93028ed24bc4eaa25080f923efc66ee 100644
--- a/plat/arm/css/common/css_common.mk
+++ b/plat/arm/css/common/css_common.mk
@@ -26,16 +26,16 @@ BL31_SOURCES		+=	plat/arm/css/common/css_pm.c			\
 				plat/arm/css/common/css_topology.c
 
 ifeq (${CSS_USE_SCMI_SDS_DRIVER},0)
-BL31_SOURCES		+=	plat/arm/css/drivers/scp/css_pm_scpi.c		\
-				plat/arm/css/drivers/mhu/css_mhu.c		\
+BL31_SOURCES		+=	drivers/arm/css/mhu/css_mhu.c			\
+				plat/arm/css/drivers/scp/css_pm_scpi.c		\
 				plat/arm/css/drivers/scpi/css_scpi.c
 else
-BL31_SOURCES		+=	drivers/arm/css/scmi/scmi_ap_core_proto.c	\
+BL31_SOURCES		+=	drivers/arm/css/mhu/css_mhu_doorbell.c		\
+				drivers/arm/css/scmi/scmi_ap_core_proto.c	\
 				drivers/arm/css/scmi/scmi_common.c		\
 				drivers/arm/css/scmi/scmi_pwr_dmn_proto.c	\
 				drivers/arm/css/scmi/scmi_sys_pwr_proto.c	\
-				plat/arm/css/drivers/scp/css_pm_scmi.c		\
-				plat/arm/css/drivers/mhu/css_mhu_doorbell.c
+				plat/arm/css/drivers/scp/css_pm_scmi.c
 endif
 
 # Process CSS_LOAD_SCP_IMAGES flag
@@ -55,12 +55,12 @@ ifeq (${CSS_LOAD_SCP_IMAGES},1)
     BL2_SOURCES		+=	plat/arm/css/drivers/scp/css_sds.c	\
 				plat/arm/css/drivers/sds/sds.c
   else
-    BL2U_SOURCES	+=	plat/arm/css/drivers/scp/css_bom_bootloader.c	\
-				plat/arm/css/drivers/mhu/css_mhu.c		\
+    BL2U_SOURCES	+=	drivers/arm/css/mhu/css_mhu.c			\
+				plat/arm/css/drivers/scp/css_bom_bootloader.c	\
 				plat/arm/css/drivers/scpi/css_scpi.c
 
-    BL2_SOURCES		+=	plat/arm/css/drivers/scp/css_bom_bootloader.c	\
-				plat/arm/css/drivers/mhu/css_mhu.c		\
+    BL2_SOURCES		+=	drivers/arm/css/mhu/css_mhu.c			\
+				plat/arm/css/drivers/scp/css_bom_bootloader.c	\
 				plat/arm/css/drivers/scpi/css_scpi.c
     # Enable option to detect whether the SCP ROM firmware in use predates version
     # 1.7.0 and therefore, is incompatible.
diff --git a/plat/arm/css/common/sp_min/css_sp_min.mk b/plat/arm/css/common/sp_min/css_sp_min.mk
index 7c2dcf545b6e5694a852e3de8c9e97b67c700744..53daf1b982ef2384a4d76435a208063f8bfb0052 100644
--- a/plat/arm/css/common/sp_min/css_sp_min.mk
+++ b/plat/arm/css/common/sp_min/css_sp_min.mk
@@ -9,13 +9,13 @@ BL32_SOURCES		+=	plat/arm/css/common/css_pm.c			\
 				plat/arm/css/common/css_topology.c
 
 ifeq (${CSS_USE_SCMI_SDS_DRIVER},0)
-BL32_SOURCES		+=	plat/arm/css/drivers/scp/css_pm_scpi.c		\
-				plat/arm/css/drivers/mhu/css_mhu.c		\
+BL32_SOURCES		+=	drivers/arm/css/mhu/css_mhu.c			\
+				plat/arm/css/drivers/scp/css_pm_scpi.c		\
 				plat/arm/css/drivers/scpi/css_scpi.c
 else
-BL32_SOURCES		+=	drivers/arm/css/scmi/scmi_common.c		\
+BL32_SOURCES		+=	drivers/arm/css/mhu/css_mhu_doorbell.c		\
+				drivers/arm/css/scmi/scmi_common.c		\
 				drivers/arm/css/scmi/scmi_pwr_dmn_proto.c	\
 				drivers/arm/css/scmi/scmi_sys_pwr_proto.c	\
-				plat/arm/css/drivers/scp/css_pm_scmi.c		\
-				plat/arm/css/drivers/mhu/css_mhu_doorbell.c
+				plat/arm/css/drivers/scp/css_pm_scmi.c
 endif
diff --git a/plat/arm/css/drivers/scp/css_bom_bootloader.c b/plat/arm/css/drivers/scp/css_bom_bootloader.c
index ca40c30662565804949c971dffe8ad9e71a46966..5fe268d63f3b1a0c968c30b584043902f09d274c 100644
--- a/plat/arm/css/drivers/scp/css_bom_bootloader.c
+++ b/plat/arm/css/drivers/scp/css_bom_bootloader.c
@@ -9,10 +9,10 @@
 
 #include <arch_helpers.h>
 #include <common/debug.h>
+#include <drivers/arm/css/css_mhu.h>
 #include <plat/common/platform.h>
 #include <platform_def.h>
 
-#include "../mhu/css_mhu.h"
 #include "../scpi/css_scpi.h"
 #include "css_scp.h"
 
diff --git a/plat/arm/css/drivers/scpi/css_scpi.c b/plat/arm/css/drivers/scpi/css_scpi.c
index d64bfa2679af50dba8d382a7c74420cb30c47ad3..4965c660bc7d9cc92cbad0032f916cc942f0ee45 100644
--- a/plat/arm/css/drivers/scpi/css_scpi.c
+++ b/plat/arm/css/drivers/scpi/css_scpi.c
@@ -9,11 +9,11 @@
 
 #include <arch_helpers.h>
 #include <common/debug.h>
+#include <drivers/arm/css/css_mhu.h>
 #include <lib/utils.h>
 #include <plat/common/platform.h>
 #include <platform_def.h>
 
-#include "../mhu/css_mhu.h"
 #include "css_scpi.h"
 
 #define SCPI_SHARED_MEM_SCP_TO_AP	PLAT_CSS_SCP_COM_SHARED_MEM_BASE
diff --git a/plat/arm/css/sgi/sgi_bl31_setup.c b/plat/arm/css/sgi/sgi_bl31_setup.c
index 82d8fed69e741388b35229bd5ed064a307a101c8..bfcb521a3525de1e1f7f84f5112932e08a5ccf9f 100644
--- a/plat/arm/css/sgi/sgi_bl31_setup.c
+++ b/plat/arm/css/sgi/sgi_bl31_setup.c
@@ -10,14 +10,13 @@
 
 #include <common/bl_common.h>
 #include <common/debug.h>
+#include <drivers/arm/css/css_mhu_doorbell.h>
 #include <drivers/arm/css/scmi.h>
 #include <plat/arm/common/plat_arm.h>
 
 #include <sgi_ras.h>
 #include <sgi_variant.h>
 
-#include "../../css/drivers/mhu/css_mhu_doorbell.h"
-
 sgi_platform_info_t sgi_plat_info;
 
 static scmi_channel_plat_info_t sgi575_scmi_plat_info = {
diff --git a/plat/arm/css/sgm/sgm_bl31_setup.c b/plat/arm/css/sgm/sgm_bl31_setup.c
index d9490b1b65bfbfdcb3bd8cbd421a31180a1277d0..7e92ac8350097a78a17fe0104a040149f2d08f04 100644
--- a/plat/arm/css/sgm/sgm_bl31_setup.c
+++ b/plat/arm/css/sgm/sgm_bl31_setup.c
@@ -6,11 +6,11 @@
 
 #include <common/bl_common.h>
 #include <common/debug.h>
+#include <drivers/arm/css/css_mhu_doorbell.h>
 #include <drivers/arm/css/scmi.h>
 #include <plat/arm/common/plat_arm.h>
 
 #include <sgm_plat_config.h>
-#include "../../css/drivers/mhu/css_mhu_doorbell.h"
 
 static scmi_channel_plat_info_t sgm775_scmi_plat_info = {
 		.scmi_mbx_mem = CSS_SCMI_PAYLOAD_BASE,