On systems like stm32mp1 where pins have both "default" and "sleep" pinmux states in DT, the pins are in "sleep" state by default. Switch the pins into the "default" state when bringing the interface up in m_can_start(), because otherwise no CAN communication is possible. This replicates the behavior of the resume path, which does the same. Signed-off-by: Marek Vasut <marex@xxxxxxx> Cc: Alexandre Torgue <alexandre.torgue@xxxxxx> Cc: Marc Kleine-Budde <mkl@xxxxxxxxxxxxxx> Cc: Wolfgang Grandegger <wg@xxxxxxxxxxxxxx> To: linux-can@xxxxxxxxxxxxxxx --- drivers/net/can/m_can/m_can.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/net/can/m_can/m_can.c b/drivers/net/can/m_can/m_can.c index 02c5795b7393..76fadf2b8ac2 100644 --- a/drivers/net/can/m_can/m_can.c +++ b/drivers/net/can/m_can/m_can.c @@ -1247,6 +1247,8 @@ static void m_can_start(struct net_device *dev) /* basic m_can configuration */ m_can_chip_config(dev); + pinctrl_pm_select_default_state(cdev->dev); + cdev->can.state = CAN_STATE_ERROR_ACTIVE; m_can_enable_all_interrupts(cdev); -- 2.25.1