From mboxrd@z Thu Jan 1 00:00:00 1970 From: Vladimir Zapolskiy Date: Thu, 12 Jan 2012 00:42:42 +0200 Subject: [U-Boot] [PATCH 3/3 v3] devkit3250: add Timll DevKit3250 board initial support In-Reply-To: <201201112308.51005.marek.vasut@gmail.com> References: <1326314031-3223-1-git-send-email-vz@mleia.com> <201201112156.28416.marek.vasut@gmail.com> <4F0DF938.8010809@mleia.com> <201201112308.51005.marek.vasut@gmail.com> Message-ID: <4F0E1062.4070907@mleia.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On 12.01.2012 00:08, Marek Vasut wrote: >> On 11.01.2012 22:56, Marek Vasut wrote: >>>> This change adds a basic support for Embest/Timll DevKit3250 board, >>>> NOR and UART are the only supported peripherals for a moment. The board >>>> doesn't require low-level init, because the initial SDRAM and GPIO >>>> configuration is performed during kickstart bootloader execution. >>>> >>>> Signed-off-by: Vladimir Zapolskiy >>>> --- >>>> Changes from v2 to v3: >>>> * updated a relocation address >>>> * combined a record in maintainers file into the patch >>>> * use high speed UART2 by default >>>> >>>> Changes from v1 to v2: >>>> * corrected address in GPLv2+ licence header in files >>>> * removed clean and distclean targets from board makefile >>>> * do not set machine id explicitly, if CONFIG_MACH_TYPE is defined >>>> * minor indentation cleanups >>>> >>>> MAINTAINERS | 4 + >>>> board/timll/devkit3250/Makefile | 44 +++++++++++++ >>>> board/timll/devkit3250/devkit3250.c | 71 ++++++++++++++++++++ >>>> boards.cfg | 1 + >>>> include/configs/devkit3250.h | 121 >>>> >>>> +++++++++++++++++++++++++++++++++++ 5 files changed, 241 insertions(+), >>>> 0 deletions(-) >>>> >>>> create mode 100644 board/timll/devkit3250/Makefile >>>> create mode 100644 board/timll/devkit3250/devkit3250.c >>>> create mode 100644 include/configs/devkit3250.h >>>> >>>> diff --git a/MAINTAINERS b/MAINTAINERS >>>> index 4bf12b5..68dedae 100644 >>>> --- a/MAINTAINERS >>>> +++ b/MAINTAINERS >>>> @@ -914,6 +914,10 @@ Sughosh Ganu >>>> >>>> hawkboard ARM926EJS (OMAP-L138) >>>> >>>> +Vladimir Zapolskiy >>>> + >>>> + devkit3250 lpc32xx >>>> + >>>> >>>> ---------------------------------------------------------------------- >>>> --- >>>> >>>> Unknown / orphaned boards: >>>> diff --git a/board/timll/devkit3250/Makefile >>>> b/board/timll/devkit3250/Makefile new file mode 100644 >>>> index 0000000..ea7827c >>>> --- /dev/null >>>> +++ b/board/timll/devkit3250/Makefile >>>> @@ -0,0 +1,44 @@ >>>> +# >>>> +# Copyright (C) 2011 by Vladimir Zapolskiy >>>> +# Copyright (C) 2008, Guennadi Liakhovetski >>>> +# >>>> +# See file CREDITS for list of people who contributed to this >>>> +# project. >>>> +# >>>> +# This program is free software; you can redistribute it and/or >>>> +# modify it under the terms of the GNU General Public License as >>>> +# published by the Free Software Foundation; either version 2 of >>>> +# the License, or (at your option) any later version. >>>> +# >>>> +# This program is distributed in the hope that it will be useful, >>>> +# but WITHOUT ANY WARRANTY; without even the implied warranty of >>>> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >>>> +# GNU General Public License for more details. >>>> +# >>>> +# You should have received a copy of the GNU General Public License >>>> +# along with this program; if not, write to the Free Software >>>> +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, >>>> +# MA 02110-1301, USA. >>>> +# >>>> + >>>> +include $(TOPDIR)/config.mk >>>> + >>>> +LIB = $(obj)lib$(BOARD).o >>>> + >>>> +COBJS := devkit3250.o >>>> + >>>> +SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) >>>> +OBJS := $(addprefix $(obj),$(COBJS)) >>>> +SOBJS := $(addprefix $(obj),$(SOBJS)) >>>> + >>>> +$(LIB): $(obj).depend $(OBJS) $(SOBJS) >>>> + $(call cmd_link_o_target, $(OBJS) $(SOBJS)) >>>> + >>>> +####################################################################### >>>> ## + >>>> +# defines $(obj).depend target >>>> +include $(SRCTREE)/rules.mk >>>> + >>>> +sinclude $(obj).depend >>>> + >>>> +####################################################################### >>>> ## diff --git a/board/timll/devkit3250/devkit3250.c >>>> b/board/timll/devkit3250/devkit3250.c new file mode 100644 >>>> index 0000000..461012d >>>> --- /dev/null >>>> +++ b/board/timll/devkit3250/devkit3250.c >>>> @@ -0,0 +1,71 @@ >>>> +/* >>>> + * Embest/Timll DevKit3250 board support >>>> + * >>>> + * Copyright (C) 2011 Vladimir Zapolskiy >>>> + * >>>> + * This program is free software; you can redistribute it and/or >>>> + * modify it under the terms of the GNU General Public License as >>>> + * published by the Free Software Foundation; either version 2 of >>>> + * the License, or (at your option) any later version. >>>> + * >>>> + * This program is distributed in the hope that it will be useful, >>>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of >>>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >>>> + * GNU General Public License for more details. >>>> + * >>>> + * You should have received a copy of the GNU General Public License >>>> + * along with this program; if not, write to the Free Software >>>> + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, >>>> + * MA 02110-1301, USA. >>>> + */ >>>> + >>>> +#include >>>> +#include >>>> +#include >>>> +#include >>>> + >>>> +DECLARE_GLOBAL_DATA_PTR; >>>> + >>>> +static struct emc_t *emc = (struct emc_t *)EMC_BASE; >>>> + >>>> +int board_early_init_f(void) >>>> +{ >>>> + lpc32xx_uart_init(CONFIG_SYS_LPC32XX_UART); >>>> + >>>> + return 0; >>>> +} >>>> + >>>> +int board_init(void) >>>> +{ >>>> + /* >>>> + * It might be necessary to flush data cache, if U-boot is loaded >>>> + * from kickstart bootloader, e.g. from S1L loader >>>> + */ >>>> + flush_cache(0, 0); >>> >>> You're flushing no area here ... also, shouldn't this go to CPU init code >>> ? >> >> That's just a complete cache flush, from arch/arm/lib/cache.c size >> argument is actually redundant. >> >> Basically this should go into low level init, but the board has a >> kickstart bootloader, so generally no need to have low level init at all >> for it. > > What are you talking about ? This should go into CPU init then, right ? If you > have crap IPL -- I suspect for all those CPUs of this series -- then this is > common for all CPUs and should go into CPU init. > Ah, got it. Right, to generalize I'll place this to arch_cpu_init() routine then, initially I mixed your comment up with lowlevel board init. By the way at the same time it would be better to replace it with flush_dcache_all(). >> >>>> + >>>> + /* adress of boot parameters */ >>>> + gd->bd->bi_boot_params = CONFIG_ENV_ADDR; >>>> + >>>> +#ifdef CONFIG_SYS_FLASH_CFI >>>> + /* Use 16-bit memory interface for NOR Flash */ >>>> + emc->stat[0].config = EMC_STAT_CONFIG_PB | EMC_STAT_CONFIG_16BIT; >>>> + >>>> + /* Change the NOR timings to optimum value to get maximum bandwidth */ >>>> + emc->stat[0].waitwen = EMC_STAT_WAITWEN(1); >>>> + emc->stat[0].waitoen = EMC_STAT_WAITOEN(1); >>>> + emc->stat[0].waitrd = EMC_STAT_WAITRD(12); >>>> + emc->stat[0].waitpage = EMC_STAT_WAITPAGE(12); >>>> + emc->stat[0].waitwr = EMC_STAT_WAITWR(5); >>>> + emc->stat[0].waitturn = EMC_STAT_WAITTURN(2); >>>> +#endif >>>> + >>>> + return 0; >>>> +} >>>> + >>>> +int dram_init(void) >>>> +{ >>>> + gd->ram_size = get_ram_size((void *)CONFIG_SYS_SDRAM_BASE, >>>> + CONFIG_SYS_SDRAM_SIZE); >>>> + >>>> + return 0; >>>> +} >>>> diff --git a/boards.cfg b/boards.cfg >>>> index 0b32532..24a98fe 100644 >>>> --- a/boards.cfg >>>> +++ b/boards.cfg >>>> @@ -176,6 +176,7 @@ omap730p2_cs0boot arm arm926ejs >>>> omap730p2 ti omap omap730p2_cs3boot arm >>>> arm926ejs omap730p2 ti omap > omap730p2:CS3_BOOT >>>> edminiv2 arm arm926ejs - >>>> LaCie orion5x dkb arm arm926ejs - >>>> >>>> Marvell pantheon +devkit3250 arm >>>> >>>> arm926ejs devkit3250 timll lpc32xx versatileab >>>> >>>> arm arm926ejs versatile armltd >>>> >>>> versatile versatile:ARCH_VERSATILE_AB versatilepb arm >>>> >>>> arm926ejs versatile armltd versatile >>>> >>>> versatile:ARCH_VERSATILE_PB versatileqemu arm >>>> arm926ejs versatile armltd versatile >>>> versatile:ARCH_VERSATILE_QEMU,ARCH_VERSATILE_PB diff --git >>>> a/include/configs/devkit3250.h b/include/configs/devkit3250.h new file >>>> mode 100644 >>>> index 0000000..360a041 >>>> --- /dev/null >>>> +++ b/include/configs/devkit3250.h >>>> @@ -0,0 +1,121 @@ >>>> +/* >>>> + * Embest/Timll DevKit3250 board configuration file >>>> + * >>>> + * Copyright (C) 2011 Vladimir Zapolskiy >>>> + * >>>> + * This program is free software; you can redistribute it and/or >>>> + * modify it under the terms of the GNU General Public License >>>> + * as published by the Free Software Foundation; either version 2 >>>> + * of the License, or (at your option) any later version. >>>> + * >>>> + * This program is distributed in the hope that it will be useful, >>>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of >>>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >>>> + * GNU General Public License for more details. >>>> + * >>>> + * You should have received a copy of the GNU General Public License >>>> + * along with this program; if not, write to the Free Software >>>> + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, >>>> + * MA 02110-1301, USA. >>>> + */ >>>> + >>>> +#ifndef __CONFIG_DEVKIT3250_H__ >>>> +#define __CONFIG_DEVKIT3250_H__ >>>> + >>>> +/* SoC and board defines */ >>>> +#include >>>> +#include >>>> + >>>> +/* >>>> + * Define DevKit3250 machine type by hand until it lands in mach-types >>>> + */ >>>> +#define MACH_TYPE_DEVKIT3250 3697 >>>> +#define CONFIG_MACH_TYPE MACH_TYPE_DEVKIT3250 >>>> + >>>> +#define CONFIG_SYS_ICACHE_OFF >>>> +#define CONFIG_SYS_DCACHE_OFF >>>> +#define CONFIG_SKIP_LOWLEVEL_INIT >>>> +#define CONFIG_BOARD_EARLY_INIT_F >>>> + >>>> +/* >>>> + * Memory configurations >>>> + */ >>>> +#define CONFIG_NR_DRAM_BANKS 1 >>>> +#define CONFIG_STACKSIZE SZ_32K >>>> +#define CONFIG_SYS_MALLOC_LEN SZ_1M >>>> +#define CONFIG_SYS_GBL_DATA_SIZE 128 >>>> +#define CONFIG_SYS_SDRAM_BASE EMC_DYCS0_BASE >>>> +#define CONFIG_SYS_SDRAM_SIZE SZ_64M >>>> +#define CONFIG_SYS_MEMTEST_START CONFIG_SYS_SDRAM_BASE >>>> +#define CONFIG_SYS_MEMTEST_END (CONFIG_SYS_TEXT_BASE - SZ_1M) >>>> + >>>> +#define CONFIG_SYS_TEXT_BASE 0x83FA0000 >>>> +#define CONFIG_SYS_LOAD_ADDR (CONFIG_SYS_MEMTEST_START + SZ_32K) >>>> + >>>> +#define CONFIG_SYS_INIT_RAM_SIZE SZ_4K >>>> +#define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_SDRAM_BASE + \ >>>> + CONFIG_SYS_INIT_RAM_SIZE - \ >>>> + GENERATED_GBL_DATA_SIZE) >>>> +#define CONFIG_SYS_INIT_SP_ADDR CONFIG_SYS_GBL_DATA_OFFSET >>>> + >>>> +/* >>>> + * Serial Driver >>>> + */ >>>> +#define CONFIG_SYS_LPC32XX_UART 2 /* UART2 */ >>>> +#define CONFIG_BAUDRATE 115200 >>>> + >>>> +/* >>>> + * NOR Flash >>>> + */ >>>> +#define CONFIG_CMD_FLASH >>>> +#define CONFIG_SYS_MAX_FLASH_BANKS 1 >>>> +#define CONFIG_SYS_MAX_FLASH_SECT 71 >>>> +#define CONFIG_SYS_FLASH_BASE EMC_CS0_BASE >>>> +#define CONFIG_SYS_FLASH_SIZE SZ_4M >>>> +#define CONFIG_SYS_FLASH_CFI >>>> + >>>> +/* >>>> + * U-Boot General Configurations >>>> + */ >>>> +#define CONFIG_SYS_LONGHELP >>>> +#define CONFIG_SYS_PROMPT "=> " >>>> +#define CONFIG_SYS_CBSIZE 1024 /* Console I/O buffer size >>>> */ +#define CONFIG_SYS_PBSIZE \ >>>> + (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16) >>>> +#define CONFIG_SYS_MAXARGS 16 >>>> +#define CONFIG_SYS_BARGSIZE CONFIG_SYS_CBSIZE >>>> + >>>> +#define CONFIG_AUTO_COMPLETE >>>> +#define CONFIG_CMDLINE_EDITING >>>> +#define CONFIG_VERSION_VARIABLE >>>> +#define CONFIG_DISPLAY_CPUINFO >>>> +#define CONFIG_DOS_PARTITION >>>> + >>>> +#define CONFIG_ENV_IS_NOWHERE >>>> +#define CONFIG_ENV_SIZE SZ_128K >>>> +#define CONFIG_ENV_ADDR 0x80000100 >>>> + >>>> +/* >>>> + * U-Boot Commands >>>> + */ >>>> +#include >>>> +#define CONFIG_CMD_CACHE >>>> + >>>> +/* >>>> + * Boot Linux >>>> + */ >>>> +#define CONFIG_CMDLINE_TAG >>>> +#define CONFIG_SETUP_MEMORY_TAGS >>>> +#define CONFIG_ZERO_BOOTDELAY_CHECK >>>> +#define CONFIG_BOOTDELAY 3 >>>> + >>>> +#define CONFIG_BOOTFILE "uImage" >>>> +#define CONFIG_BOOTARGS "console=ttyS2,115200n8" >>>> +#define CONFIG_LOADADDR 0x80008000 >>>> + >>>> +/* >>>> + * SoC specific configuration >>>> + */ >>>> +#include >>>> + >>>> +#endif /* __CONFIG_DEVKIT3250_H__*/ >>> >>> Otherwise ok >> >> Thanks for review. > _______________________________________________ > U-Boot mailing list > U-Boot at lists.denx.de > http://lists.denx.de/mailman/listinfo/u-boot -- With best wishes, Vladimir