Antonio Nino Diaz f3ff9f77d3 gxbb: Initial port of Amlogic Meson S905 (GXBB)
The Amlogic Meson S905 is a SoC with a quad core Arm Cortex-A53 running
at 1.5Ghz. It also contains a Cortex-M3 used as SCP.

This port is a minimal implementation of BL31 capable of booting
mainline U-Boot and Linux:

- Partial SCPI support.
- Basic PSCI support (CPU_ON, SYSTEM_RESET, SYSTEM_OFF).
- GICv2 driver set up.
- Basic SIP services (read efuse data, enable/disable JTAG).

This port has been tested in an ODROID-C2.

Change-Id: Ia4bc82d7aca42a69d6b118b947279f82b3f6c6da
Tested-by: Amit Singh Tomar <amittomer25@gmail.com>
Signed-off-by: Antonio Nino Diaz <antonio.ninodiaz@arm.com>
2018-10-26 11:53:41 +01:00

53 lines
898 B
C

/*
* Copyright (c) 2018, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#include <bakery_lock.h>
#include <mmio.h>
#include <platform_def.h>
static DEFINE_BAKERY_LOCK(mhu_lock);
void mhu_secure_message_start(void)
{
bakery_lock_get(&mhu_lock);
while (mmio_read_32(GXBB_HIU_MAILBOX_STAT_3) != 0)
;
}
void mhu_secure_message_send(uint32_t msg)
{
mmio_write_32(GXBB_HIU_MAILBOX_SET_3, msg);
while (mmio_read_32(GXBB_HIU_MAILBOX_STAT_3) != 0)
;
}
uint32_t mhu_secure_message_wait(void)
{
uint32_t val;
do {
val = mmio_read_32(GXBB_HIU_MAILBOX_STAT_0);
} while (val == 0);
return val;
}
void mhu_secure_message_end(void)
{
mmio_write_32(GXBB_HIU_MAILBOX_CLR_0, 0xFFFFFFFF);
bakery_lock_release(&mhu_lock);
}
void mhu_secure_init(void)
{
bakery_lock_init(&mhu_lock);
mmio_write_32(GXBB_HIU_MAILBOX_CLR_3, 0xFFFFFFFF);
}