@@ -56,38 +56,50 @@ static int backend_init(const struct device *instance)
5656
5757#define UNBOUND_MODE (i ) CONCAT(ICMSG_UNBOUND_MODE_, DT_INST_STRING_UPPER_TOKEN(i, unbound))
5858
59- #define DEFINE_BACKEND_DEVICE (i ) \
60- static const struct icmsg_config_t backend_config_##i = { \
61- .mbox_tx = MBOX_DT_SPEC_INST_GET(i, tx), \
62- .mbox_rx = MBOX_DT_SPEC_INST_GET(i, rx), \
63- .unbound_mode = UNBOUND_MODE(i), \
64- }; \
65- \
66- PBUF_DEFINE(tx_pb_##i, \
67- DT_REG_ADDR(DT_INST_PHANDLE(i, tx_region)), \
68- DT_REG_SIZE(DT_INST_PHANDLE(i, tx_region)), \
69- DT_INST_PROP_OR(i, dcache_alignment, 0), \
70- UNBOUND_MODE(i) != ICMSG_UNBOUND_MODE_DISABLE, \
71- UNBOUND_MODE(i) == ICMSG_UNBOUND_MODE_DETECT); \
72- PBUF_DEFINE(rx_pb_##i, \
73- DT_REG_ADDR(DT_INST_PHANDLE(i, rx_region)), \
74- DT_REG_SIZE(DT_INST_PHANDLE(i, rx_region)), \
75- DT_INST_PROP_OR(i, dcache_alignment, 0), \
76- UNBOUND_MODE(i) != ICMSG_UNBOUND_MODE_DISABLE, \
77- UNBOUND_MODE(i) == ICMSG_UNBOUND_MODE_DETECT); \
78- \
79- static struct icmsg_data_t backend_data_##i = { \
80- .tx_pb = &tx_pb_##i, \
81- .rx_pb = &rx_pb_##i, \
82- }; \
83- \
84- DEVICE_DT_INST_DEFINE(i, \
85- &backend_init, \
86- NULL, \
87- &backend_data_##i, \
88- &backend_config_##i, \
89- POST_KERNEL, \
90- CONFIG_IPC_SERVICE_REG_BACKEND_PRIORITY, \
59+ #define DEFINE_BACKEND_DEVICE (i ) \
60+ static const struct icmsg_config_t backend_config_##i = { \
61+ .mbox_tx = MBOX_DT_SPEC_INST_GET(i, tx), \
62+ .mbox_rx = MBOX_DT_SPEC_INST_GET(i, rx), \
63+ .unbound_mode = UNBOUND_MODE(i), \
64+ }; \
65+ \
66+ PBUF_DEFINE(tx_pb_##i, \
67+ DT_REG_ADDR(DT_INST_PHANDLE(i, tx_region)), \
68+ DT_REG_SIZE(DT_INST_PHANDLE(i, tx_region)), \
69+ DT_INST_PROP_OR(i, dcache_alignment, 0), \
70+ UNBOUND_MODE(i) != ICMSG_UNBOUND_MODE_DISABLE, \
71+ UNBOUND_MODE(i) == ICMSG_UNBOUND_MODE_DETECT); \
72+ PBUF_DEFINE(rx_pb_##i, \
73+ DT_REG_ADDR(DT_INST_PHANDLE(i, rx_region)), \
74+ DT_REG_SIZE(DT_INST_PHANDLE(i, rx_region)), \
75+ DT_INST_PROP_OR(i, dcache_alignment, 0), \
76+ UNBOUND_MODE(i) != ICMSG_UNBOUND_MODE_DISABLE, \
77+ UNBOUND_MODE(i) == ICMSG_UNBOUND_MODE_DETECT); \
78+ \
79+ BUILD_ASSERT(UNBOUND_MODE(i) != ICMSG_UNBOUND_MODE_DISABLE || \
80+ IS_ENABLED(CONFIG_IPC_SERVICE_ICMSG_UNBOUND_DISABLED_ALLOWED), \
81+ "Unbound mode \"disabled\" is was forbidden in Kconfig."); \
82+ \
83+ BUILD_ASSERT(UNBOUND_MODE(i) != ICMSG_UNBOUND_MODE_ENABLE || \
84+ IS_ENABLED(CONFIG_IPC_SERVICE_ICMSG_UNBOUND_ENABLED_ALLOWED), \
85+ "Unbound mode \"enabled\" is was forbidden in Kconfig."); \
86+ \
87+ BUILD_ASSERT(UNBOUND_MODE(i) != ICMSG_UNBOUND_MODE_DETECT || \
88+ IS_ENABLED(CONFIG_IPC_SERVICE_ICMSG_UNBOUND_DETECT_ALLOWED), \
89+ "Unbound mode \"detect\" is was forbidden in Kconfig."); \
90+ \
91+ static struct icmsg_data_t backend_data_##i = { \
92+ .tx_pb = &tx_pb_##i, \
93+ .rx_pb = &rx_pb_##i, \
94+ }; \
95+ \
96+ DEVICE_DT_INST_DEFINE(i, \
97+ &backend_init, \
98+ NULL, \
99+ &backend_data_##i, \
100+ &backend_config_##i, \
101+ POST_KERNEL, \
102+ CONFIG_IPC_SERVICE_REG_BACKEND_PRIORITY, \
91103 &backend_ops);
92104
93105DT_INST_FOREACH_STATUS_OKAY (DEFINE_BACKEND_DEVICE )
0 commit comments