From 47119333e160300ad2538b163335568f03d432dd Mon Sep 17 00:00:00 2001 From: Henrik Brix Andersen Date: Fri, 1 Apr 2022 18:13:31 +0200 Subject: [PATCH] drivers: can: mcan: allow sjw == CAN_SJW_NO_CHANGE Take CAN_SJW_NO_CHANGE into account when bounds checking the sjw timing parameter values. Fixes: #44482 Signed-off-by: Henrik Brix Andersen --- drivers/can/can_mcan.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/can/can_mcan.c b/drivers/can/can_mcan.c index 222f0446239..28de3bfc77f 100644 --- a/drivers/can/can_mcan.c +++ b/drivers/can/can_mcan.c @@ -133,7 +133,8 @@ void can_mcan_configure_timing(struct can_mcan_reg *can, timing->phase_seg2 > 0); __ASSERT_NO_MSG(timing->prescaler <= 0x200 && timing->prescaler > 0); - __ASSERT_NO_MSG(timing->sjw <= 0x80 && timing->sjw > 0); + __ASSERT_NO_MSG(timing->sjw == CAN_SJW_NO_CHANGE || + (timing->sjw <= 0x80 && timing->sjw > 0)); can->nbtp = (((uint32_t)timing->phase_seg1 - 1UL) & 0xFF) << CAN_MCAN_NBTP_NTSEG1_POS | @@ -161,8 +162,8 @@ void can_mcan_configure_timing(struct can_mcan_reg *can, timing_data->phase_seg2 > 0); __ASSERT_NO_MSG(timing_data->prescaler <= 20 && timing_data->prescaler > 0); - __ASSERT_NO_MSG(timing_data->sjw <= 0x80 && - timing_data->sjw > 0); + __ASSERT_NO_MSG(timing_data->sjw == CAN_SJW_NO_CHANGE || + (timing_data->sjw <= 0x80 && timing_data->sjw > 0)); can->dbtp = (((uint32_t)timing_data->phase_seg1 - 1UL) & 0x1F) << CAN_MCAN_DBTP_DTSEG1_POS |