diff options
-rw-r--r-- | drivers/tty/serial/samsung.c | 20 |
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 | ||
1314 | static 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 | |||
1314 | static const struct dev_pm_ops s3c24xx_serial_pm_ops = { | 1333 | static 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 | ||