drivers: serial: stm32: add reinit after standby

When resuming from low power mode, if UART is disabled, this means that
we come from a mode that reset the registers, so we redo a full init of
the driver.

Signed-off-by: Guillaume Gautier <guillaume.gautier-ext@st.com>
diff --git a/drivers/serial/uart_stm32.c b/drivers/serial/uart_stm32.c
index cba80aa..107dd88 100644
--- a/drivers/serial/uart_stm32.c
+++ b/drivers/serial/uart_stm32.c
@@ -2081,17 +2081,26 @@
 
 	switch (action) {
 	case PM_DEVICE_ACTION_RESUME:
-		/* Set pins to active state */
-		err = pinctrl_apply_state(config->pcfg, PINCTRL_STATE_DEFAULT);
-		if (err < 0) {
-			return err;
-		}
+		/* When exiting low power mode, check whether UART is enabled.
+		 * If not, it means we are exiting Suspend to RAM mode (STM32
+		 * Standby), and the driver need to be reinitialized
+		 */
+		if (LL_USART_IsEnabled(config->usart)) {
+			/* Set pins to active state */
+			err = pinctrl_apply_state(config->pcfg, PINCTRL_STATE_DEFAULT);
+			if (err < 0) {
+				return err;
+			}
 
-		/* enable clock */
-		err = clock_control_on(data->clock, (clock_control_subsys_t)&config->pclken[0]);
-		if (err != 0) {
-			LOG_ERR("Could not enable (LP)UART clock");
-			return err;
+			/* enable clock */
+			err = clock_control_on(data->clock,
+					       (clock_control_subsys_t)&config->pclken[0]);
+			if (err != 0) {
+				LOG_ERR("Could not enable (LP)UART clock");
+				return err;
+			}
+		} else {
+			uart_stm32_init(dev);
 		}
 		break;
 	case PM_DEVICE_ACTION_SUSPEND: