summaryrefslogtreecommitdiff
path: root/drivers/serial/samsung.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/serial/samsung.c')
-rw-r--r--drivers/serial/samsung.c25
1 files changed, 23 insertions, 2 deletions
diff --git a/drivers/serial/samsung.c b/drivers/serial/samsung.c
index 1e219d3d0352..ea30bc6d84e3 100644
--- a/drivers/serial/samsung.c
+++ b/drivers/serial/samsung.c
@@ -63,8 +63,12 @@
#ifdef CONFIG_CPU_S3C2400
#define NR_PORTS (2)
#else
+#if defined(CONFIG_MACH_CC9M2443JS) || defined(CONFIG_MACH_CCW9M2443JS)
+#define NR_PORTS (4)
+#else
#define NR_PORTS (3)
#endif
+#endif
/* port irq numbers */
@@ -827,7 +831,7 @@ static struct uart_ops s3c24xx_serial_ops = {
static struct uart_driver s3c24xx_uart_drv = {
.owner = THIS_MODULE,
.dev_name = "s3c2410_serial",
- .nr = 3,
+ .nr = NR_PORTS,
.cons = S3C24XX_SERIAL_CONSOLE,
.driver_name = S3C24XX_SERIAL_NAME,
.major = S3C24XX_SERIAL_MAJOR,
@@ -872,7 +876,20 @@ static struct s3c24xx_uart_port s3c24xx_serial_ports[NR_PORTS] = {
.flags = UPF_BOOT_AUTOCONF,
.line = 2,
}
- }
+ },
+ [3] = {
+ .port = {
+ .lock = __SPIN_LOCK_UNLOCKED(s3c24xx_serial_ports[3].port.lock),
+ .iotype = UPIO_MEM,
+ .irq = IRQ_S3C2443_RX3,
+ .uartclk = 0,
+ .fifosize = 16,
+ .ops = &s3c24xx_serial_ops,
+ .flags = UPF_BOOT_AUTOCONF,
+ .line = 3,
+ }
+ }
+
#endif
};
@@ -945,6 +962,10 @@ static int s3c24xx_serial_init_port(struct s3c24xx_uart_port *ourport,
port->mapbase = res->start;
port->membase = S3C24XX_VA_UART + (res->start - S3C24XX_PA_UART);
+
+ /* Use the number of the HW port as line number (Luis Galdos) */
+ port->line = cfg->hwport;
+
ret = platform_get_irq(platdev, 0);
if (ret < 0)
port->irq = 0;