mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-08-28 21:09:00 +09:00
Merge branch 'master' of git://git.denx.de/u-boot-nios
This commit is contained in:
commit
b1ad03c242
@ -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;
|
|||||||
|
|
||||||
static yanu_uart_t *uart = (yanu_uart_t *)CONFIG_SYS_NIOS_CONSOLE;
|
static yanu_uart_t *uart = (yanu_uart_t *)CONFIG_SYS_NIOS_CONSOLE;
|
||||||
|
|
||||||
|
static void oc_serial_setbrg(void)
|
||||||
|
{
|
||||||
|
int n, k;
|
||||||
|
const unsigned max_uns = 0xFFFFFFFF;
|
||||||
|
unsigned best_n, best_m, baud;
|
||||||
|
unsigned baudrate;
|
||||||
|
|
||||||
#if defined(CONFIG_SYS_NIOS_FIXEDBAUD)
|
#if defined(CONFIG_SYS_NIOS_FIXEDBAUD)
|
||||||
|
/* Everything's already setup for fixed-baud PTF assignment */
|
||||||
/* Everything's already setup for fixed-baud PTF assignment*/
|
baudrate = CONFIG_BAUDRATE;
|
||||||
|
|
||||||
static void oc_serial_setbrg(void)
|
|
||||||
{
|
|
||||||
int n, k;
|
|
||||||
const unsigned max_uns = 0xFFFFFFFF;
|
|
||||||
unsigned best_n, best_m, baud;
|
|
||||||
|
|
||||||
/* compute best N and M couple */
|
|
||||||
best_n = YANU_MAX_PRESCALER_N;
|
|
||||||
for (n = YANU_MAX_PRESCALER_N; n >= 0; n--) {
|
|
||||||
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)
|
|||||||
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)
|
|||||||
((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 ();
|
||||||
|
Loading…
Reference in New Issue
Block a user