All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tony Lindgren <tony@atomide.com>
To: Jouni Hogander <jouni.hogander@nokia.com>
Cc: linux-omap@vger.kernel.org
Subject: Re: [PATCH] OMAP: SERIAL: Provide function to enable/disable uart clocks
Date: Fri, 2 May 2008 16:32:42 -0700	[thread overview]
Message-ID: <20080502233242.GE8981@atomide.com> (raw)
In-Reply-To: <1209539325-10443-1-git-send-email-jouni.hogander@nokia.com>

* Jouni Hogander <jouni.hogander@nokia.com> [080430 00:09]:
> This patch adds common function to enable/disable omap2/3 uart
> clocks. Enabled uarts are passed by bootloader in atags and clocks for
> these enabled uarts are touched.

Pushing today.

Tony

> Signed-off-by: Jouni Hogander <jouni.hogander@nokia.com>
> ---
>  arch/arm/mach-omap2/serial.c       |   79 ++++++++++++++---------------------
>  include/asm-arm/arch-omap/common.h |    1 +
>  2 files changed, 33 insertions(+), 47 deletions(-)
> 
> diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c
> index c9697a4..54ab7af 100644
> --- a/arch/arm/mach-omap2/serial.c
> +++ b/arch/arm/mach-omap2/serial.c
> @@ -3,7 +3,7 @@
>   *
>   * OMAP2 serial support.
>   *
> - * Copyright (C) 2005 Nokia Corporation
> + * Copyright (C) 2005-2008 Nokia Corporation
>   * Author: Paul Mundt <paul.mundt@nokia.com>
>   *
>   * Based off of arch/arm/mach-omap/omap1/serial.c
> @@ -23,12 +23,8 @@
>  #include <asm/arch/common.h>
>  #include <asm/arch/board.h>
>  
> -static struct clk * uart1_ick = NULL;
> -static struct clk * uart1_fck = NULL;
> -static struct clk * uart2_ick = NULL;
> -static struct clk * uart2_fck = NULL;
> -static struct clk * uart3_ick = NULL;
> -static struct clk * uart3_fck = NULL;
> +static struct clk *uart_ick[OMAP_MAX_NR_PORTS];
> +static struct clk *uart_fck[OMAP_MAX_NR_PORTS];
>  
>  static struct plat_serial8250_port serial_platform_data[] = {
>  	{
> @@ -87,10 +83,24 @@ static inline void __init omap_serial_reset(struct plat_serial8250_port *p)
>  	serial_write_reg(p, UART_OMAP_SYSC, (0x02 << 3) | (1 << 2) | (1 << 0));
>  }
>  
> +void omap_serial_enable_clocks(int enable)
> +{
> +	int i;
> +	for (i = 0; i < OMAP_MAX_NR_PORTS; i++) {
> +		if (uart_ick[i])
> +			enable ? clk_enable(uart_ick[i]) :
> +				clk_disable(uart_ick[i]);
> +		if (uart_fck[i])
> +			enable ? clk_enable(uart_fck[i]) :
> +				clk_disable(uart_fck[i]);
> +	}
> +}
> +
>  void __init omap_serial_init(void)
>  {
>  	int i;
>  	const struct omap_uart_config *info;
> +	char name[16];
>  
>  	/*
>  	 * Make sure the serial ports are muxed on at this point.
> @@ -112,47 +122,22 @@ void __init omap_serial_init(void)
>  			continue;
>  		}
>  
> -		switch (i) {
> -		case 0:
> -			uart1_ick = clk_get(NULL, "uart1_ick");
> -			if (IS_ERR(uart1_ick))
> -				printk("Could not get uart1_ick\n");
> -			else
> -				clk_enable(uart1_ick);
> -
> -			uart1_fck = clk_get(NULL, "uart1_fck");
> -			if (IS_ERR(uart1_fck))
> -				printk("Could not get uart1_fck\n");
> -			else
> -				clk_enable(uart1_fck);
> -			break;
> -		case 1:
> -			uart2_ick = clk_get(NULL, "uart2_ick");
> -			if (IS_ERR(uart2_ick))
> -				printk("Could not get uart2_ick\n");
> -			else
> -				clk_enable(uart2_ick);
> -
> -			uart2_fck = clk_get(NULL, "uart2_fck");
> -			if (IS_ERR(uart2_fck))
> -				printk("Could not get uart2_fck\n");
> -			else
> -				clk_enable(uart2_fck);
> -			break;
> -		case 2:
> -			uart3_ick = clk_get(NULL, "uart3_ick");
> -			if (IS_ERR(uart3_ick))
> -				printk("Could not get uart3_ick\n");
> -			else
> -				clk_enable(uart3_ick);
> -
> -			uart3_fck = clk_get(NULL, "uart3_fck");
> -			if (IS_ERR(uart3_fck))
> -				printk("Could not get uart3_fck\n");
> -			else
> -				clk_enable(uart3_fck);
> -			break;
> +		sprintf(name, "uart%d_ick", i+1);
> +		uart_ick[i] = clk_get(NULL, name);
> +		if (IS_ERR(uart_ick[i])) {
> +			printk(KERN_ERR "Could not get uart%d_ick\n", i+1);
> +			uart_ick[i] = NULL;
> +		}
> +		else
> +			clk_enable(uart_ick[i]);
> +		sprintf(name, "uart%d_fck", i+1);
> +		uart_fck[i] = clk_get(NULL, name);
> +		if (IS_ERR(uart_fck[i])) {
> +			printk(KERN_ERR "Could not get uart%d_fck\n", i+1);
> +			uart_ick[i] = NULL;
>  		}
> +		else
> +			clk_enable(uart_fck[i]);
>  
>  		omap_serial_reset(p);
>  	}
> diff --git a/include/asm-arm/arch-omap/common.h b/include/asm-arm/arch-omap/common.h
> index 36a3b62..6c072de 100644
> --- a/include/asm-arm/arch-omap/common.h
> +++ b/include/asm-arm/arch-omap/common.h
> @@ -34,6 +34,7 @@ struct sys_timer;
>  extern void omap_map_common_io(void);
>  extern struct sys_timer omap_timer;
>  extern void omap_serial_init(void);
> +extern void omap_serial_enable_clocks(int enable);
>  #ifdef CONFIG_I2C_OMAP
>  extern int omap_register_i2c_bus(int bus_id, u32 clkrate,
>  				 struct i2c_board_info const *info,
> -- 
> 1.5.5
> 

      reply	other threads:[~2008-05-02 23:32 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-04-30  7:08 [PATCH] OMAP: SERIAL: Provide function to enable/disable uart clocks Jouni Hogander
2008-05-02 23:32 ` Tony Lindgren [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20080502233242.GE8981@atomide.com \
    --to=tony@atomide.com \
    --cc=jouni.hogander@nokia.com \
    --cc=linux-omap@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.