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