From a8ba61048eb502231d9cd7cd20f4223941c9510f Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Mon, 15 Mar 2010 15:06:29 -0700 Subject: [PATCH] [ARM] tegra: HACK Enable uart and clocks in uncompress.h Signed-off-by: Colin Cross --- arch/arm/mach-tegra/include/mach/uncompress.h | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/arch/arm/mach-tegra/include/mach/uncompress.h b/arch/arm/mach-tegra/include/mach/uncompress.h index 4e8323770c79..f88e3c2ca019 100644 --- a/arch/arm/mach-tegra/include/mach/uncompress.h +++ b/arch/arm/mach-tegra/include/mach/uncompress.h @@ -43,14 +43,76 @@ static inline void flush(void) { } +static inline void konk_delay(int delay) +{ + int i; + + for (i = 0; i < (1000 * delay); i++) { + barrier(); + } +} + + static inline void arch_decomp_setup(void) { volatile u8 *uart = (volatile u8 *)TEGRA_DEBUG_UART_BASE; int shift = 2; + volatile u32 *addr; if (uart == NULL) return; +/* + addr = (volatile u32 *)0x70000014; + *addr &= ~(1<<29); + + addr = (volatile u32 *)0x70000084; + *addr &= ~(3<<2); + + addr = (volatile u32 *)0x700000b0; + *addr &= ~(3<<24); + + konk_delay(5); + +*/ + + /* OSC_CTRL_0 */ + /*addr = (volatile u32 *)0x60006050;*/ + + /* PLLP_BASE_0 */ + addr = (volatile u32 *)0x600060a0; + *addr = 0x5011b00c; + + /* PLLP_OUTA_0 */ + addr = (volatile u32 *)0x600060a4; + *addr = 0x10031c03; + + /* PLLP_OUTB_0 */ + addr = (volatile u32 *)0x600060a8; + *addr = 0x06030a03; + + /* PLLP_MISC_0 */ + addr = (volatile u32 *)0x600060ac; + *addr = 0x00000800; + + konk_delay(1000); + + /* UARTD clock source is PLLP_OUT0 */ + addr = (volatile u32 *)0x600061c0; + *addr = 0; + + /* Enable clock to UARTD */ + addr = (volatile u32 *)0x60006018; + *addr |= (1<<1); + + konk_delay(5); + + /* Deassert reset to UARTD */ + addr = (volatile u32 *)0x6000600c; + *addr &= ~(1<<1); + + konk_delay(5); + uart[UART_LCR << shift] |= UART_LCR_DLAB; uart[UART_DLL << shift] = 0x75; uart[UART_DLM << shift] = 0x0; -- 2.34.1