From 6b13900618235c83622a6cf2527402cbd8f63b2d Mon Sep 17 00:00:00 2001 From: Henrik Brix Andersen Date: Tue, 30 May 2023 15:18:49 +0200 Subject: [PATCH] drivers: can: mcan: add static initializer macros for timing parameters Add static initializers for the Bosch M_CAN minimum/maximum CAN timing parameter values. Signed-off-by: Henrik Brix Andersen --- drivers/can/can_mcan.h | 48 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/drivers/can/can_mcan.h b/drivers/can/can_mcan.h index 79c39c59908..3ce78e107f8 100644 --- a/drivers/can/can_mcan.h +++ b/drivers/can/can_mcan.h @@ -814,6 +814,54 @@ */ #define CAN_MCAN_DT_INST_MRAM_DEFINE(inst, _name) CAN_MCAN_DT_MRAM_DEFINE(DT_DRV_INST(inst), _name) +/** + * @brief Bosch M_CAN specific static initializer for a minimum nominal @p can_timing struct + */ +#define CAN_MCAN_TIMING_MIN_INITIALIZER \ + { \ + .sjw = 1, \ + .prop_seg = 0, \ + .phase_seg1 = 2, \ + .phase_seg2 = 2, \ + .prescaler = 1 \ + } + +/** + * @brief Bosch M_CAN specific static initializer for a maximum nominal @p can_timing struct + */ +#define CAN_MCAN_TIMING_MAX_INITIALIZER \ + { \ + .sjw = 128, \ + .prop_seg = 0, \ + .phase_seg1 = 256, \ + .phase_seg2 = 128, \ + .prescaler = 512 \ + } + +/** + * @brief Bosch M_CAN specific static initializer for a minimum data phase @p can_timing struct + */ +#define CAN_MCAN_TIMING_DATA_MIN_INITIALIZER \ + { \ + .sjw = 1, \ + .prop_seg = 0, \ + .phase_seg1 = 1, \ + .phase_seg2 = 1, \ + .prescaler = 1 \ + } + +/** + * @brief Bosch M_CAN specific static initializer for a maximum data phase @p can_timing struct + */ +#define CAN_MCAN_TIMING_DATA_MAX_INITIALIZER \ + { \ + .sjw = 16, \ + .prop_seg = 0, \ + .phase_seg1 = 32, \ + .phase_seg2 = 16, \ + .prescaler = 32 \ + } + /** * @brief Equivalent to CAN_MCAN_DT_BUILD_ASSERT_MRAM_CFG(DT_DRV_INST(inst)) * @param inst DT_DRV_COMPAT instance number