zephyr/drivers/ipm/ipm_nrfx_ipc.h

89 lines
1.7 KiB
C

/*
* Copyright (c) 2019, Nordic Semiconductor
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <nrfx_ipc.h>
#define NRFX_IPC_ID_MAX_VALUE IPC_CONF_NUM
/*
* Group IPC signals, events and channels into message channels.
* Message channels are one-way connections between cores.
*
* For example Message Channel 0 is configured as TX on core 0
* and as RX on core 1:
*
* [C0] [C1]
* SIGNAL0 -> CHANNEL0 -> EVENT0
*
* Message Channel 1 is configured as RX on core 0 and as TX
* on core 1:
* [C0] [C1]
* EVENT1 <- CHANNEL1 <- SIGNAL1
*/
#define IPC_EVENT_BIT(idx) \
((IS_ENABLED(CONFIG_IPM_MSG_CH_##idx##_RX)) << idx)
#define IPC_EVENT_BITS \
( \
IPC_EVENT_BIT(0) | \
IPC_EVENT_BIT(1) | \
IPC_EVENT_BIT(2) | \
IPC_EVENT_BIT(3) | \
IPC_EVENT_BIT(4) | \
IPC_EVENT_BIT(5) | \
IPC_EVENT_BIT(6) | \
IPC_EVENT_BIT(7) | \
IPC_EVENT_BIT(8) | \
IPC_EVENT_BIT(9) | \
IPC_EVENT_BIT(10) | \
IPC_EVENT_BIT(11) | \
IPC_EVENT_BIT(12) | \
IPC_EVENT_BIT(13) | \
IPC_EVENT_BIT(14) | \
IPC_EVENT_BIT(15) \
)
static const nrfx_ipc_config_t ipc_cfg = {
.send_task_config = {
[0] = BIT(0),
[1] = BIT(1),
[2] = BIT(2),
[3] = BIT(3),
[4] = BIT(4),
[5] = BIT(5),
[6] = BIT(6),
[7] = BIT(7),
[8] = BIT(8),
[9] = BIT(9),
[10] = BIT(10),
[11] = BIT(11),
[12] = BIT(12),
[13] = BIT(13),
[14] = BIT(14),
[15] = BIT(15),
},
.receive_event_config = {
[0] = BIT(0),
[1] = BIT(1),
[2] = BIT(2),
[3] = BIT(3),
[4] = BIT(4),
[5] = BIT(5),
[6] = BIT(6),
[7] = BIT(7),
[8] = BIT(8),
[9] = BIT(9),
[10] = BIT(10),
[11] = BIT(11),
[12] = BIT(12),
[13] = BIT(13),
[14] = BIT(14),
[15] = BIT(15),
},
.receive_events_enabled = IPC_EVENT_BITS,
};