Skip to content

Commit 633065e

Browse files
henrikbrixandersencarlescufi
authored andcommitted
drivers: can: mcux: flexcan: calculate and set proper TDCO
Calculate and set a proper Transceiver Delay Compensation Offset (TDCO) based on FlexCAN FD timing. Signed-off-by: Henrik Brix Andersen <[email protected]>
1 parent 7b207e3 commit 633065e

File tree

1 file changed

+6
-0
lines changed

1 file changed

+6
-0
lines changed

drivers/can/can_mcux_flexcan.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -305,6 +305,12 @@ static int mcux_flexcan_start(const struct device *dev)
305305
timing.fphaseSeg2 = data->timing_data.phase_seg2 - 1U;
306306
timing.fpropSeg = data->timing_data.prop_seg;
307307
FLEXCAN_SetFDTimingConfig(config->base, &timing);
308+
309+
FLEXCAN_EnterFreezeMode(config->base);
310+
config->base->FDCTRL &= ~(CAN_FDCTRL_TDCOFF_MASK);
311+
config->base->FDCTRL |= FIELD_PREP(CAN_FDCTRL_TDCOFF_MASK,
312+
CAN_CALC_TDCO((&data->timing_data), 1U, 31U));
313+
FLEXCAN_ExitFreezeMode(config->base);
308314
}
309315
#endif /* CONFIG_CAN_MCUX_FLEXCAN_FD */
310316

0 commit comments

Comments
 (0)