[U-Boot] [PATCH-ARM] S3C2440: Add support for Embest SBC2440-II Board
Jean-Christophe PLAGNIOL-VILLARD
plagnioj at jcrosoft.com
Thu Mar 26 07:16:18 CET 2009
On 00:14 Thu 26 Mar , kevin.morfitt at fearnside-systems.co.uk wrote:
> Adds support for the Embest SBC2440-II Board (see
> http://www.embedinfo.com/english/product/sbc2440-II.asp) with u-boot
> programmed in NOR flash.
>
> Implementation is based on the existing u-boot support for s3C2410-based
> boards. Where I've copied and modified existing files I've left the
> style of the original code as it was, including any non-conformance with
> the u-boot coding style. Where I've added new code I've aimed to use the
> u-boot coding style. I've run MAKEALL with the LIST_ARM9 targets only as
> the changes don't affect any other architectures.
>
> Signed-off-by: Kevin Morfitt <kevin.morfitt at fearnside-systems.co.uk>
>
> diff -uprN u-boot-2009.03/MAKEALL u-boot-2009.03-PATCHED/MAKEALL
> --- u-boot-2009.03/MAKEALL 2009-03-21 21:04:41.000000000 +0000
> +++ u-boot-2009.03-PATCHED/MAKEALL 2009-03-25 21:48:14.171875000 +0000
> @@ -512,6 +512,7 @@ LIST_ARM9=" \
> omap5912osk \
> omap730p2 \
> sbc2410x \
> + sbc2440ii \
> scb9328 \
> smdk2400 \
> smdk2410 \
> diff -uprN u-boot-2009.03/Makefile u-boot-2009.03-PATCHED/Makefile
> --- u-boot-2009.03/Makefile 2009-03-21 21:04:41.000000000 +0000
> +++ u-boot-2009.03-PATCHED/Makefile 2009-03-22 09:42:11.078125000 +0000
> @@ -2821,6 +2821,9 @@ omap730p2_cs3boot_config : unconfig
> sbc2410x_config: unconfig
> @$(MKCONFIG) $(@:_config=) arm arm920t sbc2410x NULL s3c24x0
>
> +sbc2440ii_config: unconfig
> + @$(MKCONFIG) $(@:_config=) arm arm920t sbc2440ii embest s3c24x0
> +
> scb9328_config : unconfig
> @$(MKCONFIG) $(@:_config=) arm arm920t scb9328 NULL imx
>
> diff -uprN u-boot-2009.03/board/embest/sbc2440ii/Makefile
> u-boot-2009.03-PATCHED/board/embest/sbc2440ii/Makefile
> --- u-boot-2009.03/board/embest/sbc2440ii/Makefile 1970-01-01
> 00:00:00.000000000 +0000
> +++ u-boot-2009.03-PATCHED/board/embest/sbc2440ii/Makefile 2009-03-22
> 09:44:24.640625000 +0000
> @@ -0,0 +1,51 @@
> +#
> +# (C) Copyright 2000-2006
> +# Wolfgang Denk, DENX Software Engineering, wd at denx.de.
> +#
> +# 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., 59 Temple Place, Suite 330, Boston,
> +# MA 02111-1307 USA
> +#
> +
> +include $(TOPDIR)/config.mk
> +
> +LIB = $(obj)lib$(BOARD).a
> +
> +COBJS := sbc2440ii.o flash.o sbc2440ii_cmd.o
> +SOBJS := lowlevel_init.o
> +
> +SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
> +OBJS := $(addprefix $(obj),$(COBJS))
> +SOBJS := $(addprefix $(obj),$(SOBJS))
> +
> +$(LIB): $(obj).depend $(OBJS) $(SOBJS)
> + $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
> +
> +clean:
> + rm -f $(SOBJS) $(OBJS)
> +
> +distclean: clean
> + rm -f $(LIB) core *.bak $(obj).depend
> +
> +#########################################################################
> +
> +# defines $(obj).depend target
> +include $(SRCTREE)/rules.mk
> +
> +sinclude $(obj).depend
> +
> +#########################################################################
> diff -uprN u-boot-2009.03/board/embest/sbc2440ii/config.mk
> u-boot-2009.03-PATCHED/board/embest/sbc2440ii/config.mk
> --- u-boot-2009.03/board/embest/sbc2440ii/config.mk 1970-01-01
> 00:00:00.000000000 +0000
> +++ u-boot-2009.03-PATCHED/board/embest/sbc2440ii/config.mk
> 2009-03-25 21:05:21.281250000 +0000
> @@ -0,0 +1,25 @@
> +#
> +# (C) Copyright 2002
> +# Gary Jennejohn, DENX Software Engineering, <gj at denx.de>
> +# David Mueller, ELSOFT AG, <d.mueller at elsoft.ch>
> +#
> +# SAMSUNG SMDK2410 board with S3C2410X (ARM920T) cpu
> +#
> +# see http://www.samsung.com/ for more information on SAMSUNG
> +#
> +# Modified for EMBEST SBC2440-II board with S3C2440 (ARM920T) cpu by:
> +# (C) Copyright 2009
> +# Kevin Morfitt, Fearnside Systems Ltd,
> <kevin.morfitt at fearnside-systems.co.uk>
please fix
> +
> +#
> +# SBC2440-II has 1 bank of 64 MB DRAM
> +#
> +# 3000'0000 to 3800'0000
> +#
> +# Linux-Kernel is expected to be at 3000'8000, entry 3000'8000
> +#
> +# we load ourself to 33F8'0000
> +#
> +# download area is 3000'0000
> +
> +TEXT_BASE = 0x33F80000
> diff -uprN u-boot-2009.03/board/embest/sbc2440ii/flash.c
> u-boot-2009.03-PATCHED/board/embest/sbc2440ii/flash.c
please use cfi driver
> --- u-boot-2009.03/board/embest/sbc2440ii/flash.c 1970-01-01
> 00:00:00.000000000 +0000
> +++ u-boot-2009.03-PATCHED/board/embest/sbc2440ii/flash.c 2009-03-22
> 21:43:19.765625000 +0000
> @@ -0,0 +1,437 @@
> +/*
> + * (C) Copyright 2002
> + * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
> + * Alex Zuepke <azu at sysgo.de>
> + *
> + * See file CREDITS for list of people who contributed to this
> + * project.
> + *
> diff -uprN u-boot-2009.03/board/embest/sbc2440ii/lowlevel_init.S
> u-boot-2009.03-PATCHED/board/embest/sbc2440ii/lowlevel_init.S
> --- u-boot-2009.03/board/embest/sbc2440ii/lowlevel_init.S 1970-01-01
> 00:00:00.000000000 +0000
> +++ u-boot-2009.03-PATCHED/board/embest/sbc2440ii/lowlevel_init.S
> 2009-03-25 21:04:56.656250000 +0000
> @@ -0,0 +1,188 @@
> +/*
> + * Memory Setup stuff - taken from blob memsetup.S
> + *
> + * Copyright (C) 1999 2000 2001 Erik Mouw (J.A.K.Mouw at its.tudelft.nl) and
> + * Jan-Derk Bakker (J.D.Bakker at its.tudelft.nl)
> + *
> + * Modified for the Samsung SMDK2410 by
> + * (C) Copyright 2002
> + * David Mueller, ELSOFT AG, <d.mueller at elsoft.ch>
> + *
> + * Modified for the friendly-arm SBC-2410X by
> + * (C) Copyright 2005
> + * JinHua Luo, GuangDong Linux Center, <luo.jinhua at gd-linux.com>
> + *
> + * Modified for the Embest SBC2440-II by
> + * (C) Copyright 2009
> + * Kevin Morfitt, Fearnside Systems Ltd,
> <kevin.morfitt at fearnside-systems.co.uk>
please fix
> + *
> + * 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., 59 Temple Place, Suite 330, Boston,
> + * MA 02111-1307 USA
> + */
> +
> +#include <config.h>
> +#include <version.h>
> +
> +/*
> + * Taken from linux/arch/arm/boot/compressed/head-s3c2410.S
> + *
> + * Copyright (C) 2002 Samsung Electronics SW.LEE
> <hitchcar at sec.samsung.com>
please fix
please move define to a header and please use tab for indentation
please check your patch with checkpatch.pl
please use CAPITAL in macro name
> + */
> +
> +#define BWSCON 0x48000000
> +
> +/* BWSCON */
> +#define DW8 (0x0)
> +#define DW16 (0x1)
> +#define DW32 (0x2)
> +#define WAIT (0x1<<2)
> +#define UBLB (0x1<<3)
> +
> +#define B1_BWSCON (DW16)
> +#define B2_BWSCON (DW16)
> +#define B3_BWSCON (DW16 + WAIT + UBLB)
> +#define B4_BWSCON (DW16)
> +#define B5_BWSCON (DW16)
> +#define B6_BWSCON (DW32)
> +#define B7_BWSCON (DW32)
> +
> +#define B0_Tacs 0x0
> +#define B0_Tcos 0x0
> +#define B0_Tacc 0x7
> +#define B0_Tcoh 0x0
> +#define B0_Tah 0x0
> +#define B0_Tacp 0x0
<snip>
> +/**************************************/
> +
> +_TEXT_BASE:
> + .word TEXT_BASE
> +
> +.globl lowlevel_init
> +lowlevel_init:
> + /* memory control configuration */
> + /* make r0 relative the current location so that it */
> + /* reads SMRDATA out of FLASH rather than memory ! */
> + ldr r0, =SMRDATA
> + ldr r1, _TEXT_BASE
> + sub r0, r0, r1
> + ldr r1, =BWSCON /* Bus Width Status Controller */
> + add r2, r0, #13*4
> +0:
> + ldr r3, [r0], #4
> + str r3, [r1], #4
> + cmp r2, r0
> + bne 0b
> +
> + /* everything is fine now */
> + mov pc, lr
> +
> + .ltorg
> +/* the literal pools origin */
> +
> +SMRDATA:
> + .word
> (0+(B1_BWSCON<<4)+(B2_BWSCON<<8)+(B3_BWSCON<<12)+(B4_BWSCON<<16)+(B5_BWSCON<<20)+(B6_BWSCON<<24)+(B7_BWSCON<<28))
> + .word
> ((B0_Tacs<<13)+(B0_Tcos<<11)+(B0_Tacc<<8)+(B0_Tcoh<<6)+(B0_Tah<<4)+(B0_Tacp<<2)+(B0_PMC))
> + .word
> ((B1_Tacs<<13)+(B1_Tcos<<11)+(B1_Tacc<<8)+(B1_Tcoh<<6)+(B1_Tah<<4)+(B1_Tacp<<2)+(B1_PMC))
> + .word
> ((B2_Tacs<<13)+(B2_Tcos<<11)+(B2_Tacc<<8)+(B2_Tcoh<<6)+(B2_Tah<<4)+(B2_Tacp<<2)+(B2_PMC))
> + .word
> ((B3_Tacs<<13)+(B3_Tcos<<11)+(B3_Tacc<<8)+(B3_Tcoh<<6)+(B3_Tah<<4)+(B3_Tacp<<2)+(B3_PMC))
> + .word
> ((B4_Tacs<<13)+(B4_Tcos<<11)+(B4_Tacc<<8)+(B4_Tcoh<<6)+(B4_Tah<<4)+(B4_Tacp<<2)+(B4_PMC))
> + .word
> ((B5_Tacs<<13)+(B5_Tcos<<11)+(B5_Tacc<<8)+(B5_Tcoh<<6)+(B5_Tah<<4)+(B5_Tacp<<2)+(B5_PMC))
> + .word ((B6_MT<<15)+(B6_Trcd<<2)+(B6_SCAN))
> + .word ((B7_MT<<15)+(B7_Trcd<<2)+(B7_SCAN))
> + .word ((REFEN<<23)+(TREFMD<<22)+(Trp<<20)+(Trc<<18)+(Tchr<<16)+REFCNT)
> + .word ((BURST_EN<<7)+(SCKE_EN<<5)+(SCLK_EN<<4)+(BK67MAP))
> + .word ((WBL6<<9)+(TM6<<7)+(CL6<<4)+(BT6<<3)+(BL6))
> + .word ((WBL7<<9)+(TM7<<7)+(CL7<<4)+(BT7<<3)+(BL7))
please add space before and after '<<' and '+'
please becarefull of the line limit 80 chars
> diff -uprN u-boot-2009.03/board/embest/sbc2440ii/sbc2440ii.c
> u-boot-2009.03-PATCHED/board/embest/sbc2440ii/sbc2440ii.c
> --- u-boot-2009.03/board/embest/sbc2440ii/sbc2440ii.c 1970-01-01
> 00:00:00.000000000 +0000
> +++ u-boot-2009.03-PATCHED/board/embest/sbc2440ii/sbc2440ii.c
> 2009-03-25 21:05:14.171875000 +0000
> @@ -0,0 +1,127 @@
> +/*
> + * (C) Copyright 2002
> + * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
> + * Marius Groeger <mgroeger at sysgo.de>
> + *
> + * (C) Copyright 2002
> + * David Mueller, ELSOFT AG, <d.mueller at elsoft.ch>
> + *
> + * (C) Copyright 2005
> + * JinHua Luo, GuangDong Linux Center, <luo.jinhua at gd-linux.com>
> + *
> + * Modified for the Embest SBC2440-II by
> + * (C) Copyright 2009
> + * Kevin Morfitt, Fearnside Systems Ltd,
> <kevin.morfitt at fearnside-systems.co.uk>
> + *
> + * 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., 59 Temple Place, Suite 330, Boston,
> + * MA 02111-1307 USA
> + */
> +
> +#include <common.h>
> +#include <s3c2440.h>
> +
> +DECLARE_GLOBAL_DATA_PTR;
> +
> +static inline void delay (unsigned long loops)
> +{
> + __asm__ volatile ("1:\n"
> + "subs %0, %1, #1\n"
> + "bne 1b":"=r" (loops):"0" (loops));
> +}
please do this in the timer
> +
> +/* Configure the PLLs for MPLL = 400MHz, UPLL = 48MHz
> + The clock frequency ratios are set to 1:4:8 ie:
> + PCLK = 50MHz
> + HCLK = 100MHz
> + FCLK = 400MHz
> + */
> +/* The MPLL values. */
> +#define M_MDIV 0x5C
> +#define M_PDIV 1
> +#define M_SDIV 1
> +
> +/* The UPLL values. */
> +#define U_MDIV 0x38
> +#define U_PDIV 2
> +#define U_SDIV 2
> +
> +/*
> + * Miscellaneous platform dependent initialisations
> + */
> +
> +int board_init (void)
> +{
> + S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER();
> + S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();
> +
> + /* to reduce PLL lock time, adjust the LOCKTIME register */
> + clk_power->LOCKTIME = 0xFFFFFFFF;
please use proper accessor readx/writex
> +
> + /* configure UPLL */
> + clk_power->UPLLCON = ((U_MDIV << 12) + (U_PDIV << 4) + U_SDIV);
> +
> + /* some delay between UPLL and MPLL */
> + delay (8000);
> +
> + /* configure MPLL */
> + clk_power->MPLLCON = ((M_MDIV << 12) + (M_PDIV << 4) + M_SDIV);
> +
> + /* configure the GPIO */
> + gpio->GPACON = 0x007FFFFF;
> + gpio->GPBCON = 0x00055555;
> + gpio->GPBUP = 0x000007FF;
> + gpio->GPBDAT = 0x000001C0; /* Switch on LED1. */
> + gpio->GPCCON = 0xAAAAAAAA;
> + gpio->GPCUP = 0x0000FFFF;
> + gpio->GPDCON = 0xAAAAAAAA;
> + gpio->GPDUP = 0x0000FFFF;
> + gpio->GPECON = 0xAAAAA800;
> + gpio->GPEUP = 0x00001FFF;
> + gpio->GPFCON = 0x000055AA;
> + gpio->GPFUP = 0x000000FF;
> + gpio->GPGCON = 0xFD95FFBA;
> + gpio->GPGUP = 0x0000FFFF;
> + gpio->GPHCON = 0x0002FAAA;
> + gpio->GPHUP = 0x000007FF;
> + gpio->GPJCON = 0x02FAAAAA;
> + gpio->GPJUP = 0x00001FFF;
> +
> + gpio->EXTINT0 = 0x22222222;
> + gpio->EXTINT1 = 0x22222222;
> + gpio->EXTINT2 = 0x22222222;
> + gpio->EINTMASK = 0x00FFFFF0;
> +
> + /* arch number of SBC2440-II Board */
> + gd->bd->bi_arch_number = MACH_TYPE_SBC2440II;
> +
> + /* adress of boot parameters */
> + gd->bd->bi_boot_params = 0x30000100;
> +
> + icache_enable();
> + dcache_enable();
> +
> + return 0;
> +}
> +
> +int dram_init (void)
> +{
> + gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
> + gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
> +
> + return 0;
> +}
> diff -uprN u-boot-2009.03/board/embest/sbc2440ii/sbc2440ii_cmd.c
> u-boot-2009.03-PATCHED/board/embest/sbc2440ii/sbc2440ii_cmd.c
> --- u-boot-2009.03/board/embest/sbc2440ii/sbc2440ii_cmd.c 1970-01-01
> 00:00:00.000000000 +0000
> +++ u-boot-2009.03-PATCHED/board/embest/sbc2440ii/sbc2440ii_cmd.c
> 2009-03-25 21:05:37.984375000 +0000
> @@ -0,0 +1,61 @@
> +/*
> + * (C) Copyright 2009
> + * Kevin Morfitt, Fearnside Systems Ltd,
> <kevin.morfitt at fearnside-systems.co.uk>
> + *
> + * 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., 59 Temple Place, Suite 330, Boston,
> + * MA 02111-1307 USA
> + */
> +
> +#include <common.h>
> +#include <net.h>
> +
> +#if 0
> + #define DEBUGN printf
> +#else
> + #define DEBUGN(x, args ...) {}
> +#endif
please remove add use debug()
> +
> +static int get_file_tftp(struct cmd_tbl_s *cmftp, int flag, int argc,
> char *argv[]);
> +
> +U_BOOT_CMD(
> + tftp, 3, 0, get_file_tftp,
> + "tftp\t- Upload a file via TFTP",
> + "<address> <file name> - Upload <file name> to <address> via TFTP"
> +);
please move this file to common
add add a REAMDE
> +
> +static int get_file_tftp(struct cmd_tbl_s *cmftp, int flag, int argc,
> char *argv[])
> +{
> + load_addr = simple_strtoul(argv[1], NULL, 16);
> + copy_filename(BootFile, argv[2], sizeof (BootFile));
> + NetBootFileXferSize = 0;
> +
> + DEBUGN("TFTP: Filename: %s Address: 0x%08X\n", BootFile, (unsigned
> int)load_addr);
> +
> + if (NetLoop (TFTP) <= 0) {
> + printf("ERROR: tftp transfer failed\n");
> + return -1;
> + }
> +
> + if (NetBootFileXferSize == 0) {
> + printf("ERROR: Can't determine file size\n");
> + return -1;
> + }
> +
> + printf("File transfer succeeded - file size %lu bytes\n",
> NetBootFileXferSize);
> + return 0;
> +}
> diff -uprN u-boot-2009.03/board/embest/sbc2440ii/u-boot.lds
> u-boot-2009.03-PATCHED/board/embest/sbc2440ii/u-boot.lds
> --- u-boot-2009.03/board/embest/sbc2440ii/u-boot.lds 1970-01-01
> 00:00:00.000000000 +0000
> diff -uprN u-boot-2009.03/cpu/arm920t/s3c24x0/i2c.c
<snip>
please fix coding style first for a full review and please use git to generate
the patch
Best Regards,
J.
More information about the U-Boot
mailing list