[PATCH v3 2/2] can: m_can: set out-of-band wakeup if wakeup pinctrl exists
Kendall Willis <[email protected]>
| Newsgroups | org.kernel.vger.linux-devicetree,org.kernel.vger.linux-can,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
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 the out-of-band wakeup flag if the CAN device may wakeup, has the "out-band-wakeup" property in the device tree node, and has the "wakeup" pinctrl state. Signed-off-by: Kendall Willis <[email protected]> --- drivers/net/can/m_can/m_can.c | 6 +++++- 1 file changed, 5 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..e745660fb3eb311de70635fcfc016a44e62d5602 100644 --- a/drivers/net/can/m_can/m_can.c +++ b/drivers/net/can/m_can/m_can.c @@ -2622,8 +2622,12 @@ 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)) { + if (device_property_read_bool(dev, "out-band-wakeup")) + device_set_out_band_wakeup(dev); + } else { pinctrl_pm_select_sleep_state(dev); + } return ret; } -- 2.34.1