Skip to content

Commit 5991985

Browse files
drivers: can: stm32: bxcan: use proper namespace for Kconfig symbols
Use proper namespace for the STM32 bxCAN Kconfig symbols, renaming CONFIG_CAN_MAX_STD_ID_FILTER to CONFIG_CAN_STM32_BXCAN_MAX_STD_ID_FILTERS and CONFIG_CAN_MAX_EXT_ID_FILTER to CONFIG_CAN_STM32_BXCAN_MAX_EXT_ID_FILTERS. This prevents Kconfig symbol clashes between different CAN controller drivers. Signed-off-by: Henrik Brix Andersen <henrik@brixandersen.dk>
1 parent abaee76 commit 5991985

File tree

2 files changed

+35
-31
lines changed

2 files changed

+35
-31
lines changed

drivers/can/Kconfig.stm32

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ config CAN_STM32_BXCAN
1414

1515
if CAN_STM32_BXCAN
1616

17-
config CAN_MAX_STD_ID_FILTER
17+
config CAN_STM32_BXCAN_MAX_STD_ID_FILTERS
1818
int "Maximum number of standard (11-bit) ID filters"
1919
default 14
2020
range 0 28
@@ -28,9 +28,9 @@ config CAN_MAX_STD_ID_FILTER
2828
The following equation determines the maximum total number of
2929
filters:
3030

31-
CAN_MAX_STD_ID_FILTER + CAN_MAX_EXT_ID_FILTER * 2 <= 28
31+
CAN_STM32_BXCAN_MAX_STD_ID_FILTERS + CAN_STM32_BXCAN_MAX_EXT_ID_FILTERS * 2 <= 28
3232

33-
config CAN_MAX_EXT_ID_FILTER
33+
config CAN_STM32_BXCAN_MAX_EXT_ID_FILTERS
3434
int "Maximum number of extended (29-bit) ID filters"
3535
default 7
3636
range 0 14
@@ -44,7 +44,7 @@ config CAN_MAX_EXT_ID_FILTER
4444
The following equation determines the maximum total number of
4545
filters:
4646

47-
CAN_MAX_STD_ID_FILTER + CAN_MAX_EXT_ID_FILTER * 2 <= 28
47+
CAN_STM32_BXCAN_MAX_STD_ID_FILTERS + CAN_STM32_BXCAN_MAX_EXT_ID_FILTERS * 2 <= 28
4848

4949
endif # CAN_STM32_BXCAN
5050

drivers/can/can_stm32_bxcan.c

Lines changed: 31 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ LOG_MODULE_REGISTER(can_stm32, CONFIG_CAN_LOG_LEVEL);
2626

2727
#define CAN_STM32_NUM_FILTER_BANKS (14)
2828
#define CAN_STM32_MAX_FILTER_ID \
29-
(CONFIG_CAN_MAX_EXT_ID_FILTER + CONFIG_CAN_MAX_STD_ID_FILTER * 2)
29+
(CONFIG_CAN_STM32_BXCAN_MAX_EXT_ID_FILTERS + CONFIG_CAN_STM32_BXCAN_MAX_STD_ID_FILTERS * 2)
3030

3131
#define CAN_STM32_FIRX_STD_IDE_POS (3U)
3232
#define CAN_STM32_FIRX_STD_RTR_POS (4U)
@@ -37,7 +37,7 @@ LOG_MODULE_REGISTER(can_stm32, CONFIG_CAN_LOG_LEVEL);
3737
#define CAN_STM32_FIRX_EXT_STD_ID_POS (21U)
3838
#define CAN_STM32_FIRX_EXT_EXT_ID_POS (3U)
3939

40-
#if (CONFIG_CAN_MAX_STD_ID_FILTER + CONFIG_CAN_MAX_EXT_ID_FILTER * 2) > \
40+
#if (CONFIG_CAN_STM32_BXCAN_MAX_STD_ID_FILTERS + CONFIG_CAN_STM32_BXCAN_MAX_EXT_ID_FILTERS * 2) > \
4141
(CAN_STM32_NUM_FILTER_BANKS * 2)
4242
#error Number of configured filters exceeds available filter bank slots.
4343
#endif
@@ -54,10 +54,10 @@ struct can_stm32_data {
5454
struct can_stm32_mailbox mb0;
5555
struct can_stm32_mailbox mb1;
5656
struct can_stm32_mailbox mb2;
57-
can_rx_callback_t rx_cb_std[CONFIG_CAN_MAX_STD_ID_FILTER];
58-
can_rx_callback_t rx_cb_ext[CONFIG_CAN_MAX_EXT_ID_FILTER];
59-
void *cb_arg_std[CONFIG_CAN_MAX_STD_ID_FILTER];
60-
void *cb_arg_ext[CONFIG_CAN_MAX_EXT_ID_FILTER];
57+
can_rx_callback_t rx_cb_std[CONFIG_CAN_STM32_BXCAN_MAX_STD_ID_FILTERS];
58+
can_rx_callback_t rx_cb_ext[CONFIG_CAN_STM32_BXCAN_MAX_EXT_ID_FILTERS];
59+
void *cb_arg_std[CONFIG_CAN_STM32_BXCAN_MAX_STD_ID_FILTERS];
60+
void *cb_arg_ext[CONFIG_CAN_STM32_BXCAN_MAX_EXT_ID_FILTERS];
6161
enum can_state state;
6262
};
6363

