drivers: can: socketCAN: Move socket code to own file
Move the code for socket instanciation from each driver to a generic driver, that makes an instance of a socketCAN net device for the chosen node. Signed-off-by: Alexander Wachter <alexander@wachter.cloud>
This commit is contained in:
parent
f1e75dea50
commit
e24b087918
8 changed files with 171 additions and 341 deletions
|
@ -869,34 +869,3 @@ static const struct can_driver_api mcux_flexcan_driver_api = {
|
|||
}
|
||||
|
||||
DT_INST_FOREACH_STATUS_OKAY(FLEXCAN_DEVICE_INIT_MCUX)
|
||||
|
||||
#if defined(CONFIG_NET_SOCKETS_CAN)
|
||||
#include "socket_can_generic.h"
|
||||
#define FLEXCAN_DEVICE_SOCKET_CAN(id) \
|
||||
static struct socket_can_context socket_can_context_##id; \
|
||||
static int socket_can_init_##id(const struct device *dev) \
|
||||
{ \
|
||||
const struct device *can_dev = DEVICE_DT_INST_GET(id); \
|
||||
struct socket_can_context *socket_context = dev->data; \
|
||||
LOG_DBG("Init socket CAN device %p (%s) for dev %p (%s)", \
|
||||
dev, dev->name, can_dev, can_dev->name); \
|
||||
socket_context->can_dev = can_dev; \
|
||||
socket_context->msgq = &socket_can_msgq; \
|
||||
socket_context->rx_tid = \
|
||||
k_thread_create(&socket_context->rx_thread_data, \
|
||||
rx_thread_stack, \
|
||||
K_KERNEL_STACK_SIZEOF(rx_thread_stack), \
|
||||
rx_thread, socket_context, NULL, NULL, \
|
||||
RX_THREAD_PRIORITY, 0, K_NO_WAIT); \
|
||||
return 0; \
|
||||
} \
|
||||
\
|
||||
NET_DEVICE_INIT(socket_can_flexcan_##id, SOCKET_CAN_NAME_##id, \
|
||||
socket_can_init_##id, NULL, \
|
||||
&socket_can_context_##id, NULL, \
|
||||
CONFIG_CAN_INIT_PRIORITY, &socket_can_api, \
|
||||
CANBUS_RAW_L2, NET_L2_GET_CTX_TYPE(CANBUS_RAW_L2), \
|
||||
CAN_MTU); \
|
||||
|
||||
DT_INST_FOREACH_STATUS_OKAY(FLEXCAN_DEVICE_SOCKET_CAN)
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue