[PATCH] can: m_can: set out-of-band wakeup if wakeup pinctrl exists

From: Kendall Willis

Date: Fri Feb 13 2026 - 13:08:40 EST


In TI AM62X, AM62A, and AM62P SoCs, the m_can pins can act as a wakeup
source in the deepest low power states. However, the m_can pins are a part
of the MCU domain which is OFF in deeper low power states. Since the m_can
pins continue to be ON even if the MCU domain is turned off, set
out-of-band wakeup for CAN device if `wakeup` pinctrl state exists and
device may wakeup.

Signed-off-by: Kendall Willis <k-willis@xxxxxx>
---
Tested on CAN IO wakeup from DeepSleep low power mode on AM62P EVM.
---
drivers/net/can/m_can/m_can.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/net/can/m_can/m_can.c b/drivers/net/can/m_can/m_can.c
index eb856547ae7df27a844b236a0c1d4498cbb8b60f..8b277f5e208ffa634439b9ea8495ed56f12cfccb 100644
--- a/drivers/net/can/m_can/m_can.c
+++ b/drivers/net/can/m_can/m_can.c
@@ -2622,7 +2622,9 @@ int m_can_class_suspend(struct device *dev)
cdev->can.state = CAN_STATE_SLEEPING;
}

- if (!m_can_class_wakeup_pinctrl_enabled(cdev))
+ if (m_can_class_wakeup_pinctrl_enabled(cdev))
+ device_set_out_band_wakeup(dev);
+ else
pinctrl_pm_select_sleep_state(dev);

return ret;

---
base-commit: af98e93c5c39e6d0b87b42f0a32dd3066f795718
change-id: 20260213-mcan-out-of-band-bae2065f0bf5

Best regards,
--
Kendall Willis <k-willis@xxxxxx>