From 00f0fb73fd3abc33e488c150bea7c4986f697b59 Mon Sep 17 00:00:00 2001 From: Henrik Brix Andersen Date: Mon, 7 Oct 2019 16:43:07 +0200 Subject: [PATCH] drivers: flexcan: fix loopback mode Fix CAN loopback mode in the NXP MCUX FlexCAN driver by only disabling self-reception when loopback mode was not requested. Signed-off-by: Henrik Brix Andersen --- drivers/can/can_mcux_flexcan.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/can/can_mcux_flexcan.c b/drivers/can/can_mcux_flexcan.c index b7bf0369202..908c6a94e1e 100644 --- a/drivers/can/can_mcux_flexcan.c +++ b/drivers/can/can_mcux_flexcan.c @@ -165,8 +165,10 @@ static int mcux_flexcan_configure(struct device *dev, enum can_mode mode, if (mode == CAN_SILENT_MODE || mode == CAN_SILENT_LOOPBACK_MODE) { config->base->CTRL1 |= CAN_CTRL1_LOM(1); } - /* Disable self reception */ - config->base->MCR |= CAN_MCR_SRXDIS(1); + if (mode != CAN_LOOPBACK_MODE && mode != CAN_SILENT_LOOPBACK_MODE) { + /* Disable self-reception unless loopback is requested */ + config->base->MCR |= CAN_MCR_SRXDIS(1); + } mcux_flexcan_thaw(dev); #endif