blob: 7f14ca5a272b84a8f822c20dc75f08fe90baf3bf [file] [log] [blame]
Khandelwal368564c2020-01-29 16:51:42 +00001/*
Sandrine Bailleux7810eb32022-03-18 12:44:27 +01002 * Copyright (c) 2019-2022, Arm Limited. All rights reserved.
Khandelwal368564c2020-01-29 16:51:42 +00003 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
Sandrine Bailleux7810eb32022-03-18 12:44:27 +01007#ifndef CORSTONE700_MHU_H
8#define CORSTONE700_MHU_H
Khandelwal368564c2020-01-29 16:51:42 +00009
10#define MHU_POLL_INTR_STAT_TIMEOUT 50000 /*timeout value in us*/
11
12/* CPU MHU secure channel registers */
13#define CPU_INTR_S_STAT 0x00
14#define CPU_INTR_S_SET 0x0C
15
16/* MHUv2 Control Registers Offsets */
17#define MHU_V2_MSG_CFG_OFFSET 0xF80
18#define MHU_V2_ACCESS_REQ_OFFSET 0xF88
19#define MHU_V2_ACCESS_READY_OFFSET 0xF8C
20
21#define MHU_V2_ACCESS_REQUEST(addr) \
22 mmio_write_32((addr) + MHU_V2_ACCESS_REQ_OFFSET, 0x1)
23
24#define MHU_V2_CLEAR_REQUEST(addr) \
25 mmio_write_32((addr) + MHU_V2_ACCESS_REQ_OFFSET, 0x0)
26
27#define MHU_V2_IS_ACCESS_READY(addr) \
28 (mmio_read_32((addr) + MHU_V2_ACCESS_READY_OFFSET) & 0x1)
29
30void mhu_secure_message_start(uintptr_t address, unsigned int slot_id);
31void mhu_secure_message_send(uintptr_t address,
32 unsigned int slot_id,
33 unsigned int message);
34void mhu_secure_message_end(uintptr_t address, unsigned int slot_id);
35void mhu_secure_init(void);
36
Sandrine Bailleux7810eb32022-03-18 12:44:27 +010037#endif /* CORSTONE700_MHU_H */