aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/tty/serial/samsung.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/drivers/tty/serial/samsung.c b/drivers/tty/serial/samsung.c
index b386fc8a5eec..78d9c55a9f84 100644
--- a/drivers/tty/serial/samsung.c
+++ b/drivers/tty/serial/samsung.c
@@ -1311,9 +1311,29 @@ static int s3c24xx_serial_resume(struct device *dev)
1311 return 0; 1311 return 0;
1312} 1312}
1313 1313
1314static int s3c24xx_serial_resume_noirq(struct device *dev)
1315{
1316 struct uart_port *port = s3c24xx_dev_to_port(dev);
1317
1318 if (port) {
1319 /* restore IRQ mask */
1320 if (s3c24xx_serial_has_interrupt_mask(port)) {
1321 unsigned int uintm = 0xf;
1322 if (tx_enabled(port))
1323 uintm &= ~S3C64XX_UINTM_TXD_MSK;
1324 if (rx_enabled(port))
1325 uintm &= ~S3C64XX_UINTM_RXD_MSK;
1326 wr_regl(port, S3C64XX_UINTM, uintm);
1327 }
1328 }
1329
1330 return 0;
1331}
1332
1314static const struct dev_pm_ops s3c24xx_serial_pm_ops = { 1333static const struct dev_pm_ops s3c24xx_serial_pm_ops = {
1315 .suspend = s3c24xx_serial_suspend, 1334 .suspend = s3c24xx_serial_suspend,
1316 .resume = s3c24xx_serial_resume, 1335 .resume = s3c24xx_serial_resume,
1336 .resume_noirq = s3c24xx_serial_resume_noirq,
1317}; 1337};
1318#define SERIAL_SAMSUNG_PM_OPS (&s3c24xx_serial_pm_ops) 1338#define SERIAL_SAMSUNG_PM_OPS (&s3c24xx_serial_pm_ops)
1319 1339