From fd6ba71076dcf4b561686b311d3b81cc4c9051bb Mon Sep 17 00:00:00 2001 From: Henrik Brix Andersen Date: Tue, 30 May 2023 19:46:48 +0200 Subject: [PATCH] drivers: can: stm32fd: use bosch m_can timing parameter initializers The minimum/maximum CAN timing parameters for the STM32 FDCAN driver uses the wrong values for the minimum, nominal phase segment values. Using the static initializers fixes these and aligns them to the Bosch M_CAN manual. The STM32G4 reference manual contains contradicting limits for these register values. Fixes: #58429 Signed-off-by: Henrik Brix Andersen --- drivers/can/can_stm32fd.c | 32 ++++---------------------------- 1 file changed, 4 insertions(+), 28 deletions(-) diff --git a/drivers/can/can_stm32fd.c b/drivers/can/can_stm32fd.c index a29a82d460a..2db8216f48f 100644 --- a/drivers/can/can_stm32fd.c +++ b/drivers/can/can_stm32fd.c @@ -594,36 +594,12 @@ static const struct can_driver_api can_stm32fd_driver_api = { .get_max_bitrate = can_mcan_get_max_bitrate, .get_max_filters = can_mcan_get_max_filters, .set_state_change_callback = can_mcan_set_state_change_callback, - .timing_min = { - .sjw = 0x01, - .prop_seg = 0x00, - .phase_seg1 = 0x01, - .phase_seg2 = 0x01, - .prescaler = 0x01 - }, - .timing_max = { - .sjw = 0x80, - .prop_seg = 0x00, - .phase_seg1 = 0x100, - .phase_seg2 = 0x80, - .prescaler = 0x200 - }, + .timing_min = CAN_MCAN_TIMING_MIN_INITIALIZER, + .timing_max = CAN_MCAN_TIMING_MAX_INITIALIZER, #ifdef CONFIG_CAN_FD_MODE .set_timing_data = can_mcan_set_timing_data, - .timing_data_min = { - .sjw = 0x01, - .prop_seg = 0x00, - .phase_seg1 = 0x01, - .phase_seg2 = 0x01, - .prescaler = 0x01 - }, - .timing_data_max = { - .sjw = 0x10, - .prop_seg = 0x00, - .phase_seg1 = 0x20, - .phase_seg2 = 0x10, - .prescaler = 0x20 - } + .timing_data_min = CAN_MCAN_TIMING_DATA_MIN_INITIALIZER, + .timing_data_max = CAN_MCAN_TIMING_DATA_MAX_INITIALIZER, #endif /* CONFIG_CAN_FD_MODE */ };