mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-04-01 12:01:31 +00:00
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>
This commit is contained in:
parent
1d568c7666
commit
94b5400e76
1 changed files with 9 additions and 9 deletions
|
@ -38,7 +38,7 @@ static void arc_serial_setbrg(void)
|
||||||
gd->baudrate = CONFIG_BAUDRATE;
|
gd->baudrate = CONFIG_BAUDRATE;
|
||||||
|
|
||||||
arc_console_baud = gd->cpu_clk / (gd->baudrate * 4) - 1;
|
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
|
#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
|
* Until that is fixed, when running on ISS, we will set baudh to !0
|
||||||
*/
|
*/
|
||||||
if (gd->arch.running_on_hw)
|
if (gd->arch.running_on_hw)
|
||||||
writel((arc_console_baud & 0xff00) >> 8, ®s->baudh);
|
writeb((arc_console_baud & 0xff00) >> 8, ®s->baudh);
|
||||||
else
|
else
|
||||||
writel(1, ®s->baudh);
|
writeb(1, ®s->baudh);
|
||||||
#else
|
#else
|
||||||
writel((arc_console_baud & 0xff00) >> 8, ®s->baudh);
|
writeb((arc_console_baud & 0xff00) >> 8, ®s->baudh);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -70,15 +70,15 @@ static void arc_serial_putc(const char c)
|
||||||
if (c == '\n')
|
if (c == '\n')
|
||||||
arc_serial_putc('\r');
|
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)
|
static int arc_serial_tstc(void)
|
||||||
{
|
{
|
||||||
return !(readl(®s->status) & UART_RXEMPTY);
|
return !(readb(®s->status) & UART_RXEMPTY);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int arc_serial_getc(void)
|
static int arc_serial_getc(void)
|
||||||
|
@ -87,10 +87,10 @@ static int arc_serial_getc(void)
|
||||||
;
|
;
|
||||||
|
|
||||||
/* Check for overflow errors */
|
/* Check for overflow errors */
|
||||||
if (readl(®s->status) & UART_OVERFLOW_ERR)
|
if (readb(®s->status) & UART_OVERFLOW_ERR)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
return readl(®s->data) & 0xFF;
|
return readb(®s->data) & 0xFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void arc_serial_puts(const char *s)
|
static void arc_serial_puts(const char *s)
|
||||||
|
|
Loading…
Add table
Reference in a new issue