diff options
| author | Anton Vorontsov <anton@enomsg.org> | 2013-03-24 20:06:35 -0700 |
|---|---|---|
| committer | Anton Vorontsov <anton@enomsg.org> | 2013-03-24 20:06:35 -0700 |
| commit | 6e997bb894beef128fcfe1679e0830f97dee6dc2 (patch) | |
| tree | 078d95af4d30b5e3d5b1db18de215489b26e01ce /drivers/tty | |
| parent | c6cc9fc9d42ec82da2c770f0bef1488dc467f29c (diff) | |
| parent | 92413a9bee1299cedcc0e5cfbfbc6b42496fb817 (diff) | |
Merge branch 'urgent'
Conflicts:
drivers/power/pm2301_charger.c
Diffstat (limited to 'drivers/tty')
| -rw-r--r-- | drivers/tty/serial/sunsu.c | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/drivers/tty/serial/sunsu.c b/drivers/tty/serial/sunsu.c index e343d6670854..451687cb9685 100644 --- a/drivers/tty/serial/sunsu.c +++ b/drivers/tty/serial/sunsu.c @@ -968,6 +968,7 @@ static struct uart_ops sunsu_pops = { #define UART_NR 4 static struct uart_sunsu_port sunsu_ports[UART_NR]; +static int nr_inst; /* Number of already registered ports */ #ifdef CONFIG_SERIO @@ -1337,13 +1338,8 @@ static int __init sunsu_console_setup(struct console *co, char *options) printk("Console: ttyS%d (SU)\n", (sunsu_reg.minor - 64) + co->index); - /* - * Check whether an invalid uart number has been specified, and - * if so, search for the first available port that does have - * console support. - */ - if (co->index >= UART_NR) - co->index = 0; + if (co->index > nr_inst) + return -ENODEV; port = &sunsu_ports[co->index].port; /* @@ -1408,7 +1404,6 @@ static enum su_type su_get_type(struct device_node *dp) static int su_probe(struct platform_device *op) { - static int inst; struct device_node *dp = op->dev.of_node; struct uart_sunsu_port *up; struct resource *rp; @@ -1418,16 +1413,16 @@ static int su_probe(struct platform_device *op) type = su_get_type(dp); if (type == SU_PORT_PORT) { - if (inst >= UART_NR) + if (nr_inst >= UART_NR) return -EINVAL; - up = &sunsu_ports[inst]; + up = &sunsu_ports[nr_inst]; } else { up = kzalloc(sizeof(*up), GFP_KERNEL); if (!up) return -ENOMEM; } - up->port.line = inst; + up->port.line = nr_inst; spin_lock_init(&up->port.lock); @@ -1461,6 +1456,8 @@ static int su_probe(struct platform_device *op) } dev_set_drvdata(&op->dev, up); + nr_inst++; + return 0; } @@ -1488,7 +1485,7 @@ static int su_probe(struct platform_device *op) dev_set_drvdata(&op->dev, up); - inst++; + nr_inst++; return 0; |
