| /* | 
 |  * platform.c - code to initialise everything required when first booting. | 
 |  * | 
 |  * Copyright (C) 2015 ARM Limited. All rights reserved. | 
 |  * | 
 |  * Use of this source code is governed by a BSD-style license that can be | 
 |  * found in the LICENSE.txt file. | 
 |  */ | 
 |  | 
 | #include <stdint.h> | 
 |  | 
 | #include <asm/io.h> | 
 |  | 
 | #define PL011_UARTDR		0x00 | 
 | #define PL011_UARTFR		0x18 | 
 | #define PL011_UARTIBRD		0x24 | 
 | #define PL011_UARTFBRD		0x28 | 
 | #define PL011_UART_LCR_H	0x2c | 
 | #define PL011_UARTCR		0x30 | 
 |  | 
 | #define PL011_UARTFR_BUSY	(1 << 3) | 
 | #define PL011_UARTFR_FIFO_FULL	(1 << 5) | 
 |  | 
 | #define PL011(reg)	((void *)UART_BASE + PL011_##reg) | 
 |  | 
 | #define V2M_SYS_CFGDATA		0xa0 | 
 | #define V2M_SYS_CFGCTRL		0xa4 | 
 |  | 
 | #define V2M_SYS(reg)	((void *)SYSREGS_BASE + V2M_SYS_##reg) | 
 |  | 
 | static void print_string(const char *str) | 
 | { | 
 | 	uint32_t flags; | 
 |  | 
 | 	while (*str) { | 
 | 		do | 
 | 			flags = raw_readl(PL011(UARTFR)); | 
 | 		while (flags & PL011_UARTFR_FIFO_FULL); | 
 |  | 
 | 		raw_writel(*str++, PL011(UARTDR)); | 
 |  | 
 | 		do | 
 | 			flags = raw_readl(PL011(UARTFR)); | 
 | 		while (flags & PL011_UARTFR_BUSY); | 
 | 	} | 
 | } | 
 |  | 
 | void init_platform(void) | 
 | { | 
 | 	/* | 
 | 	 * UART initialisation (38400 8N1) | 
 | 	 */ | 
 | 	raw_writel(0x10,	PL011(UARTIBRD)); | 
 | 	raw_writel(0x0,		PL011(UARTFBRD)); | 
 | 	/* Set parameters to 8N1 and enable the FIFOs */ | 
 | 	raw_writel(0x70,	PL011(UART_LCR_H)); | 
 | 	/* Enable the UART, TXen and RXen */ | 
 | 	raw_writel(0x301,	PL011(UARTCR)); | 
 |  | 
 | 	print_string("Boot-wrapper v0.2\r\n\r\n"); | 
 |  | 
 | 	/* | 
 | 	 * CLCD output site MB | 
 | 	 */ | 
 | 	raw_writel(0x0,		V2M_SYS(CFGDATA)); | 
 | 	/* START | WRITE | MUXFPGA | SITE_MB */ | 
 | 	raw_writel((1 << 31) | (1 << 30) | (7 << 20) | (0 << 16), | 
 | 				V2M_SYS(CFGCTRL)); | 
 | } |