Mistake on this page?
Report an issue in GitHub or email us
TARGET_TFM_V1_0/include/platform_multicore.h
1 /*
2  * Copyright (c) 2019, Arm Limited. All rights reserved.
3  * Copyright (c) 2019, Cypress Semiconductor Corporation. All rights reserved
4  *
5  * SPDX-License-Identifier: BSD-3-Clause
6  *
7  */
8 
9 #ifndef _TFM_PLATFORM_MULTICORE_
10 #define _TFM_PLATFORM_MULTICORE_
11 
12 #include <stdint.h>
13 #include "cy_device_headers.h"
14 
15 #define IPC_PSA_CLIENT_CALL_CHAN (8)
16 #define IPC_PSA_CLIENT_CALL_INTR_STRUCT (6)
17 #define IPC_PSA_CLIENT_CALL_INTR_MASK (1 << IPC_PSA_CLIENT_CALL_CHAN)
18 #define IPC_PSA_CLIENT_CALL_NOTIFY_MASK (1 << IPC_PSA_CLIENT_CALL_INTR_STRUCT)
19 #define IPC_PSA_CLIENT_CALL_IPC_INTR cpuss_interrupts_ipc_6_IRQn
20 
21 #define IPC_PSA_CLIENT_REPLY_CHAN (9)
22 #define IPC_PSA_CLIENT_REPLY_INTR_STRUCT (8)
23 #define IPC_PSA_CLIENT_REPLY_INTR_MASK (1 << IPC_PSA_CLIENT_REPLY_CHAN)
24 #define IPC_PSA_CLIENT_REPLY_NOTIFY_MASK (1 << IPC_PSA_CLIENT_REPLY_INTR_STRUCT)
25 #define IPC_PSA_CLIENT_REPLY_IPC_INTR cpuss_interrupts_ipc_8_IRQn
26 
27 #define IPC_PSA_MAILBOX_LOCK_CHAN (10)
28 
29 #define IPC_RX_RELEASE_MASK (0)
30 
31 #define CY_IPC_NOTIFY_SHIFT (16)
32 
33 #define PSA_CLIENT_CALL_REQ_MAGIC (0xA5CF50C6)
34 #define PSA_CLIENT_CALL_REPLY_MAGIC (0xC605FC5A)
35 
36 #define NS_MAILBOX_INIT_ENABLE (0xAE)
37 #define S_MAILBOX_READY (0xC3)
38 
39 #define PLATFORM_MAILBOX_SUCCESS (0x0)
40 #define PLATFORM_MAILBOX_INVAL_PARAMS (INT32_MIN + 1)
41 #define PLATFORM_MAILBOX_TX_ERROR (INT32_MIN + 2)
42 #define PLATFORM_MAILBOX_RX_ERROR (INT32_MIN + 3)
43 #define PLATFORM_MAILBOX_INIT_ERROR (INT32_MIN + 4)
44 
45 /* Inter-Processor Communication (IPC) data channel for the Semaphores */
46 #define PLATFORM_MAILBOX_IPC_CHAN_SEMA CY_IPC_CHAN_SEMA
47 #define MAILBOX_SEMAPHORE_NUM (16)
48 
49 #define IPC_SYNC_MAGIC 0x7DADE011
50 
51 /**
52  * \brief Fetch a pointer from mailbox message
53  *
54  * \param[out] msg_ptr The address to write the pointer value to.
55  *
56  * \retval 0 The operation succeeds.
57  * \retval else The operation fails.
58  */
59 int platform_mailbox_fetch_msg_ptr(void **msg_ptr);
60 
61 /**
62  * \brief Fetch a data value from mailbox message
63  *
64  * \param[out] data_ptr The address to write the pointer value to.
65  *
66  * \retval 0 The operation succeeds.
67  * \retval else The operation fails.
68  */
69 int platform_mailbox_fetch_msg_data(uint32_t *data_ptr);
70 
71 /**
72  * \brief Send a pointer via mailbox message
73  *
74  * \param[in] msg_ptr The pointer value to be sent.
75  *
76  * \retval 0 The operation succeeds.
77  * \retval else The operation fails.
78  */
79 int platform_mailbox_send_msg_ptr(const void *msg_ptr);
80 
81 /**
82  * \brief Send a data value via mailbox message
83  *
84  * \param[in] data The data value to be sent
85  *
86  * \retval 0 The operation succeeds.
87  * \retval else The operation fails.
88  */
89 int platform_mailbox_send_msg_data(uint32_t data);
90 
91 /**
92  * \brief Wait for a mailbox notify event.
93  */
94 void platform_mailbox_wait_for_notify(void);
95 
96 /**
97  * \brief IPC initialization
98  *
99  * \retval 0 The operation succeeds.
100  * \retval else The operation fails.
101  */
102 int platform_ns_ipc_init(void);
103 
104 #endif
Important Information for this Arm website

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies. If you are not happy with the use of these cookies, please review our Cookie Policy to learn how they can be disabled. By disabling cookies, some features of the site will not work.