aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/tty
diff options
context:
space:
mode:
authorEzekeel <notezekeel@googlemail.com>2011-12-18 07:09:00 +0100
committerEzekeel <notezekeel@googlemail.com>2011-12-18 07:09:00 +0100
commitd948ec4839368c01b6ba401e942abb42d040c8f7 (patch)
treeeb107008d96ef1c8ce752d7d9ba41dee7727d0e6 /drivers/tty
parent969f111be540ade5c88357a20565052cccbac2d6 (diff)
downloadkernel_samsung_crespo-d948ec4839368c01b6ba401e942abb42d040c8f7.zip
kernel_samsung_crespo-d948ec4839368c01b6ba401e942abb42d040c8f7.tar.gz
kernel_samsung_crespo-d948ec4839368c01b6ba401e942abb42d040c8f7.tar.bz2
Add power saving state DEEP IDLE version 2.
Diffstat (limited to 'drivers/tty')
-rw-r--r--drivers/tty/serial/samsung.c22
1 files changed, 20 insertions, 2 deletions
diff --git a/drivers/tty/serial/samsung.c b/drivers/tty/serial/samsung.c
index 0026196..c7de749 100644
--- a/drivers/tty/serial/samsung.c
+++ b/drivers/tty/serial/samsung.c
@@ -448,6 +448,16 @@ static int s3c24xx_serial_startup(struct uart_port *port)
/* power power management control */
+#ifdef CONFIG_CPU_DIDLE
+static bool gps_running = false;
+
+bool gps_is_running(void)
+{
+ return gps_running;
+}
+EXPORT_SYMBOL(gps_is_running);
+#endif
+
static void s3c24xx_serial_pm(struct uart_port *port, unsigned int level,
unsigned int old)
{
@@ -462,13 +472,21 @@ static void s3c24xx_serial_pm(struct uart_port *port, unsigned int level,
if (!IS_ERR(ourport->baudclk) && ourport->baudclk != NULL)
clk_disable(ourport->baudclk);
-
+#ifdef CONFIG_CPU_DIDLE
+ if (ourport->port.irq == IRQ_S3CUART_RX1)
+ gps_running = false;
+#endif
clk_disable(ourport->clk);
+
break;
case 0:
- clk_enable(ourport->clk);
+ clk_enable(ourport->clk);
+#ifdef CONFIG_CPU_DIDLE
+ if (ourport->port.irq == IRQ_S3CUART_RX1)
+ gps_running = true;
+#endif
if (!IS_ERR(ourport->baudclk) && ourport->baudclk != NULL)
clk_enable(ourport->baudclk);