diff options
author | Masahiro Yamada <yamada.masahiro@socionext.com> | 2015-10-19 00:37:55 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2015-12-13 00:42:31 -0500 |
commit | 7be047e035dc4fb1536f1694cbb932f881533ab2 (patch) | |
tree | 92f9ac1b12c1914af7cab91cf60fd6e426e13e4c | |
parent | 527e9316f8ec44bd53d90fb9f611fa7ffff52bb9 (diff) |
serial: 8250_uniphier: fix dl_read and dl_write functions
The register offset must be shifted by regshift, otherwise the
baudrate is not set. I missed the issue probably because the
divisor register was already set by the boot loader.
Fixes: 1a8d2903cb6a ("serial: 8250_uniphier: add UniPhier serial driver")
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r-- | drivers/tty/serial/8250/8250_uniphier.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/tty/serial/8250/8250_uniphier.c b/drivers/tty/serial/8250/8250_uniphier.c index d11621e2cf1d..245edbb68d4b 100644 --- a/drivers/tty/serial/8250/8250_uniphier.c +++ b/drivers/tty/serial/8250/8250_uniphier.c | |||
@@ -115,12 +115,16 @@ static void uniphier_serial_out(struct uart_port *p, int offset, int value) | |||
115 | */ | 115 | */ |
116 | static int uniphier_serial_dl_read(struct uart_8250_port *up) | 116 | static int uniphier_serial_dl_read(struct uart_8250_port *up) |
117 | { | 117 | { |
118 | return readl(up->port.membase + UNIPHIER_UART_DLR); | 118 | int offset = UNIPHIER_UART_DLR << up->port.regshift; |
119 | |||
120 | return readl(up->port.membase + offset); | ||
119 | } | 121 | } |
120 | 122 | ||
121 | static void uniphier_serial_dl_write(struct uart_8250_port *up, int value) | 123 | static void uniphier_serial_dl_write(struct uart_8250_port *up, int value) |
122 | { | 124 | { |
123 | writel(value, up->port.membase + UNIPHIER_UART_DLR); | 125 | int offset = UNIPHIER_UART_DLR << up->port.regshift; |
126 | |||
127 | writel(value, up->port.membase + offset); | ||
124 | } | 128 | } |
125 | 129 | ||
126 | static int uniphier_of_serial_setup(struct device *dev, struct uart_port *port, | 130 | static int uniphier_of_serial_setup(struct device *dev, struct uart_port *port, |