diff options
Diffstat (limited to 'drivers/tty/serial/arc_uart.c')
-rw-r--r-- | drivers/tty/serial/arc_uart.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/tty/serial/arc_uart.c b/drivers/tty/serial/arc_uart.c index 9de26ba48d2..2db64105677 100644 --- a/drivers/tty/serial/arc_uart.c +++ b/drivers/tty/serial/arc_uart.c @@ -533,7 +533,12 @@ arc_uart_init_one(struct platform_device *pdev, int dev_id) struct arc_uart_port *uart = &arc_uart_ports[dev_id]; plat_data = ((unsigned long *)(pdev->dev.platform_data)); - uart->baud = plat_data[0]; + if (!plat_data) + return -ENODEV; + + uart->is_emulated = !!plat_data[0]; /* workaround ISS bug */ + uart->port.uartclk = plat_data[1]; + uart->baud = plat_data[2]; res = platform_get_resource(pdev, IORESOURCE_MEM, 0); if (!res) @@ -556,7 +561,6 @@ arc_uart_init_one(struct platform_device *pdev, int dev_id) uart->port.line = dev_id; uart->port.ops = &arc_serial_pops; - uart->port.uartclk = plat_data[1]; uart->port.fifosize = ARC_UART_TX_FIFO_SIZE; /* @@ -565,9 +569,6 @@ arc_uart_init_one(struct platform_device *pdev, int dev_id) */ uart->port.ignore_status_mask = 0; - /* Real Hardware vs. emulated to work around a bug */ - uart->is_emulated = !!plat_data[2]; - return 0; } |