Commit 51fe5222 authored by Thomas Abraham's avatar Thomas Abraham Committed by Ben Dooks

ARM: SAMSUNG: serial: Modify console initialization.

This patch modifies s3c24xx_serial_initconsole function to accept multiple
platform UART information structures. This is required on platforms that have
differences among the instances of UART ports. As an example, the FIFO sizes
could be different for each UART instance and hence multiple platform UART
information structures would be needed.

This patch also modifies the s3c24xx_console_init macro since it wraps the
call to the s3c24xx_serial_initconsole function.
Signed-off-by: default avatarThomas Abraham <thomas.ab@samsung.com>
Signed-off-by: default avatarBen Dooks <ben-linux@fluff.org>
parent bb9b1c77
...@@ -1374,7 +1374,7 @@ s3c24xx_serial_get_options(struct uart_port *port, int *baud, ...@@ -1374,7 +1374,7 @@ s3c24xx_serial_get_options(struct uart_port *port, int *baud,
* data. * data.
*/ */
static int s3c24xx_serial_init_ports(struct s3c24xx_uart_info *info) static int s3c24xx_serial_init_ports(struct s3c24xx_uart_info **info)
{ {
struct s3c24xx_uart_port *ptr = s3c24xx_serial_ports; struct s3c24xx_uart_port *ptr = s3c24xx_serial_ports;
struct platform_device **platdev_ptr; struct platform_device **platdev_ptr;
...@@ -1385,7 +1385,7 @@ static int s3c24xx_serial_init_ports(struct s3c24xx_uart_info *info) ...@@ -1385,7 +1385,7 @@ static int s3c24xx_serial_init_ports(struct s3c24xx_uart_info *info)
platdev_ptr = s3c24xx_uart_devs; platdev_ptr = s3c24xx_uart_devs;
for (i = 0; i < CONFIG_SERIAL_SAMSUNG_UARTS; i++, ptr++, platdev_ptr++) { for (i = 0; i < CONFIG_SERIAL_SAMSUNG_UARTS; i++, ptr++, platdev_ptr++) {
s3c24xx_serial_init_port(ptr, info, *platdev_ptr); s3c24xx_serial_init_port(ptr, info[i], *platdev_ptr);
} }
return 0; return 0;
...@@ -1451,7 +1451,7 @@ static struct console s3c24xx_serial_console = { ...@@ -1451,7 +1451,7 @@ static struct console s3c24xx_serial_console = {
}; };
int s3c24xx_serial_initconsole(struct platform_driver *drv, int s3c24xx_serial_initconsole(struct platform_driver *drv,
struct s3c24xx_uart_info *info) struct s3c24xx_uart_info **info)
{ {
struct platform_device *dev = s3c24xx_uart_devs[0]; struct platform_device *dev = s3c24xx_uart_devs[0];
......
...@@ -75,19 +75,24 @@ extern int s3c24xx_serial_probe(struct platform_device *dev, ...@@ -75,19 +75,24 @@ extern int s3c24xx_serial_probe(struct platform_device *dev,
extern int __devexit s3c24xx_serial_remove(struct platform_device *dev); extern int __devexit s3c24xx_serial_remove(struct platform_device *dev);
extern int s3c24xx_serial_initconsole(struct platform_driver *drv, extern int s3c24xx_serial_initconsole(struct platform_driver *drv,
struct s3c24xx_uart_info *uart); struct s3c24xx_uart_info **uart);
extern int s3c24xx_serial_init(struct platform_driver *drv, extern int s3c24xx_serial_init(struct platform_driver *drv,
struct s3c24xx_uart_info *info); struct s3c24xx_uart_info *info);
#ifdef CONFIG_SERIAL_SAMSUNG_CONSOLE #ifdef CONFIG_SERIAL_SAMSUNG_CONSOLE
#define s3c24xx_console_init(__drv, __inf) \ #define s3c24xx_console_init(__drv, __inf) \
static int __init s3c_serial_console_init(void) \ static int __init s3c_serial_console_init(void) \
{ \ { \
return s3c24xx_serial_initconsole(__drv, __inf); \ struct s3c24xx_uart_info *uinfo[CONFIG_SERIAL_SAMSUNG_UARTS]; \
} \ int i; \
\ \
for (i = 0; i < CONFIG_SERIAL_SAMSUNG_UARTS; i++) \
uinfo[i] = __inf; \
return s3c24xx_serial_initconsole(__drv, uinfo); \
} \
\
console_initcall(s3c_serial_console_init) console_initcall(s3c_serial_console_init)
#else #else
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment