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