[U-Boot] [PATCH 2/2] serial/serial_arc: switch from {read|write}l to {read|write}b accessors
Alexey Brodkin
Alexey.Brodkin at synopsys.com
Sat Feb 8 07:10:02 CET 2014
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 at synopsys.com>
Cc: Vineet Gupta <vgupta at synopsys.com>
Cc: Noam Camus <noamc at ezchip.com>
Cc: Tom Rini <trini at ti.com>
---
drivers/serial/serial_arc.c | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/drivers/serial/serial_arc.c b/drivers/serial/serial_arc.c
index 55d0769..b21b12b 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, ®s->baudl);
+ writeb(arc_console_baud & 0xff, ®s->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, ®s->baudh);
+ writeb((arc_console_baud & 0xff00) >> 8, ®s->baudh);
else
- writel(1, ®s->baudh);
+ writeb(1, ®s->baudh);
#else
- writel((arc_console_baud & 0xff00) >> 8, ®s->baudh);
+ writeb((arc_console_baud & 0xff00) >> 8, ®s->baudh);
#endif
}
@@ -70,15 +70,15 @@ static void arc_serial_putc(const char c)
if (c == '\n')
arc_serial_putc('\r');
- while (!(readl(®s->status) & UART_TXEMPTY))
+ while (!(readb(®s->status) & UART_TXEMPTY))
;
- writel(c, ®s->data);
+ writeb(c, ®s->data);
}
static int arc_serial_tstc(void)
{
- return !(readl(®s->status) & UART_RXEMPTY);
+ return !(readb(®s->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(®s->status) & UART_OVERFLOW_ERR)
+ if (readb(®s->status) & UART_OVERFLOW_ERR)
return 0;
- return readl(®s->data) & 0xFF;
+ return readb(®s->data) & 0xFF;
}
static void arc_serial_puts(const char *s)
--
1.8.5.3
More information about the U-Boot
mailing list