diff --git a/arch/arm64/src/imx9/imx9_flexcan.c b/arch/arm64/src/imx9/imx9_flexcan.c index 34e05b6de75..f2cc0e45d1e 100644 --- a/arch/arm64/src/imx9/imx9_flexcan.c +++ b/arch/arm64/src/imx9/imx9_flexcan.c @@ -1911,6 +1911,14 @@ static int imx9_initialize(struct imx9_driver_s *priv) static void imx9_reset(struct imx9_driver_s *priv) { + /* Make sure module is enabled */ + + if (!imx9_setenable(priv->base, true)) + { + canerr("Enable fail\n"); + return; + } + modifyreg32(priv->base + IMX9_CAN_MCR_OFFSET, 0, CAN_MCR_SOFTRST); if (!imx9_waitmcr_change(priv->base, CAN_MCR_SOFTRST, false)) @@ -1919,7 +1927,7 @@ static void imx9_reset(struct imx9_driver_s *priv) return; } - /* Enable module */ + /* Disable module */ if (!imx9_setenable(priv->base, false)) { @@ -2051,6 +2059,10 @@ int imx9_caninitialize(int intf) return -EAGAIN; } + /* Disable */ + + imx9_setenable(priv->base, false); + /* Initialize the driver structure */ priv->dev.d_ifup = imx9_ifup; /* I/F up (new IP address) callback */