@@ -130,11 +130,11 @@ static inline void can_stm32_rx_isr_handler(const struct device *dev)
130130

131131
can_stm32_rx_fifo_pop(mbox, &frame);
132132

133-
if (filter_id < CONFIG_CAN_MAX_EXT_ID_FILTER) {
133+
if (filter_id < CONFIG_CAN_STM32_BXCAN_MAX_EXT_ID_FILTERS) {
134134
callback = data->rx_cb_ext[filter_id];
135135
cb_arg = data->cb_arg_ext[filter_id];
136136
} else if (filter_id < CAN_STM32_MAX_FILTER_ID) {
137-
index = filter_id - CONFIG_CAN_MAX_EXT_ID_FILTER;
137+
index = filter_id - CONFIG_CAN_STM32_BXCAN_MAX_EXT_ID_FILTERS;
138138
callback = data->rx_cb_std[index];
139139
cb_arg = data->cb_arg_std[index];
140140
}
@@ -586,9 +586,9 @@ static int can_stm32_get_max_filters(const struct device *dev, bool ide)
586586
ARG_UNUSED(dev);
587587

588588
if (ide) {
589-
return CONFIG_CAN_MAX_EXT_ID_FILTER;
589+
return CONFIG_CAN_STM32_BXCAN_MAX_EXT_ID_FILTERS;
590590
} else {
591-
return CONFIG_CAN_MAX_STD_ID_FILTER;
591+
return CONFIG_CAN_STM32_BXCAN_MAX_STD_ID_FILTERS;
592592
}
593593
}
594594

@@ -643,15 +643,17 @@ static int can_stm32_init(const struct device *dev)
643643
return ret;
644644
}
645645

