Dear Łukasz Dałek, [ Joe, see the bottom of my babble here ]
> Signed-off-by: Łukasz Dałek <[email protected]> > --- > arch/arm/include/asm/mach-types.h | 1 + > board/h2200/Makefile | 51 ++++++++++ > board/h2200/h2200-header.S | 27 +++++ > board/h2200/h2200.c | 197 > +++++++++++++++++++++++++++++++++++++ board/h2200/h2200.h | > 28 +++++ > boards.cfg | 2 + > include/configs/h2200.h | 168 +++++++++++++++++++++++++++++++ > 7 files changed, 474 insertions(+), 0 deletions(-) > create mode 100644 board/h2200/Makefile > create mode 100644 board/h2200/h2200-header.S > create mode 100644 board/h2200/h2200.c > create mode 100644 board/h2200/h2200.h > create mode 100644 include/configs/h2200.h > > diff --git a/arch/arm/include/asm/mach-types.h > b/arch/arm/include/asm/mach-types.h index 2d5c3bc..b03f385 100644 > --- a/arch/arm/include/asm/mach-types.h > +++ b/arch/arm/include/asm/mach-types.h > @@ -74,6 +74,7 @@ extern unsigned int __machine_arch_type; > #define MACH_TYPE_IXDP2801 300 > #define MACH_TYPE_IQ31244 327 > #define MACH_TYPE_BAST 331 > +#define MACH_TYPE_H2200 341 > #define MACH_TYPE_H1940 347 > #define MACH_TYPE_ENP2611 356 > #define MACH_TYPE_S3C2440 362 How come it's not in the mach-types already? Was it removed? If so, define CONFIG_MACH_TYPE in your h2200.h (see m28evk.h for example) > diff --git a/board/h2200/Makefile b/board/h2200/Makefile > new file mode 100644 > index 0000000..39da114 > --- /dev/null > +++ b/board/h2200/Makefile > @@ -0,0 +1,51 @@ > +# > +# h2200 Support > +# > +# Copyright (C) 2012 Łukasz Dałek <[email protected]> Can we cut the crappy unicode and stick to ascii? [...] > + > + .org 0x40 > + .ascii "ECEC" ECEC ... looks familiar, what is it though? WinCE bootloader signature ? > + .org 0x1000 - 1 > + .byte 0x0 > diff --git a/board/h2200/h2200.c b/board/h2200/h2200.c > new file mode 100644 > index 0000000..d31c67f > --- /dev/null > +++ b/board/h2200/h2200.c > @@ -0,0 +1,197 @@ > +/* > + * iPAQ h2200 board configuration > + * > + * Copyright (C) 2012 Łukasz Dałek <[email protected]> > + * > + * 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 <asm/arch/pxa.h> > +#include <asm/arch/pxa-regs.h> > +#include <asm/io.h> > +#include "h2200.h" > + > +DECLARE_GLOBAL_DATA_PTR; > + > +#ifdef CONFIG_H2200_USBETH > +int board_eth_init(bd_t *bis) > +{ > + usb_eth_initialize(bis); > + return 0; > +} > +#endif > + > +int board_early_init_f(void) > +{ > + /* Enable serial */ > + setbits_le32(GPDR0, 1 << 24); > + writel(1 << 24, GPSR0); Shitty ... doesn't the board do GPIO setup in arch/arm/cpu/pxa/pxa2xx.c already? GPIOlib driver would come handy (see drivers/gpio/) > + /* Enable serial transreceiver */ > + setbits_le32(GPDR2, 1 << 16); > + writel(1 << 16, GPSR2); > + > + return 0; > +} > + > +int board_init(void) > +{ > + /* We have RAM, disable cache */ > + dcache_disable(); > + icache_disable(); > + /* arch number of Lubbock-Board */ Lubbock, yea ... > + gd->bd->bi_arch_number = MACH_TYPE_H2200; > + > + /* adress of boot parameters */ > + gd->bd->bi_boot_params = 0xa0000100; > + > +#if defined(CONFIG_H2200_USBETH) > + udc_disconnect(); > + mdelay(500); Comment won't hurt here > +#endif > + > + return 0; > +} > + > +/* > + * iPAQ h2200 has two stage bootloader. > + * We only replace 2nd stage, so u-boot needs to be > + * adpopted to the way how 1st stage bootloader works. > + * Firstly, code needs to have first 4 bytes equal to > + * 0xea0003fe (arm instruction b 0x1000) GCC/GAS won't generate it so you use .word ? > and at the offset > + * 0x40 ascii characters 'ECEC', secondly 1st stage > + * loads code from flash into SDRAM at address 0xa0040000 > + * so all instructions which reinitializes memory > + * controller have to be disabled. > + */ > + > +static inline void writelrb(uint32_t val, uint32_t addr) Replace this with clrsetbits_le32() > +{ > + writel(val, addr); > + asm volatile("" : : : "memory"); > + readl(addr); > + asm volatile("" : : : "memory"); > +} > + > +static void h2200_pxa2xx_dram_init(void) Why do you duplicate it ?! [...] > +} > + > +int dram_init(void) > +{ > + h2200_pxa2xx_dram_init(); > + gd->ram_size = PHYS_SDRAM_1_SIZE; > + return 0; > +} > + > +void dram_init_banksize(void) > +{ > + gd->bd->bi_dram[0].start = PHYS_SDRAM_1; > + gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE; Isn't there weak alias for this function in arch/arm/lib/board.c that does exactly this? [...] > diff --git a/include/configs/h2200.h b/include/configs/h2200.h > new file mode 100644 > index 0000000..fb4ec05 > --- /dev/null > +++ b/include/configs/h2200.h > @@ -0,0 +1,168 @@ Missing license header. > +#ifndef __CONFIG_H > +#define __CONFIG_H > + > +#define CONFIG_CPU_PXA25X 1 > +#define CONFIG_BOARD_H2200 1 > + > +#define CONFIG_SYS_NO_FLASH 1 > + > +#define CONFIG_SYS_HZ 1000 > + > +#define CONFIG_NR_DRAM_BANKS 1 > +#define PHYS_SDRAM_1 0xa0000000 /* SDRAM Bank #1 */ > +#define PHYS_SDRAM_1_SIZE 0x04000000 /* 64 MB */ > + > +#define CONFIG_SYS_DRAM_BASE PHYS_SDRAM_1 > +#define CONFIG_SYS_DRAM_SIZE PHYS_SDRAM_1_SIZE > + > +#define CONFIG_SYS_SDRAM_BASE PHYS_SDRAM_1 > +#define CONFIG_SYS_INIT_SP_ADDR 0xfffff800 > + > +#define CONFIG_ENV_SIZE 0x00040000 > +#define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + 128*1024) > + > +#define CONFIG_ENV_IS_NOWHERE 1 > +#define CONFIG_SYS_MAXARGS 16 > +#define CONFIG_SYS_LOAD_ADDR 0xa3000000 /* default load address */ > + > +/* > + * iPAQ 1st stage bootloader loads 2nd stage bootloader > + * at address 0xa0040000 but bootloader requires header > + * which is 0x1000 long. > + * > + * --- Header begin --- > + * .word 0xea0003fe ; b 0x1000 > + * > + * .org 0x40 > + * .ascii "ECEC" > + * > + * .org 0x1000 > + * --- Header end --- > + */ > + > +#define CONFIG_SYS_TEXT_BASE 0xa0041000 > +#define CONFIG_BOARD_EARLY_INIT_F 1 Just define it, not set to 1 [...] > +#define CONFIG_BAUDRATE 115200 > +#define CONFIG_SYS_BAUDRATE_TABLE { 115200 } 115200 only? > +/* > + * USB device configuration > + */ > + > +#define CONFIG_SYS_CONSOLE_IS_IN_ENV 1 > +#define CONFIG_USB_DEV_PULLUP_GPIO 33 > +/* USB VBUS GPIO 3 */ > + > +#define CONFIG_CMD_LOADB 1 > +#define CONFIG_CMD_IMPORTENV 1 > +#define CONFIG_CMD_SOURCE 1 > +#define CONFIG_CMD_RUN 1 > +#define CONFIG_CMD_IMI 1 > + > +/* Monitor Command Prompt */ > +#define CONFIG_SYS_PROMPT "> " > + > +/* Console I/O Buffer Size */ > +#define CONFIG_SYS_CBSIZE 256 > + > +/* Print Buffer Size */ > +#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + \ > + sizeof(CONFIG_SYS_PROMPT) + 16) > + > +#define CONFIG_BOOTARGS "root=/dev/ram0 ro console=ttyS0,115200n8" > + > +#ifdef CONFIG_H2200_USBETH > +# define CONFIG_USB_ETH_SUBSET 1 > +# define CONFIG_SYS_HUSH_PARSER 1 > +# define CONFIG_SYS_PROMPT_HUSH_PS2 "$ " > + > +# define CONFIG_CMD_NET 1 > +# define CONFIG_CMD_PING 1 > + > +# define CONFIG_BOOTDELAY 2 > + > +# define CONFIG_BOOTCOMMAND \ > + "setenv downloaded 0 ; while test $downloaded -eq 0 ; do " \ > + "if bootp ; then setenv downloaded 1 ; fi ; done ; " \ > + "source :script ; " \ > + "bootm ; " > + > +# define CONFIG_USB_GADGET_PXA2XX 1 > + > +# define CONFIG_FIT 1 > +# define CONFIG_SETUP_MEMORY_TAGS 1 > +# define CONFIG_CMDLINE_TAG 1 > +# define CONFIG_INITRD_TAG 1 > + > +# define CONFIG_USB_ETHER 1 > +# define CONFIG_USBNET_DEV_ADDR "de:ad:be:ef:00:01" > +# define CONFIG_USBNET_HOST_ADDR "de:ad:be:ef:00:02" Definitelly not, any mac address setting should not be present, Joe ? > +# define CONFIG_EXTRA_ENV_SETTINGS \ > + "stdin=serial\0" \ > + "stdout=serial\0" \ > + "stderr=serial\0" > +#endif > + > +#endif /* __CONFIG_H */ _______________________________________________ U-Boot mailing list [email protected] http://lists.denx.de/mailman/listinfo/u-boot

