/* * Copyright (c) 2019, Nordic Semiconductor * * SPDX-License-Identifier: Apache-2.0 */ #include #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, };