plat/arm: mhu: Move to drivers/ folder

Change-Id: I656753a1825ea7340a3708b950fa6b57455e9056
Signed-off-by: Antonio Nino Diaz <antonio.ninodiaz@arm.com>
diff --git a/plat/arm/css/drivers/mhu/css_mhu.c b/plat/arm/css/drivers/mhu/css_mhu.c
deleted file mode 100644
index 65695d8..0000000
--- a/plat/arm/css/drivers/mhu/css_mhu.c
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Copyright (c) 2014-2018, ARM Limited and Contributors. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-#include <assert.h>
-
-#include <platform_def.h>
-
-#include <arch_helpers.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
-#define SCP_INTR_S_CLEAR	0x210
-
-/* CPU MHU secure channel registers */
-#define CPU_INTR_S_STAT		0x300
-#define CPU_INTR_S_SET		0x308
-#define CPU_INTR_S_CLEAR	0x310
-
-ARM_INSTANTIATE_LOCK;
-
-/* Weak definition may be overridden in specific CSS based platform */
-#pragma weak plat_arm_pwrc_setup
-
-
-/*
- * Slot 31 is reserved because the MHU hardware uses this register bit to
- * indicate a non-secure access attempt. The total number of available slots is
- * therefore 31 [30:0].
- */
-#define MHU_MAX_SLOT_ID		30
-
-void mhu_secure_message_start(unsigned int slot_id)
-{
-	assert(slot_id <= MHU_MAX_SLOT_ID);
-
-	arm_lock_get();
-
-	/* Make sure any previous command has finished */
-	while (mmio_read_32(PLAT_CSS_MHU_BASE + CPU_INTR_S_STAT) &
-							(1 << slot_id))
-		;
-}
-
-void mhu_secure_message_send(unsigned int slot_id)
-{
-	assert(slot_id <= MHU_MAX_SLOT_ID);
-	assert(!(mmio_read_32(PLAT_CSS_MHU_BASE + CPU_INTR_S_STAT) &
-							(1 << slot_id)));
-
-	/* Send command to SCP */
-	mmio_write_32(PLAT_CSS_MHU_BASE + CPU_INTR_S_SET, 1 << slot_id);
-}
-
-uint32_t mhu_secure_message_wait(void)
-{
-	/* Wait for response from SCP */
-	uint32_t response;
-	while (!(response = mmio_read_32(PLAT_CSS_MHU_BASE + SCP_INTR_S_STAT)))
-		;
-
-	return response;
-}
-
-void mhu_secure_message_end(unsigned int slot_id)
-{
-	assert(slot_id <= MHU_MAX_SLOT_ID);
-
-	/*
-	 * Clear any response we got by writing one in the relevant slot bit to
-	 * the CLEAR register
-	 */
-	mmio_write_32(PLAT_CSS_MHU_BASE + SCP_INTR_S_CLEAR, 1 << slot_id);
-
-	arm_lock_release();
-}
-
-void __init mhu_secure_init(void)
-{
-	arm_lock_init();
-
-	/*
-	 * The STAT register resets to zero. Ensure it is in the expected state,
-	 * as a stale or garbage value would make us think it's a message we've
-	 * already sent.
-	 */
-	assert(mmio_read_32(PLAT_CSS_MHU_BASE + CPU_INTR_S_STAT) == 0);
-}
-
-void __init plat_arm_pwrc_setup(void)
-{
-	mhu_secure_init();
-}
diff --git a/plat/arm/css/drivers/mhu/css_mhu.h b/plat/arm/css/drivers/mhu/css_mhu.h
deleted file mode 100644
index ff04ae4..0000000
--- a/plat/arm/css/drivers/mhu/css_mhu.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Copyright (c) 2014-2018, ARM Limited and Contributors. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-#ifndef CSS_MHU_H
-#define CSS_MHU_H
-
-#include <stdint.h>
-
-void mhu_secure_message_start(unsigned int slot_id);
-void mhu_secure_message_send(unsigned int slot_id);
-uint32_t mhu_secure_message_wait(void);
-void mhu_secure_message_end(unsigned int slot_id);
-
-void mhu_secure_init(void);
-
-#endif /* CSS_MHU_H */
diff --git a/plat/arm/css/drivers/mhu/css_mhu_doorbell.c b/plat/arm/css/drivers/mhu/css_mhu_doorbell.c
deleted file mode 100644
index c031efa..0000000
--- a/plat/arm/css/drivers/mhu/css_mhu_doorbell.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (c) 2014-2019, ARM Limited and Contributors. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-#include <platform_def.h>
-
-#include <arch_helpers.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,
-			plat_info->db_modify_mask,
-			plat_info->db_preserve_mask);
-	return;
-}
-
-void mhuv2_ring_doorbell(struct scmi_channel_plat_info *plat_info)
-{
-	/* wake receiver */
-	MHU_V2_ACCESS_REQUEST(MHUV2_BASE_ADDR);
-
-	/* wait for receiver to acknowledge its ready */
-	while (MHU_V2_IS_ACCESS_READY(MHUV2_BASE_ADDR) == 0)
-		;
-
-	MHU_RING_DOORBELL(plat_info->db_reg_addr,
-			plat_info->db_modify_mask,
-			plat_info->db_preserve_mask);
-
-	/* clear the access request for the receiver */
-	MHU_V2_CLEAR_REQUEST(MHUV2_BASE_ADDR);
-
-	return;
-}
diff --git a/plat/arm/css/drivers/mhu/css_mhu_doorbell.h b/plat/arm/css/drivers/mhu/css_mhu_doorbell.h
deleted file mode 100644
index ecee563..0000000
--- a/plat/arm/css/drivers/mhu/css_mhu_doorbell.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (c) 2014-2018, ARM Limited and Contributors. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-#ifndef CSS_MHU_DOORBELL_H
-#define CSS_MHU_DOORBELL_H
-
-#include <stdint.h>
-
-#include <lib/mmio.h>
-
-/* MHUv2 Base Address */
-#define MHUV2_BASE_ADDR		PLAT_CSS_MHU_BASE
-
-/* MHUv2 Control Registers Offsets */
-#define MHU_V2_MSG_NO_CAP_OFFSET		0xF80
-#define MHU_V2_ACCESS_REQ_OFFSET		0xF88
-#define MHU_V2_ACCESS_READY_OFFSET		0xF8C
-
-#define SENDER_REG_STAT(_channel)	(0x20 * (_channel))
-#define SENDER_REG_SET(_channel)	((0x20 * (_channel)) + 0xC)
-
-/* Helper macro to ring doorbell */
-#define MHU_RING_DOORBELL(addr, modify_mask, preserve_mask)	do {	\
-		uint32_t db = mmio_read_32(addr) & (preserve_mask);	\
-		mmio_write_32(addr, db | (modify_mask));		\
-	} while (0)
-
-#define MHU_V2_ACCESS_REQUEST(addr)	\
-	mmio_write_32((addr) + MHU_V2_ACCESS_REQ_OFFSET, 0x1)
-
-#define MHU_V2_CLEAR_REQUEST(addr)	\
-	mmio_write_32((addr) + MHU_V2_ACCESS_REQ_OFFSET, 0x0)
-
-#define MHU_V2_IS_ACCESS_READY(addr)	\
-	(mmio_read_32((addr) + MHU_V2_ACCESS_READY_OFFSET) & 0x1)
-
-struct scmi_channel_plat_info;
-void mhu_ring_doorbell(struct scmi_channel_plat_info *plat_info);
-void mhuv2_ring_doorbell(struct scmi_channel_plat_info *plat_info);
-
-#endif	/* CSS_MHU_DOORBELL_H */
diff --git a/plat/arm/css/drivers/scp/css_bom_bootloader.c b/plat/arm/css/drivers/scp/css_bom_bootloader.c
index ca40c30..5fe268d 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 d64bfa2..4965c66 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