The buf member of struct qe_bd is a __be32, so to make this work on
little-endian hosts, use be32_to_cpu when reading it.

Signed-off-by: Rasmus Villemoes <li...@rasmusvillemoes.dk>
---
 drivers/tty/serial/ucc_uart.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/tty/serial/ucc_uart.c b/drivers/tty/serial/ucc_uart.c
index f5ea84928a3b..a5330582b610 100644
--- a/drivers/tty/serial/ucc_uart.c
+++ b/drivers/tty/serial/ucc_uart.c
@@ -343,7 +343,7 @@ static int qe_uart_tx_pump(struct uart_qe_port *qe_port)
                /* Pick next descriptor and fill from buffer */
                bdp = qe_port->tx_cur;
 
-               p = qe2cpu_addr(bdp->buf, qe_port);
+               p = qe2cpu_addr(be32_to_cpu(bdp->buf), qe_port);
 
                *p++ = port->x_char;
                qe_iowrite16be(1, &bdp->length);
@@ -371,7 +371,7 @@ static int qe_uart_tx_pump(struct uart_qe_port *qe_port)
        while (!(qe_ioread16be(&bdp->status) & BD_SC_READY) &&
               (xmit->tail != xmit->head)) {
                count = 0;
-               p = qe2cpu_addr(bdp->buf, qe_port);
+               p = qe2cpu_addr(be32_to_cpu(bdp->buf), qe_port);
                while (count < qe_port->tx_fifosize) {
                        *p++ = xmit->buf[xmit->tail];
                        xmit->tail = (xmit->tail + 1) & (UART_XMIT_SIZE - 1);
@@ -491,7 +491,7 @@ static void qe_uart_int_rx(struct uart_qe_port *qe_port)
                }
 
                /* get pointer */
-               cp = qe2cpu_addr(bdp->buf, qe_port);
+               cp = qe2cpu_addr(be32_to_cpu(bdp->buf), qe_port);
 
                /* loop through the buffer */
                while (i-- > 0) {
-- 
2.23.0

Reply via email to