/* * 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 #include #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)); }