|
@@ -1311,9 +1311,29 @@ static int s3c24xx_serial_resume(struct device *dev)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+static int s3c24xx_serial_resume_noirq(struct device *dev)
|
|
|
+{
|
|
|
+ struct uart_port *port = s3c24xx_dev_to_port(dev);
|
|
|
+
|
|
|
+ if (port) {
|
|
|
+ /* restore IRQ mask */
|
|
|
+ if (s3c24xx_serial_has_interrupt_mask(port)) {
|
|
|
+ unsigned int uintm = 0xf;
|
|
|
+ if (tx_enabled(port))
|
|
|
+ uintm &= ~S3C64XX_UINTM_TXD_MSK;
|
|
|
+ if (rx_enabled(port))
|
|
|
+ uintm &= ~S3C64XX_UINTM_RXD_MSK;
|
|
|
+ wr_regl(port, S3C64XX_UINTM, uintm);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
static const struct dev_pm_ops s3c24xx_serial_pm_ops = {
|
|
|
.suspend = s3c24xx_serial_suspend,
|
|
|
.resume = s3c24xx_serial_resume,
|
|
|
+ .resume_noirq = s3c24xx_serial_resume_noirq,
|
|
|
};
|
|
|
#define SERIAL_SAMSUNG_PM_OPS (&s3c24xx_serial_pm_ops)
|
|
|
|