|
|
|
@ -18,8 +18,6 @@ |
|
|
|
|
#include <asm/mach-common/bits/core.h> |
|
|
|
|
#include <asm/serial.h> |
|
|
|
|
|
|
|
|
|
#define BUG() while (1) asm volatile("emuexcpt;"); |
|
|
|
|
|
|
|
|
|
#ifndef __ADSPBF60x__ |
|
|
|
|
#include <asm/mach-common/bits/ebiu.h> |
|
|
|
|
#include <asm/mach-common/bits/pll.h> |
|
|
|
@ -147,8 +145,6 @@ static struct ddr_config ddr_config_table[] = { |
|
|
|
|
__attribute__((always_inline)) |
|
|
|
|
static inline void serial_init(void) |
|
|
|
|
{ |
|
|
|
|
uint32_t uart_base = UART_BASE; |
|
|
|
|
|
|
|
|
|
#if defined(__ADSPBF54x__) || defined(__ADSPBF60x__) |
|
|
|
|
# ifdef BFIN_BOOT_UART_USE_RTS |
|
|
|
|
# define BFIN_UART_USE_RTS 1 |
|
|
|
@ -156,6 +152,7 @@ static inline void serial_init(void) |
|
|
|
|
# define BFIN_UART_USE_RTS 0 |
|
|
|
|
# endif |
|
|
|
|
if (BFIN_UART_USE_RTS && CONFIG_BFIN_BOOT_MODE == BFIN_BOOT_UART) { |
|
|
|
|
uint32_t uart_base = UART_BASE; |
|
|
|
|
size_t i; |
|
|
|
|
|
|
|
|
|
/* force RTS rather than relying on auto RTS */ |
|
|
|
@ -195,8 +192,8 @@ static inline void serial_init(void) |
|
|
|
|
|
|
|
|
|
#if CONFIG_BFIN_BOOT_MODE != BFIN_BOOT_BYPASS |
|
|
|
|
if (BFIN_DEBUG_EARLY_SERIAL) { |
|
|
|
|
serial_early_init(uart_base); |
|
|
|
|
serial_early_set_baud(uart_base, CONFIG_BAUDRATE); |
|
|
|
|
serial_early_init(UART_BASE); |
|
|
|
|
serial_early_set_baud(UART_BASE, CONFIG_BAUDRATE); |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
} |
|
|
|
@ -547,7 +544,7 @@ maybe_self_refresh(ADI_BOOT_DATA *bs) |
|
|
|
|
__attribute__((always_inline)) static inline u16 |
|
|
|
|
program_clocks(ADI_BOOT_DATA *bs, bool put_into_srfs) |
|
|
|
|
{ |
|
|
|
|
u16 vr_ctl; |
|
|
|
|
u16 vr_ctl = 0; |
|
|
|
|
|
|
|
|
|
serial_putc('a'); |
|
|
|
|
|
|
|
|
@ -731,6 +728,8 @@ update_serial_clocks(ADI_BOOT_DATA *bs, uint sdivB, uint divB, uint vcoB) |
|
|
|
|
|
|
|
|
|
serial_putc('a'); |
|
|
|
|
|
|
|
|
|
if (BFIN_DEBUG_EARLY_SERIAL || |
|
|
|
|
CONFIG_BFIN_BOOT_MODE == BFIN_BOOT_UART) { |
|
|
|
|
#ifdef __ADSPBF60x__ |
|
|
|
|
sdivR = bfin_read_CGU_DIV(); |
|
|
|
|
sdivR = ((sdivR >> 8) & 0x1f) * ((sdivR >> 5) & 0x7); |
|
|
|
@ -744,6 +743,8 @@ update_serial_clocks(ADI_BOOT_DATA *bs, uint sdivB, uint divB, uint vcoB) |
|
|
|
|
divisor = vcoB * sdivR; |
|
|
|
|
quotient = early_division(dividend, divisor); |
|
|
|
|
serial_early_put_div(quotient - ANOMALY_05000230); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
serial_putc('c'); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -913,7 +914,8 @@ check_hibernation(ADI_BOOT_DATA *bs, u16 vr_ctl, bool put_into_srfs) |
|
|
|
|
continue; |
|
|
|
|
|
|
|
|
|
serial_putc('z'); |
|
|
|
|
uint32_t *hibernate_magic = bfin_read32(DPM0_RESTORE4); |
|
|
|
|
uint32_t *hibernate_magic = |
|
|
|
|
(uint32_t *)bfin_read32(DPM0_RESTORE4); |
|
|
|
|
SSYNC(); /* make sure memory controller is done */ |
|
|
|
|
if (hibernate_magic[0] == 0xDEADBEEF) { |
|
|
|
|
serial_putc('c'); |
|
|
|
|