646-
/* configure scale of filter banks < CONFIG_CAN_MAX_EXT_ID_FILTER for ext ids */
647-
/* We have to have set filters after initializing master CAN */
646+
/*
647+
* Configure scale of filter banks < CONFIG_CAN_STM32_BXCAN_MAX_EXT_ID_FILTERS for ext ids
648+
* We have to have set filters after initializing master CAN
649+
*/
648650
if (cfg->can == cfg->master_can) {
649651
cfg->master_can->FMR |= CAN_FMR_FINIT;
650-
cfg->master_can->FS1R |= ((1U << CONFIG_CAN_MAX_EXT_ID_FILTER) - 1);
652+
cfg->master_can->FS1R |= ((1U << CONFIG_CAN_STM32_BXCAN_MAX_EXT_ID_FILTERS) - 1);
651653

652654
#if DT_NUM_INST_STATUS_OKAY(DT_DRV_COMPAT) > 1
653655
/* reserve ext_id filters on slave CAN device */
654-
cfg->master_can->FS1R |= ((1U << CONFIG_CAN_MAX_EXT_ID_FILTER) - 1)
656+
cfg->master_can->FS1R |= ((1U << CONFIG_CAN_STM32_BXCAN_MAX_EXT_ID_FILTERS) - 1)
655657
<< CAN_STM32_NUM_FILTER_BANKS;
656658
#endif /* DT_NUM_INST_STATUS_OKAY(DT_DRV_COMPAT) > 1 */
657659

@@ -863,7 +865,7 @@ static void can_stm32_set_filter_bank(int filter_id, CAN_FilterRegister_TypeDef
863865
filter_reg->FR1 = id;
864866
filter_reg->FR2 = mask;
865867
} else {
866-
if ((filter_id - CONFIG_CAN_MAX_EXT_ID_FILTER) % 2 == 0) {
868+
if ((filter_id - CONFIG_CAN_STM32_BXCAN_MAX_EXT_ID_FILTERS) % 2 == 0) {
867869
/* even std filter id: first 1/2 bank */
868870
filter_reg->FR1 = id | (mask << 16);
869871
} else {
@@ -919,7 +921,7 @@ static inline int can_stm32_set_filter(const struct device *dev, const struct ca
919921
}
920922

921923
if ((filter->flags & CAN_FILTER_IDE) != 0) {
922-
for (int i = 0; i < CONFIG_CAN_MAX_EXT_ID_FILTER; i++) {
924+
for (int i = 0; i < CONFIG_CAN_STM32_BXCAN_MAX_EXT_ID_FILTERS; i++) {
923925
if (data->rx_cb_ext[i] == NULL) {
924926
id = can_stm32_filter_to_ext_id(filter);
925927
mask = can_stm32_filter_to_ext_mask(filter);
@@ -929,12 +931,13 @@ static inline int can_stm32_set_filter(const struct device *dev, const struct ca
929931
}
930932
}
931933
} else {
932-
for (int i = 0; i < CONFIG_CAN_MAX_STD_ID_FILTER; i++) {
934+
for (int i = 0; i < CONFIG_CAN_STM32_BXCAN_MAX_STD_ID_FILTERS; i++) {
933935
if (data->rx_cb_std[i] == NULL) {
934936
id = can_stm32_filter_to_std_id(filter);
935937
mask = can_stm32_filter_to_std_mask(filter);
936-
filter_id = CONFIG_CAN_MAX_EXT_ID_FILTER + i;
937-
bank_num = bank_offset + CONFIG_CAN_MAX_EXT_ID_FILTER + i / 2;
938+
filter_id = CONFIG_CAN_STM32_BXCAN_MAX_EXT_ID_FILTERS + i;
939+
bank_num = bank_offset + CONFIG_CAN_STM32_BXCAN_MAX_EXT_ID_FILTERS +
940+
i / 2;
938941
break;
939942
}
940943
}
@@ -965,7 +968,7 @@ static inline int can_stm32_set_filter(const struct device *dev, const struct ca
965968
* This driver uses masked mode for all filters (CAN_FM1R left at reset value
966969
* 0x00) in order to simplify mapping between filter match index from the FIFOs
967970
* and array index for the callbacks. All ext ID filters are stored in the
968-
* banks below CONFIG_CAN_MAX_EXT_ID_FILTER, followed by the std ID filters,
971+
* banks below CONFIG_CAN_STM32_BXCAN_MAX_EXT_ID_FILTERS, followed by the std ID filters,
969972
* which consume only 1/2 bank per filter.
970973
*
971974
* The more complicated list mode must be implemented if someone requires more
@@ -993,8 +996,9 @@ static int can_stm32_add_rx_filter(const struct device *dev, can_rx_callback_t c
993996
data->rx_cb_ext[filter_id] = cb;
994997
data->cb_arg_ext[filter_id] = cb_arg;
995998
} else {
996-
data->rx_cb_std[filter_id - CONFIG_CAN_MAX_EXT_ID_FILTER] = cb;
997-
data->cb_arg_std[filter_id - CONFIG_CAN_MAX_EXT_ID_FILTER] = cb_arg;
999+
data->rx_cb_std[filter_id - CONFIG_CAN_STM32_BXCAN_MAX_EXT_ID_FILTERS] = cb;
1000+
data->cb_arg_std[filter_id - CONFIG_CAN_STM32_BXCAN_MAX_EXT_ID_FILTERS] =
1001+
cb_arg;
9981002
}
9991003
}
10001004

@@ -1026,7 +1030,7 @@ static void can_stm32_remove_rx_filter(const struct device *dev, int filter_id)
10261030
bank_offset = CAN_STM32_NUM_FILTER_BANKS;
10271031
}
10281032

1029-
if (filter_id < CONFIG_CAN_MAX_EXT_ID_FILTER) {
1033+
if (filter_id < CONFIG_CAN_STM32_BXCAN_MAX_EXT_ID_FILTERS) {
10301034
ide = true;
10311035
bank_num = bank_offset + filter_id;
10321036

@@ -1035,18 +1039,18 @@ static void can_stm32_remove_rx_filter(const struct device *dev, int filter_id)
10351039

10361040
bank_unused = true;
10371041
} else {
1038-
int filter_index = filter_id - CONFIG_CAN_MAX_EXT_ID_FILTER;
1042+
int filter_index = filter_id - CONFIG_CAN_STM32_BXCAN_MAX_EXT_ID_FILTERS;
10391043

10401044
ide = false;
1041-
bank_num = bank_offset + CONFIG_CAN_MAX_EXT_ID_FILTER +
1042-
(filter_id - CONFIG_CAN_MAX_EXT_ID_FILTER) / 2;
1045+
bank_num = bank_offset + CONFIG_CAN_STM32_BXCAN_MAX_EXT_ID_FILTERS +
1046+
(filter_id - CONFIG_CAN_STM32_BXCAN_MAX_EXT_ID_FILTERS) / 2;
10431047

10441048
data->rx_cb_std[filter_index] = NULL;
10451049
data->cb_arg_std[filter_index] = NULL;
10461050

10471051
if (filter_index % 2 == 1) {
10481052
bank_unused = data->rx_cb_std[filter_index - 1] == NULL;
1049-
} else if (filter_index + 1 < CONFIG_CAN_MAX_STD_ID_FILTER) {
1053+
} else if (filter_index + 1 < CONFIG_CAN_STM32_BXCAN_MAX_STD_ID_FILTERS) {
10501054
bank_unused = data->rx_cb_std[filter_index + 1] == NULL;
10511055
} else {
10521056
bank_unused = true;

0 commit comments

Comments
 (0)