diff options
Diffstat (limited to 'drivers/serial/sh-sci.c')
-rw-r--r-- | drivers/serial/sh-sci.c | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/drivers/serial/sh-sci.c b/drivers/serial/sh-sci.c index 4b17f845f5cd..94deebda6da0 100644 --- a/drivers/serial/sh-sci.c +++ b/drivers/serial/sh-sci.c | |||
@@ -62,7 +62,7 @@ struct sci_port { | |||
62 | unsigned int type; | 62 | unsigned int type; |
63 | 63 | ||
64 | /* Port IRQs: ERI, RXI, TXI, BRI (optional) */ | 64 | /* Port IRQs: ERI, RXI, TXI, BRI (optional) */ |
65 | unsigned int irqs[SCIx_NR_IRQS]; | 65 | unsigned int irqs[SCIx_NR_IRQS]; |
66 | 66 | ||
67 | /* Port pin configuration */ | 67 | /* Port pin configuration */ |
68 | void (*init_pins)(struct uart_port *port, | 68 | void (*init_pins)(struct uart_port *port, |
@@ -351,7 +351,7 @@ static void sci_init_pins_scif(struct uart_port *port, unsigned int cflag) | |||
351 | } else { | 351 | } else { |
352 | #ifdef CONFIG_CPU_SUBTYPE_SH7343 | 352 | #ifdef CONFIG_CPU_SUBTYPE_SH7343 |
353 | /* Nothing */ | 353 | /* Nothing */ |
354 | #elif defined(CONFIG_CPU_SUBTYPE_SH7780) | 354 | #elif defined(CONFIG_CPU_SUBTYPE_SH7780) || defined(CONFIG_CPU_SUBTYPE_SH7785) |
355 | ctrl_outw(0x0080, SCSPTR0); /* Set RTS = 1 */ | 355 | ctrl_outw(0x0080, SCSPTR0); /* Set RTS = 1 */ |
356 | #else | 356 | #else |
357 | ctrl_outw(0x0080, SCSPTR2); /* Set RTS = 1 */ | 357 | ctrl_outw(0x0080, SCSPTR2); /* Set RTS = 1 */ |
@@ -361,7 +361,9 @@ static void sci_init_pins_scif(struct uart_port *port, unsigned int cflag) | |||
361 | } | 361 | } |
362 | #endif | 362 | #endif |
363 | 363 | ||
364 | #if defined(CONFIG_CPU_SUBTYPE_SH7760) || defined(CONFIG_CPU_SUBTYPE_SH7780) | 364 | #if defined(CONFIG_CPU_SUBTYPE_SH7760) || \ |
365 | defined(CONFIG_CPU_SUBTYPE_SH7780) || \ | ||
366 | defined(CONFIG_CPU_SUBTYPE_SH7785) | ||
365 | static inline int scif_txroom(struct uart_port *port) | 367 | static inline int scif_txroom(struct uart_port *port) |
366 | { | 368 | { |
367 | return SCIF_TXROOM_MAX - (sci_in(port, SCTFDR) & 0x7f); | 369 | return SCIF_TXROOM_MAX - (sci_in(port, SCTFDR) & 0x7f); |
@@ -1368,9 +1370,19 @@ static int __devinit sci_probe(struct platform_device *dev) | |||
1368 | struct plat_sci_port *p = dev->dev.platform_data; | 1370 | struct plat_sci_port *p = dev->dev.platform_data; |
1369 | int i; | 1371 | int i; |
1370 | 1372 | ||
1371 | for (i = 0; p && p->flags != 0 && i < SCI_NPORTS; p++, i++) { | 1373 | for (i = 0; p && p->flags != 0; p++, i++) { |
1372 | struct sci_port *sciport = &sci_ports[i]; | 1374 | struct sci_port *sciport = &sci_ports[i]; |
1373 | 1375 | ||
1376 | /* Sanity check */ | ||
1377 | if (unlikely(i == SCI_NPORTS)) { | ||
1378 | dev_notice(&dev->dev, "Attempting to register port " | ||
1379 | "%d when only %d are available.\n", | ||
1380 | i+1, SCI_NPORTS); | ||
1381 | dev_notice(&dev->dev, "Consider bumping " | ||
1382 | "CONFIG_SERIAL_SH_SCI_NR_UARTS!\n"); | ||
1383 | break; | ||
1384 | } | ||
1385 | |||
1374 | sciport->port.mapbase = p->mapbase; | 1386 | sciport->port.mapbase = p->mapbase; |
1375 | 1387 | ||
1376 | /* | 1388 | /* |