1be1d5e03Shuang lin /* 2be1d5e03Shuang lin * (C) Copyright 2015 Rockchip Electronics Co., Ltd 3be1d5e03Shuang lin * 4be1d5e03Shuang lin * SPDX-License-Identifier: GPL-2.0+ 5be1d5e03Shuang lin */ 6be1d5e03Shuang lin 7be1d5e03Shuang lin #include <common.h> 89b205198SSimon Glass #include <debug_uart.h> 9be1d5e03Shuang lin #include <asm/io.h> 10aade077eSHeiko Stübner #include <asm/arch/bootrom.h> 11be1d5e03Shuang lin #include <asm/arch/grf_rk3036.h> 12be1d5e03Shuang lin #include <asm/arch/hardware.h> 13be1d5e03Shuang lin #include <asm/arch/sdram_rk3036.h> 14be1d5e03Shuang lin #include <asm/arch/timer.h> 15be1d5e03Shuang lin #include <asm/arch/uart.h> 16be1d5e03Shuang lin 17be1d5e03Shuang lin DECLARE_GLOBAL_DATA_PTR; 18be1d5e03Shuang lin 19be1d5e03Shuang lin #define GRF_BASE 0x20008000 20be1d5e03Shuang lin 21be1d5e03Shuang lin #define DEBUG_UART_BASE 0x20068000 22be1d5e03Shuang lin 23be1d5e03Shuang lin void board_init_f(ulong dummy) 24be1d5e03Shuang lin { 25be1d5e03Shuang lin #ifdef EARLY_DEBUG 2680403aa6STom Rini struct rk3036_grf * const grf = (void *)GRF_BASE; 27be1d5e03Shuang lin /* 28be1d5e03Shuang lin * NOTE: sd card and debug uart use same iomux in rk3036, 29be1d5e03Shuang lin * so if you enable uart, 30be1d5e03Shuang lin * you can not boot from sdcard 31be1d5e03Shuang lin */ 32be1d5e03Shuang lin rk_clrsetreg(&grf->gpio1c_iomux, 33be1d5e03Shuang lin GPIO1C3_MASK << GPIO1C3_SHIFT | 34be1d5e03Shuang lin GPIO1C2_MASK << GPIO1C2_SHIFT, 35be1d5e03Shuang lin GPIO1C3_UART2_SOUT << GPIO1C3_SHIFT | 36be1d5e03Shuang lin GPIO1C2_UART2_SIN << GPIO1C2_SHIFT); 379b205198SSimon Glass debug_uart_init(); 38be1d5e03Shuang lin #endif 39be1d5e03Shuang lin rockchip_timer_init(); 40be1d5e03Shuang lin sdram_init(); 41be1d5e03Shuang lin 42be1d5e03Shuang lin /* return to maskrom */ 43*b82bd1f8SPhilipp Tomsich back_to_bootrom(BROM_BOOT_NEXTSTAGE); 44be1d5e03Shuang lin } 45be1d5e03Shuang lin 46be1d5e03Shuang lin /* Place Holders */ 47be1d5e03Shuang lin void board_init_r(gd_t *id, ulong dest_addr) 48be1d5e03Shuang lin { 49be1d5e03Shuang lin /* 50be1d5e03Shuang lin * Function attribute is no-return 51be1d5e03Shuang lin * This Function never executes 52be1d5e03Shuang lin */ 53be1d5e03Shuang lin while (1) 54be1d5e03Shuang lin ; 55be1d5e03Shuang lin } 56