Skip to content
Snippets Groups Projects
Commit b1ad03c2 authored by Tom Rini's avatar Tom Rini
Browse files

Merge branch 'master' of git://git.denx.de/u-boot-nios

parents 18c83588 2d61e1be
No related branches found
No related tags found
No related merge requests found
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#include <watchdog.h> #include <watchdog.h>
#include <asm/io.h> #include <asm/io.h>
#include <nios2-yanu.h> #include <nios2-yanu.h>
#include <serial.h>
DECLARE_GLOBAL_DATA_PTR; DECLARE_GLOBAL_DATA_PTR;
...@@ -17,62 +18,34 @@ DECLARE_GLOBAL_DATA_PTR; ...@@ -17,62 +18,34 @@ DECLARE_GLOBAL_DATA_PTR;
static yanu_uart_t *uart = (yanu_uart_t *)CONFIG_SYS_NIOS_CONSOLE; static yanu_uart_t *uart = (yanu_uart_t *)CONFIG_SYS_NIOS_CONSOLE;
#if defined(CONFIG_SYS_NIOS_FIXEDBAUD)
/* Everything's already setup for fixed-baud PTF assignment*/
static void oc_serial_setbrg(void) static void oc_serial_setbrg(void)
{ {
int n, k; int n, k;
const unsigned max_uns = 0xFFFFFFFF; const unsigned max_uns = 0xFFFFFFFF;
unsigned best_n, best_m, baud; unsigned best_n, best_m, baud;
unsigned baudrate;
/* compute best N and M couple */ #if defined(CONFIG_SYS_NIOS_FIXEDBAUD)
best_n = YANU_MAX_PRESCALER_N; /* Everything's already setup for fixed-baud PTF assignment */
for (n = YANU_MAX_PRESCALER_N; n >= 0; n--) { baudrate = CONFIG_BAUDRATE;
if ((unsigned)CONFIG_SYS_CLK_FREQ / (1 << (n + 4)) >=
(unsigned)CONFIG_BAUDRATE) {
best_n = n;
break;
}
}
for (k = 0;; k++) {
if ((unsigned)CONFIG_BAUDRATE <= (max_uns >> (15+n-k)))
break;
}
best_m =
((unsigned)CONFIG_BAUDRATE * (1 << (15 + n - k))) /
((unsigned)CONFIG_SYS_CLK_FREQ >> k);
baud = best_m + best_n * YANU_BAUDE;
writel(baud, &uart->baud);
return;
}
#else #else
baudrate = gd->baudrate;
static void oc_serial_setbrg(void) #endif
{
int n, k;
const unsigned max_uns = 0xFFFFFFFF;
unsigned best_n, best_m, baud;
/* compute best N and M couple */ /* compute best N and M couple */
best_n = YANU_MAX_PRESCALER_N; best_n = YANU_MAX_PRESCALER_N;
for (n = YANU_MAX_PRESCALER_N; n >= 0; n--) { for (n = YANU_MAX_PRESCALER_N; n >= 0; n--) {
if ((unsigned)CONFIG_SYS_CLK_FREQ / (1 << (n + 4)) >= if ((unsigned)CONFIG_SYS_CLK_FREQ / (1 << (n + 4)) >=
gd->baudrate) { baudrate) {
best_n = n; best_n = n;
break; break;
} }
} }
for (k = 0;; k++) { for (k = 0;; k++) {
if (gd->baudrate <= (max_uns >> (15+n-k))) if (baudrate <= (max_uns >> (15+n-k)))
break; break;
} }
best_m = best_m =
(gd->baudrate * (1 << (15 + n - k))) / (baudrate * (1 << (15 + n - k))) /
((unsigned)CONFIG_SYS_CLK_FREQ >> k); ((unsigned)CONFIG_SYS_CLK_FREQ >> k);
baud = best_m + best_n * YANU_BAUDE; baud = best_m + best_n * YANU_BAUDE;
...@@ -81,9 +54,6 @@ static void oc_serial_setbrg(void) ...@@ -81,9 +54,6 @@ static void oc_serial_setbrg(void)
return; return;
} }
#endif /* CONFIG_SYS_NIOS_FIXEDBAUD */
static int oc_serial_init(void) static int oc_serial_init(void)
{ {
unsigned action,control; unsigned action,control;
...@@ -154,7 +124,7 @@ static int oc_serial_tstc(void) ...@@ -154,7 +124,7 @@ static int oc_serial_tstc(void)
((1 << YANU_RFIFO_CHARS_N) - 1)) > 0); ((1 << YANU_RFIFO_CHARS_N) - 1)) > 0);
} }
statoc int oc_serial_getc(void) static int oc_serial_getc(void)
{ {
while (serial_tstc() == 0) while (serial_tstc() == 0)
WATCHDOG_RESET (); WATCHDOG_RESET ();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment