On Sat, Feb 12, 2011 at 06:17:03PM +0530, Thomas Abraham wrote:
> The uart ports are used as console and due to console_init, the uart ports
> are initialized prior to the uart driver's probe function is called.
> During this intialization stage, the driver obtains the default port
> register values from the platform data.
> 
> This patch adds support for obtaining the default port register values
> from the device tree. The default values should be specified in the
> 'chosen' node of the device tree.
> 
> Signed-off-by: Thomas Abraham <thomas.abra...@linaro.org>
> ---
>  drivers/tty/serial/samsung.c |   14 ++++++++++++++
>  1 files changed, 14 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/tty/serial/samsung.c b/drivers/tty/serial/samsung.c
> index 2335eda..66fece9 100644
> --- a/drivers/tty/serial/samsung.c
> +++ b/drivers/tty/serial/samsung.c
> @@ -43,6 +43,7 @@
>  #include <linux/delay.h>
>  #include <linux/clk.h>
>  #include <linux/cpufreq.h>
> +#include <linux/of.h>
>  
>  #include <asm/irq.h>
>  
> @@ -1384,11 +1385,24 @@ static int s3c24xx_serial_init_ports(struct 
> s3c24xx_uart_info **info)
>       struct s3c24xx_uart_port *ptr = s3c24xx_serial_ports;
>       struct platform_device **platdev_ptr;
>       int i;
> +     unsigned int *condefs , len;
> +     struct s3c2410_uartcfg *cfg;
>  
>       dbg("s3c24xx_serial_init_ports: initialising ports...\n");
>  
>       platdev_ptr = s3c24xx_uart_devs;
> +     condefs = (u32 *)of_get_property(of_chosen, "console-defaults", &len);

of_get_property returns (const void *) for a reason.  Make condefs a
'const u32 *' instead of overriding the compiler warning.

Pulling the uart configuration out of a console-defaults property in
the chosen node is not the way to do this.  Each uart device should
have its own node in the device tree, and the per-port configuration
belongs there.

g.

> +     if (condefs && (len / sizeof(unsigned int)) == 3) {
> +             for (i = 0; i < CONFIG_SERIAL_SAMSUNG_UARTS; i++) {
> +                     cfg = s3c24xx_dev_to_cfg(&(*platdev_ptr)->dev);
> +                     cfg->ucon = be32_to_cpu(condefs[0]);
> +                     cfg->ulcon = be32_to_cpu(condefs[1]);
> +                     cfg->ufcon = be32_to_cpu(condefs[2]);
> +                     platdev_ptr++;
> +             }
> +     }
>  
> +     platdev_ptr = s3c24xx_uart_devs;
>       for (i = 0; i < CONFIG_SERIAL_SAMSUNG_UARTS; i++, ptr++, platdev_ptr++) 
> {
>               s3c24xx_serial_init_port(ptr, info[i], *platdev_ptr);
>       }
> -- 
> 1.6.6.rc2
> 

_______________________________________________
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev

Reply via email to