xref: /rk3399_rockchip-uboot/board/timll/devkit3250/devkit3250.c (revision 463ec1caa3cb9401da8f788fc7d4eee08a5f0edc)
1*463ec1caSVladimir Zapolskiy /*
2*463ec1caSVladimir Zapolskiy  * Embest/Timll DevKit3250 board support
3*463ec1caSVladimir Zapolskiy  *
4*463ec1caSVladimir Zapolskiy  * Copyright (C) 2011 Vladimir Zapolskiy <vz@mleia.com>
5*463ec1caSVladimir Zapolskiy  *
6*463ec1caSVladimir Zapolskiy  * This program is free software; you can redistribute it and/or
7*463ec1caSVladimir Zapolskiy  * modify it under the terms of the GNU General Public License as
8*463ec1caSVladimir Zapolskiy  * published by the Free Software Foundation; either version 2 of
9*463ec1caSVladimir Zapolskiy  * the License, or (at your option) any later version.
10*463ec1caSVladimir Zapolskiy  *
11*463ec1caSVladimir Zapolskiy  * This program is distributed in the hope that it will be useful,
12*463ec1caSVladimir Zapolskiy  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13*463ec1caSVladimir Zapolskiy  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14*463ec1caSVladimir Zapolskiy  * GNU General Public License for more details.
15*463ec1caSVladimir Zapolskiy  *
16*463ec1caSVladimir Zapolskiy  * You should have received a copy of the GNU General Public License
17*463ec1caSVladimir Zapolskiy  * along with this program; if not, write to the Free Software
18*463ec1caSVladimir Zapolskiy  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19*463ec1caSVladimir Zapolskiy  * MA 02110-1301, USA.
20*463ec1caSVladimir Zapolskiy  */
21*463ec1caSVladimir Zapolskiy 
22*463ec1caSVladimir Zapolskiy #include <common.h>
23*463ec1caSVladimir Zapolskiy #include <asm/arch/sys_proto.h>
24*463ec1caSVladimir Zapolskiy #include <asm/arch/cpu.h>
25*463ec1caSVladimir Zapolskiy #include <asm/arch/emc.h>
26*463ec1caSVladimir Zapolskiy 
27*463ec1caSVladimir Zapolskiy DECLARE_GLOBAL_DATA_PTR;
28*463ec1caSVladimir Zapolskiy 
29*463ec1caSVladimir Zapolskiy static struct emc_regs *emc = (struct emc_regs *)EMC_BASE;
30*463ec1caSVladimir Zapolskiy 
31*463ec1caSVladimir Zapolskiy int board_early_init_f(void)
32*463ec1caSVladimir Zapolskiy {
33*463ec1caSVladimir Zapolskiy 	lpc32xx_uart_init(CONFIG_SYS_LPC32XX_UART);
34*463ec1caSVladimir Zapolskiy 
35*463ec1caSVladimir Zapolskiy 	return 0;
36*463ec1caSVladimir Zapolskiy }
37*463ec1caSVladimir Zapolskiy 
38*463ec1caSVladimir Zapolskiy int board_init(void)
39*463ec1caSVladimir Zapolskiy {
40*463ec1caSVladimir Zapolskiy 	/* adress of boot parameters */
41*463ec1caSVladimir Zapolskiy 	gd->bd->bi_boot_params  = CONFIG_SYS_SDRAM_BASE + 0x100;
42*463ec1caSVladimir Zapolskiy 
43*463ec1caSVladimir Zapolskiy #ifdef CONFIG_SYS_FLASH_CFI
44*463ec1caSVladimir Zapolskiy 	/* Use 16-bit memory interface for NOR Flash */
45*463ec1caSVladimir Zapolskiy 	emc->stat[0].config	= EMC_STAT_CONFIG_PB | EMC_STAT_CONFIG_16BIT;
46*463ec1caSVladimir Zapolskiy 
47*463ec1caSVladimir Zapolskiy 	/* Change the NOR timings to optimum value to get maximum bandwidth */
48*463ec1caSVladimir Zapolskiy 	emc->stat[0].waitwen	= EMC_STAT_WAITWEN(1);
49*463ec1caSVladimir Zapolskiy 	emc->stat[0].waitoen	= EMC_STAT_WAITOEN(1);
50*463ec1caSVladimir Zapolskiy 	emc->stat[0].waitrd	= EMC_STAT_WAITRD(12);
51*463ec1caSVladimir Zapolskiy 	emc->stat[0].waitpage	= EMC_STAT_WAITPAGE(12);
52*463ec1caSVladimir Zapolskiy 	emc->stat[0].waitwr	= EMC_STAT_WAITWR(5);
53*463ec1caSVladimir Zapolskiy 	emc->stat[0].waitturn	= EMC_STAT_WAITTURN(2);
54*463ec1caSVladimir Zapolskiy #endif
55*463ec1caSVladimir Zapolskiy 
56*463ec1caSVladimir Zapolskiy 	return 0;
57*463ec1caSVladimir Zapolskiy }
58*463ec1caSVladimir Zapolskiy 
59*463ec1caSVladimir Zapolskiy int dram_init(void)
60*463ec1caSVladimir Zapolskiy {
61*463ec1caSVladimir Zapolskiy 	gd->ram_size = get_ram_size((void *)CONFIG_SYS_SDRAM_BASE,
62*463ec1caSVladimir Zapolskiy 				    CONFIG_SYS_SDRAM_SIZE);
63*463ec1caSVladimir Zapolskiy 
64*463ec1caSVladimir Zapolskiy 	return 0;
65*463ec1caSVladimir Zapolskiy }
66