summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorAlexey Brodkin <Alexey.Brodkin@synopsys.com>2014-02-08 10:10:02 +0400
committerTom Rini <trini@ti.com>2014-02-21 07:54:05 -0500
commit94b5400e76f6a5100e2af88de274b0a6881bf94d (patch)
tree47df35ebafc74a344237b143f9db82e964824ea0 /drivers
parent1d568c7666e81fa920de38a3c83895764ea8cf0f (diff)
downloadtalos-obmc-uboot-94b5400e76f6a5100e2af88de274b0a6881bf94d.tar.gz
talos-obmc-uboot-94b5400e76f6a5100e2af88de274b0a6881bf94d.zip
serial/serial_arc: switch from {read|write}l to {read|write}b accessors
This is required for proper functionality on big-endian targets. Memory-mapped registres of ARC UART are not 32-bit words but 8-bit bytes so on little-endian target either acessor (_l or _b) works fine. On big-endian only _b accessors works as expected. Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com> Cc: Vineet Gupta <vgupta@synopsys.com> Cc: Noam Camus <noamc@ezchip.com> Cc: Tom Rini <trini@ti.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/serial/serial_arc.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/drivers/serial/serial_arc.c b/drivers/serial/serial_arc.c
index 55d07691fc..b21b12ba44 100644
--- a/drivers/serial/serial_arc.c
+++ b/drivers/serial/serial_arc.c
@@ -38,7 +38,7 @@ static void arc_serial_setbrg(void)
gd->baudrate = CONFIG_BAUDRATE;
arc_console_baud = gd->cpu_clk / (gd->baudrate * 4) - 1;
- writel(arc_console_baud & 0xff, &regs->baudl);
+ writeb(arc_console_baud & 0xff, &regs->baudl);
#ifdef CONFIG_ARC
/*
@@ -50,11 +50,11 @@ static void arc_serial_setbrg(void)
* Until that is fixed, when running on ISS, we will set baudh to !0
*/
if (gd->arch.running_on_hw)
- writel((arc_console_baud & 0xff00) >> 8, &regs->baudh);
+ writeb((arc_console_baud & 0xff00) >> 8, &regs->baudh);
else
- writel(1, &regs->baudh);
+ writeb(1, &regs->baudh);
#else
- writel((arc_console_baud & 0xff00) >> 8, &regs->baudh);
+ writeb((arc_console_baud & 0xff00) >> 8, &regs->baudh);
#endif
}
@@ -70,15 +70,15 @@ static void arc_serial_putc(const char c)
if (c == '\n')
arc_serial_putc('\r');
- while (!(readl(&regs->status) & UART_TXEMPTY))
+ while (!(readb(&regs->status) & UART_TXEMPTY))
;
- writel(c, &regs->data);
+ writeb(c, &regs->data);
}
static int arc_serial_tstc(void)
{
- return !(readl(&regs->status) & UART_RXEMPTY);
+ return !(readb(&regs->status) & UART_RXEMPTY);
}
static int arc_serial_getc(void)
@@ -87,10 +87,10 @@ static int arc_serial_getc(void)
;
/* Check for overflow errors */
- if (readl(&regs->status) & UART_OVERFLOW_ERR)
+ if (readb(&regs->status) & UART_OVERFLOW_ERR)
return 0;
- return readl(&regs->data) & 0xFF;
+ return readb(&regs->data) & 0xFF;
}
static void arc_serial_puts(const char *s)
OpenPOWER on IntegriCloud