linux-mips
[Top] [All Lists]

Re: [RFC PATCH 2/2] Alchemy: UART PM through serial framework.

To: Manuel Lauss <manuel.lauss@googlemail.com>
Subject: Re: [RFC PATCH 2/2] Alchemy: UART PM through serial framework.
From: Sergei Shtylyov <sshtylyov@mvista.com>
Date: Wed, 24 Mar 2010 20:40:17 +0300
Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mips@linux-mips.org, Manuel Lauss <manuel.lauss@gmail.com>
In-reply-to: <1269450986-3714-3-git-send-email-manuel.lauss@gmail.com>
Original-recipient: rfc822;linux-mips@linux-mips.org
References: <1269450986-3714-1-git-send-email-manuel.lauss@gmail.com> <1269450986-3714-3-git-send-email-manuel.lauss@gmail.com>
Sender: linux-mips-bounce@linux-mips.org
User-agent: Thunderbird 2.0.0.21 (X11/20090320)
Hello.

Manuel Lauss wrote:

Hook up the Alchemy on-chip uarts with the platform 8250 PM callback
and enable/disable the uart blocks as needed.

Tested on Au1200.

Signed-off-by: Manuel Lauss <manuel.lauss@gmail.com>
---
 arch/mips/alchemy/common/platform.c |   17 +++++++++++++++++
 arch/mips/alchemy/common/power.c    |   32 --------------------------------
 2 files changed, 17 insertions(+), 32 deletions(-)

diff --git a/arch/mips/alchemy/common/platform.c 
b/arch/mips/alchemy/common/platform.c
index 2580e77..70f4abd 100644
--- a/arch/mips/alchemy/common/platform.c
+++ b/arch/mips/alchemy/common/platform.c
@@ -21,6 +21,22 @@
 #include <asm/mach-au1x00/au1100_mmc.h>
 #include <asm/mach-au1x00/au1xxx_eth.h>
+static void alchemy_8250_pm(struct uart_port *port, unsigned int state,
+                           unsigned int old_state)
+{
+       if (state == 0) {               /* power on */
+               __raw_writel(0, port->membase + UART_MOD_CNTRL);
+               wmb();
+               __raw_writel(1, port->membase + UART_MOD_CNTRL);
+               wmb();
+               __raw_writel(3, port->membase + UART_MOD_CNTRL);
+               wmb();
+       } else if (state == 3) {        /* power off */
+               __raw_writel(0, port->membase + UART_MOD_CNTRL);
+               wmb();
+       }
+}

  A *switch* statement seems more fitting here...

WBR, Sergei


<Prev in Thread] Current Thread [Next in Thread>