drivers: can: Refactor drivers to use shared init priority
Refactors all of the CAN drivers to use a shared driver class initialization priority configuration, CONFIG_CAN_INIT_PRIORITY, to allow configuring CAN drivers separately from other devices. This is similar to other driver classes like I2C and SPI. The default is set to CONFIG_KERNEL_INIT_PRIORITY_DEVICE to preserve the existing default initialization priority for most drivers. The exception is the mcp2515 driver which has a dependency on a SPI driver and must therefore initialize later than the default device priority. Signed-off-by: Maureen Helm <maureen.helm@intel.com>
This commit is contained in:
parent
27907d0625
commit
e297f8ee26
9 changed files with 21 additions and 19 deletions
|
@ -11,6 +11,9 @@ config SPI
|
|||
config CAN_MCP2515
|
||||
default y
|
||||
|
||||
config CAN_INIT_PRIORITY
|
||||
default 80
|
||||
|
||||
endif # CAN
|
||||
|
||||
endif # SHIELD_DFROBOT_CAN_BUS_V2_0
|
||||
|
|
|
@ -17,6 +17,12 @@ module = CAN
|
|||
module-str = CAN
|
||||
source "subsys/logging/Kconfig.template.log_config"
|
||||
|
||||
config CAN_INIT_PRIORITY
|
||||
int "CAN init priority"
|
||||
default KERNEL_INIT_PRIORITY_DEVICE
|
||||
help
|
||||
CAN driver device initialization priority.
|
||||
|
||||
config CAN_SHELL
|
||||
bool "Enable CAN Shell"
|
||||
default y
|
||||
|
|
|
@ -34,11 +34,4 @@ config CAN_MAX_FILTER
|
|||
Defines the array size of the callback/msgq pointers.
|
||||
Must be at least the size of concurrent reads.
|
||||
|
||||
|
||||
config CAN_MCP2515_INIT_PRIORITY
|
||||
int "Init priority"
|
||||
default 80
|
||||
help
|
||||
MCP2515 driver initialization priority, must be higher than SPI.
|
||||
|
||||
endif # CAN_MCP2515
|
||||
|
|
|
@ -295,7 +295,7 @@ static struct can_loopback_data can_loopback_dev_data_1;
|
|||
DEVICE_DEFINE(can_loopback_1, CONFIG_CAN_LOOPBACK_DEV_NAME,
|
||||
&can_loopback_init, NULL,
|
||||
&can_loopback_dev_data_1, NULL,
|
||||
POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEVICE,
|
||||
POST_KERNEL, CONFIG_CAN_INIT_PRIORITY,
|
||||
&can_api_funcs);
|
||||
|
||||
|
||||
|
@ -328,7 +328,7 @@ static int socket_can_init_1(const struct device *dev)
|
|||
|
||||
NET_DEVICE_INIT(socket_can_loopback_1, SOCKET_CAN_NAME_1, socket_can_init_1,
|
||||
NULL, &socket_can_context_1, NULL,
|
||||
CONFIG_KERNEL_INIT_PRIORITY_DEVICE,
|
||||
CONFIG_CAN_INIT_PRIORITY,
|
||||
&socket_can_api,
|
||||
CANBUS_RAW_L2, NET_L2_GET_CTX_TYPE(CANBUS_RAW_L2), CAN_MTU);
|
||||
|
||||
|
|
|
@ -925,7 +925,7 @@ static const struct mcp2515_config mcp2515_config_1 = {
|
|||
|
||||
DEVICE_DT_INST_DEFINE(0, &mcp2515_init, NULL,
|
||||
&mcp2515_data_1, &mcp2515_config_1, POST_KERNEL,
|
||||
CONFIG_CAN_MCP2515_INIT_PRIORITY, &can_api_funcs);
|
||||
CONFIG_CAN_INIT_PRIORITY, &can_api_funcs);
|
||||
|
||||
#if defined(CONFIG_NET_SOCKETS_CAN)
|
||||
|
||||
|
@ -956,7 +956,7 @@ static int socket_can_init(const struct device *dev)
|
|||
|
||||
NET_DEVICE_INIT(socket_can_mcp2515_1, SOCKET_CAN_NAME_1, socket_can_init,
|
||||
NULL, &socket_can_context_1, NULL,
|
||||
CONFIG_KERNEL_INIT_PRIORITY_DEVICE,
|
||||
CONFIG_CAN_INIT_PRIORITY,
|
||||
&socket_can_api,
|
||||
CANBUS_RAW_L2, NET_L2_GET_CTX_TYPE(CANBUS_RAW_L2), CAN_MTU);
|
||||
|
||||
|
|
|
@ -808,7 +808,7 @@ static const struct can_driver_api mcux_flexcan_driver_api = {
|
|||
DEVICE_DT_INST_DEFINE(id, &mcux_flexcan_init, \
|
||||
NULL, &mcux_flexcan_data_##id, \
|
||||
&mcux_flexcan_config_##id, POST_KERNEL, \
|
||||
CONFIG_KERNEL_INIT_PRIORITY_DEVICE, \
|
||||
CONFIG_CAN_INIT_PRIORITY, \
|
||||
&mcux_flexcan_driver_api); \
|
||||
\
|
||||
static void mcux_flexcan_irq_config_##id(const struct device *dev) \
|
||||
|
@ -849,7 +849,7 @@ DT_INST_FOREACH_STATUS_OKAY(FLEXCAN_DEVICE_INIT_MCUX)
|
|||
NET_DEVICE_INIT(socket_can_flexcan_##id, SOCKET_CAN_NAME_##id, \
|
||||
socket_can_init_##id, NULL, \
|
||||
&socket_can_context_##id, NULL, \
|
||||
CONFIG_KERNEL_INIT_PRIORITY_DEVICE, &socket_can_api, \
|
||||
CONFIG_CAN_INIT_PRIORITY, &socket_can_api, \
|
||||
CANBUS_RAW_L2, NET_L2_GET_CTX_TYPE(CANBUS_RAW_L2), \
|
||||
CAN_MTU); \
|
||||
|
||||
|
|
|
@ -1040,7 +1040,7 @@ static const struct can_driver_api can_rcar_driver_api = {
|
|||
&can_rcar_data_##n, \
|
||||
&can_rcar_cfg_##n, \
|
||||
POST_KERNEL, \
|
||||
CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, \
|
||||
CONFIG_CAN_INIT_PRIORITY, \
|
||||
&can_rcar_driver_api \
|
||||
); \
|
||||
static void can_rcar_##n##_init(const struct device *dev) \
|
||||
|
|
|
@ -1150,7 +1150,7 @@ static struct can_stm32_data can_stm32_dev_data_1;
|
|||
|
||||
DEVICE_DT_DEFINE(DT_NODELABEL(can1), &can_stm32_init, NULL,
|
||||
&can_stm32_dev_data_1, &can_stm32_cfg_1,
|
||||
POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEVICE,
|
||||
POST_KERNEL, CONFIG_CAN_INIT_PRIORITY,
|
||||
&can_api_funcs);
|
||||
|
||||
static void config_can_1_irq(CAN_TypeDef *can)
|
||||
|
@ -1211,7 +1211,7 @@ static int socket_can_init_1(const struct device *dev)
|
|||
|
||||
NET_DEVICE_INIT(socket_can_stm32_1, SOCKET_CAN_NAME_1, socket_can_init_1,
|
||||
NULL, &socket_can_context_1, NULL,
|
||||
CONFIG_KERNEL_INIT_PRIORITY_DEVICE,
|
||||
CONFIG_CAN_INIT_PRIORITY,
|
||||
&socket_can_api,
|
||||
CANBUS_RAW_L2, NET_L2_GET_CTX_TYPE(CANBUS_RAW_L2), CAN_MTU);
|
||||
|
||||
|
@ -1249,7 +1249,7 @@ static struct can_stm32_data can_stm32_dev_data_2;
|
|||
|
||||
DEVICE_DT_DEFINE(DT_NODELABEL(can2), &can_stm32_init, NULL,
|
||||
&can_stm32_dev_data_2, &can_stm32_cfg_2,
|
||||
POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEVICE,
|
||||
POST_KERNEL, CONFIG_CAN_INIT_PRIORITY,
|
||||
&can_api_funcs);
|
||||
|
||||
static void config_can_2_irq(CAN_TypeDef *can)
|
||||
|
@ -1303,7 +1303,7 @@ static int socket_can_init_2(const struct device *dev)
|
|||
|
||||
NET_DEVICE_INIT(socket_can_stm32_2, SOCKET_CAN_NAME_2, socket_can_init_2,
|
||||
NULL, &socket_can_context_2, NULL,
|
||||
CONFIG_KERNEL_INIT_PRIORITY_DEVICE,
|
||||
CONFIG_CAN_INIT_PRIORITY,
|
||||
&socket_can_api,
|
||||
CANBUS_RAW_L2, NET_L2_GET_CTX_TYPE(CANBUS_RAW_L2), CAN_MTU);
|
||||
|
||||
|
|
|
@ -279,7 +279,7 @@ static struct can_stm32fd_data can_stm32fd_dev_data_##inst;
|
|||
#define CAN_STM32FD_DEVICE_INST(inst) \
|
||||
DEVICE_DT_INST_DEFINE(inst, &can_stm32fd_init, NULL, \
|
||||
&can_stm32fd_dev_data_##inst, &can_stm32fd_cfg_##inst, \
|
||||
POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEVICE, \
|
||||
POST_KERNEL, CONFIG_CAN_INIT_PRIORITY, \
|
||||
&can_api_funcs);
|
||||
|
||||
#define CAN_STM32FD_INST(inst) \
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue