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