> @@ -572,15 +576,36 @@ static int mtk8250_remove(struct platform_device *pdev) > static int __maybe_unused mtk8250_suspend(struct device *dev) > { > struct mtk8250_data *data = dev_get_drvdata(dev); > + struct uart_8250_port *up = serial8250_get_port(data->line); Sorry. This line doesn't belong to this patch. I'll send a v3. > + int irq = data->rx_wakeup_irq; > + int err; > > serial8250_suspend_port(data->line); > > + pinctrl_pm_select_sleep_state(dev); > + if (irq >= 0) { > + err = enable_irq_wake(irq); > + if (err) { > + dev_err(dev, > + "failed to enable irq wake on IRQ %d: %d\n", > + irq, err); > + pinctrl_pm_select_default_state(dev); > + serial8250_resume_port(data->line); > + return err; > + } > + } > + > return 0; > }