summaryrefslogtreecommitdiff
path: root/packages/u-boot/u-boot-1.1.4/u-boot-base.patch
diff options
context:
space:
mode:
Diffstat (limited to 'packages/u-boot/u-boot-1.1.4/u-boot-base.patch')
-rw-r--r--packages/u-boot/u-boot-1.1.4/u-boot-base.patch913
1 files changed, 0 insertions, 913 deletions
diff --git a/packages/u-boot/u-boot-1.1.4/u-boot-base.patch b/packages/u-boot/u-boot-1.1.4/u-boot-base.patch
deleted file mode 100644
index d866c1c26e..0000000000
--- a/packages/u-boot/u-boot-1.1.4/u-boot-base.patch
+++ /dev/null
@@ -1,913 +0,0 @@
---- a/MAKEALL
-+++ a/MAKEALL
-@@ -146,8 +146,8 @@
-
- LIST_pxa=" \
- adsvix cerf250 cradle csb226 \
-- innokom lubbock pxa255_idp wepep250 \
-- xaeniax xm250 xsengine \
-+ gumstix innokom lubbock pxa255_idp \
-+ wepep250 xaeniax xm250 xsengine \
- "
-
- LIST_ixp="ixdp425"
---- a/Makefile
-+++ a/Makefile
-@@ -121,7 +121,6 @@
- # The "tools" are needed early, so put this first
- # Don't include stuff already done in $(LIBS)
- SUBDIRS = tools \
-- examples \
- post \
- post/cpu
- .PHONY : $(SUBDIRS)
-@@ -1078,6 +1077,9 @@
- csb226_config : unconfig
- @./mkconfig $(@:_config=) arm pxa csb226
-
-+gumstix_config : unconfig
-+ @./mkconfig $(@:_config=) arm pxa gumstix
-+
- innokom_config : unconfig
- @./mkconfig $(@:_config=) arm pxa innokom
-
---- a/board/gumstix/Makefile
-+++ a/board/gumstix/Makefile
-@@ -0,0 +1,47 @@
-+#
-+# (C) Copyright 2004
-+# Craig Hughes, Gumstix Inc, <craig@gumstix.com>
-+#
-+# 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 = lib$(BOARD).a
-+
-+OBJS := gumstix.o
-+SOBJS := memsetup.o
-+
-+$(LIB): $(OBJS) $(SOBJS)
-+ $(AR) crv $@ $^
-+
-+clean:
-+ rm -f $(SOBJS) $(OBJS)
-+
-+distclean: clean
-+ rm -f $(LIB) core *.bak .depend
-+
-+#########################################################################
-+
-+.depend: Makefile $(SOBJS:.o=.S) $(OBJS:.o=.c)
-+ $(CC) -M $(CPPFLAGS) $(SOBJS:.o=.S) $(OBJS:.o=.c) > $@
-+
-+-include .depend
-+
-+#########################################################################
---- a/board/gumstix/config.mk
-+++ a/board/gumstix/config.mk
-@@ -0,0 +1,13 @@
-+#
-+# This is config used for compilation of Gumstix sources
-+#
-+# You might change location of U-Boot in memory by setting right TEXT_BASE.
-+# This allows for example having one copy located at the end of ram and stored
-+# in flash device and later on while developing use other location to test
-+# the code in RAM device only.
-+#
-+
-+TEXT_BASE = 0xA3F00000
-+ifeq ($(GUMSTIX_400MHZ),y)
-+ PLATFORM_CPPFLAGS += -DCONFIG_GUMSTIX_CPUSPEED_400
-+endif
---- a/board/gumstix/early_refresh.S
-+++ a/board/gumstix/early_refresh.S
-@@ -0,0 +1,50 @@
-+#define COTULLA_CP15_B1_VAL 0x69052903
-+ /* Workaround for early termination of SDRAM autorefresh on exit from
-+ processor's sleep state in B1 stepping of XPA250/210. (sighting 27004)
-+ Need first forced refresh within 8 usec.
-+
-+ - Code snippet received from validation team, slightly modified
-+
-+ Notes: - MMU assumed to be inactive at this time, so use physical addresses
-+ - Eboot didn't boot on A1 stepping without the leading exclusion,
-+ so the core code must be restricted to B1 only.
-+ */
-+
-+ mrc p15, 0, r9, c0, c0, 0 @ Grab CPU ID
-+ ldr r3, =COTULLA_CP15_B1_VAL @ Load the B1 CPU ID value
-+ cmp r9, r3
-+ bne EARLY_REFRESH_DONE
-+
-+ @ Eboot loads BIN image into RAM,
-+ @ turns off the MMU and then jumps here.
-+ @ If we're already executing from RAM, don't mess with it
-+
-+ mov r0, #0x400000 @ Just at the end of boot device addressing space
-+ cmp r0, pc @ Are we executing from boot flash space?
-+ bls EARLY_REFRESH_DONE @ if outside that space, skip this.
-+
-+
-+ /*
-+ Need to set MDREFR:DRI field to 0 for this to work. Side effect is
-+ picking the MEMCLK:SDCLK ratio. The specified value (0x038FF000)
-+ sets that ratio as 2:1.
-+ This corresponds to the defaults after reset, including sleep reset.
-+ 0x038ff000 == MDREFR_K2FREE | MDREFR_K1FREE | MDREFR_K0FREE |
-+ MDREFR_K2DB2 | MDREFR_K2RUN |
-+ MDREFR_K1DB2 | MDREFR_K1RUN | MDREFR_E1PIN |
-+ MDREFR_K0DB2 | MDREFR_K0RUN | MDREFR_E0PIN
-+ */
-+
-+ ldr r0, =0X48000004 @ Memory controller base physical addr+ REFR Offset.
-+ mov r1, #0x03800000
-+ orr r1, r1, #0x000FF000
-+ str r1, [r0]
-+
-+ mov r0, #CFG_DRAM_BASE
-+ ldr r1, [r0] @ CAUSES the 1st row refresh to all partitions
-+ mov r2, #0x2000 @ 8k loo
-+1:
-+ ldr r1, [r0] @ CAUSES a row refresh to all partitions
-+ subs r2, r2, #0x1
-+ bpl 1b @ while >= 0
-+EARLY_REFRESH_DONE:
---- a/board/gumstix/gumstix.c
-+++ a/board/gumstix/gumstix.c
-@@ -0,0 +1,134 @@
-+/*
-+ * Copyright (C) 2004 Gumstix, Inc.
-+ *
-+ * 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
-+ *
-+ * Written by Craig Hughes <craig@gumstix.com>
-+ *
-+ */
-+
-+#include <common.h>
-+#include <asm/arch/pxa-regs.h>
-+
-+int board_init( void ){
-+ DECLARE_GLOBAL_DATA_PTR;
-+
-+ gd->bd->bi_arch_number = 373;
-+ gd->bd->bi_boot_params = 0xa0000100;
-+
-+ PSSR = 0x20;
-+
-+ GPDR1 = CFG_GPDR1_VAL;
-+ GAFR1_L = CFG_GAFR1_L_VAL;
-+
-+ return 0;
-+}
-+
-+int dram_init( void ){
-+ DECLARE_GLOBAL_DATA_PTR;
-+
-+#if ( CONFIG_NR_DRAM_BANKS > 0 )
-+ gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
-+ gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
-+#endif
-+#if ( CONFIG_NR_DRAM_BANKS > 1 )
-+ gd->bd->bi_dram[1].start = PHYS_SDRAM_2;
-+ gd->bd->bi_dram[1].size = PHYS_SDRAM_2_SIZE;
-+#endif
-+#if ( CONFIG_NR_DRAM_BANKS > 2 )
-+ gd->bd->bi_dram[2].start = PHYS_SDRAM_3;
-+ gd->bd->bi_dram[2].size = PHYS_SDRAM_3_SIZE;
-+#endif
-+#if ( CONFIG_NR_DRAM_BANKS > 3 )
-+ gd->bd->bi_dram[3].start = PHYS_SDRAM_4;
-+ gd->bd->bi_dram[3].size = PHYS_SDRAM_4_SIZE;
-+#endif
-+
-+ return 0;
-+}
-+
-+extern flash_info_t flash_info[]; /* info for FLASH chips */
-+
-+static u8 system_serial[8];
-+
-+void get_board_serial(struct tag_serialnr *serialnr)
-+{
-+ serialnr->high = (system_serial[0]<<24) + (system_serial[1]<<16) + (system_serial[2]<<8) + system_serial[3];
-+ serialnr->low = (system_serial[4]<<24) + (system_serial[5]<<16) + (system_serial[6]<<8) + system_serial[7];
-+}
-+
-+/*
-+ * This hash function converts a structured 64-bit number to an unstructured, more bit-random 64-bit number.
-+ * The purpose is to provide more randomness for each bit of the system serial number, since we're going to
-+ * be using some of its bits (by extraction) as the varying part of an ethernet MAC. So more random bits =
-+ * less chance of collision
-+ *
-+ * The has algorithm is basically going to work by looping through each bit in the incoming number. If that bit
-+ * is set, then we'll XOR our result with a bitmask; if not, then we leave the result and continue the loop.
-+ * Each time through the loop, we rotate the bitmask by one bit position, so that each bit of the incoming number
-+ * will affect half of the bits of the result, but which bits it modifies are unique to that incoming bit position
-+ */
-+void gumstix_serial_hash(u8 *buf)
-+{
-+ unsigned int bit_number,byte;
-+ // Starting bitmask is 0b0101001100001111000000001111111100000000000000001111111111111111
-+ u8 xor_mask[] = { 0x53, 0x0F, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF };
-+
-+ u8 result[8];
-+
-+ // Loop through all 64 bits
-+ for(bit_number=0; bit_number<64; bit_number++)
-+ {
-+ // If the given bit is set in the incoming buffer
-+ if(buf[bit_number/8] & (1 << (bit_number % 8)))
-+ {
-+ // XOR the masked bits of the result
-+ for(byte=0;byte<8;byte++) result[byte] ^= xor_mask[byte];
-+ }
-+
-+ // Now rotate the bitmask
-+ for(byte=0;byte<8;byte++)
-+ {
-+ // Shift the byte up by one bit
-+ xor_mask[byte] = xor_mask[byte]<<1;
-+ // Take the most significant bit of the previous byte and tack that on the bottom
-+ // Special case for byte==0 when we take the MSB of the top byte instead
-+ xor_mask[byte] |= xor_mask[(byte == 0 ? 7 : byte-1)]>>7;
-+ }
-+ }
-+
-+ // Copy result out
-+ for(byte=0;byte<8;byte++) buf[byte]=result[byte];
-+}
-+
-+int misc_init_r(void)
-+{
-+ unsigned char serial[17];
-+
-+ flash_read_user_serial(flash_info, (void *)system_serial, 0, 8);
-+ if(0xff == (system_serial[0] & system_serial[1] & system_serial[2] & system_serial[3] &
-+ system_serial[4] & system_serial[5] & system_serial[6] & system_serial[7]))
-+ {
-+ // User serial number is all ones, so use the factory serial number
-+ flash_read_factory_serial(flash_info, (void *)system_serial, 0, 8);
-+ gumstix_serial_hash(system_serial);
-+ }
-+
-+ sprintf(serial,"%02lX%02lX%02lX%02lX%02lX%02lX%02lX%02lX",system_serial[0],system_serial[1],system_serial[2],system_serial[3],
-+ system_serial[4],system_serial[5],system_serial[6],system_serial[7]);
-+
-+ setenv("serial#",serial);
-+}
---- a/board/gumstix/memsetup.S
-+++ a/board/gumstix/memsetup.S
-@@ -0,0 +1,229 @@
-+#include <config.h>
-+#include <version.h>
-+#include <asm/arch/pxa-regs.h>
-+
-+
-+.macro CPWAIT
-+ mrc p15,0,r0,c2,c0,0
-+ mov r0,r0
-+ sub pc,pc,#4
-+.endm
-+
-+
-+.globl lowlevel_init
-+lowlevel_init:
-+
-+
-+ cmp pc, #0xa0000000 /** test if we're in SDRAM **/
-+ bhi end_of_memsetup /** if we are, then jump **/
-+
-+ /* First, setup GPIOs */
-+
-+ ldr r0, =GPSR0
-+ ldr r1, =CFG_GPSR0_VAL
-+ str r1, [r0]
-+
-+ ldr r0, =GPSR1
-+ ldr r1, =CFG_GPSR1_VAL
-+ str r1, [r0]
-+
-+ ldr r0, =GPSR2
-+ ldr r1, =CFG_GPSR2_VAL
-+ str r1, [r0]
-+
-+ ldr r0, =GPCR0
-+ ldr r1, =CFG_GPCR0_VAL
-+ str r1, [r0]
-+
-+ ldr r0, =GPCR1
-+ ldr r1, =CFG_GPCR1_VAL
-+ str r1, [r0]
-+
-+ ldr r0, =GPCR2
-+ ldr r1, =CFG_GPCR2_VAL
-+ str r1, [r0]
-+
-+ ldr r0, =GPDR0
-+ ldr r1, =CFG_GPDR0_VAL
-+ str r1, [r0]
-+
-+ ldr r0, =GPDR1
-+ ldr r1, =CFG_GPDR1_VAL
-+ str r1, [r0]
-+
-+ ldr r0, =GPDR2
-+ ldr r1, =CFG_GPDR2_VAL
-+ str r1, [r0]
-+
-+ ldr r0, =GAFR0_L
-+ ldr r1, =CFG_GAFR0_L_VAL
-+ str r1, [r0]
-+
-+ ldr r0, =GAFR0_U
-+ ldr r1, =CFG_GAFR0_U_VAL
-+ str r1, [r0]
-+
-+ ldr r0, =GAFR1_L
-+ ldr r1, =CFG_GAFR1_L_VAL
-+ str r1, [r0]
-+
-+ ldr r0, =GAFR1_U
-+ ldr r1, =CFG_GAFR1_U_VAL
-+ str r1, [r0]
-+
-+ ldr r0, =GAFR2_L
-+ ldr r1, =CFG_GAFR2_L_VAL
-+ str r1, [r0]
-+
-+ ldr r0, =GAFR2_U
-+ ldr r1, =CFG_GAFR2_U_VAL
-+ str r1, [r0]
-+
-+ ldr r0, =PSSR
-+ ldr r1, =CFG_PSSR_VAL
-+ str r1, [r0]
-+
-+
-+ /* The procedure below uses sample code generated by the Intel PXA250 Memory
-+ * Configuration Tool [http://appzone.intel.com/pcg/pxa250/memory/] which has
-+ * then been modified manually while following the documentation in
-+ * "Intel PXA255 Process Developer's Manual" [order #278693-002]
-+ * Chapter 6.11 - Hardware, Watchdog, or Sleep Reset Operation */
-+
-+ /* Step 1: After hardware reset, complete a power-on wait of 200us to allow clocks to stabilize */
-+
-+ ldr r3, =OSCR /* reset the OS Timer Count to zero */
-+ mov r2, #0
-+ str r2, [r3]
-+ ldr r4, =0x300 /* really 0x2E1 is about 200usec, so 0x300 should be plenty */
-+10:
-+ ldr r2, [r3]
-+ cmp r4, r2
-+ bgt 10b
-+
-+ /* Step 1a: Write MSC0, MSC1, MSC2 */
-+ ldr r3, =MSC0 /* Configures /CS0 and /CS1 */
-+ ldr r2, =0x128C26AB /* Generated value */
-+ str r2, [r3]
-+ ldr r2, [r3] /* the MSC register should be read after it is written with */
-+ /* a new value before an access to the memory is attempted. */
-+ /* (see MSC section of manual) */
-+ ldr r3, =MSC1 /* /CS2 and /CS3 */
-+ ldr r2, =0x0000128C /* Generated value */
-+ str r2, [r3]
-+ ldr r2, [r3]
-+
-+ /* Step 1b: Write MECR, MCMEM0, MCMEM1, MCATT0, MCATT1, MCIO0, MCIO1 (Skip on gumstix) */
-+ /* Step 1c: Write MDREFR:K0RUN and MDREFR:E0PIN. Configure MDREFR:K0DB2. Retain
-+ * the current values of MDREFR:APD and MDREFR:SLFRSH. MDREFR:DRI must
-+ * contain a valid value. Deassert MDREFR:KxFREE. (Skip on gumstix) */
-+
-+ ldr r3, =MDREFR
-+ ldr r2, [r3] /* read MDREFR value */
-+
-+ ldr r1, =0xfff
-+ bic r2, r2, r1 /* Clear DRI -- INTEL TOOL LEAVES THIS STEP OUT!! */
-+ orr r2, r2, #0x018 /* configure a valid SDRAM Refresh Interval (DRI) */
-+ str r2, [r3]
-+
-+ /* Step 2: Configure Synchronous Static memory (Skip on gumstix) */
-+
-+ /* Step 4: In systems that contain SDRAM, transition the SDRAM controller through the following state sequence:
-+ * a. self-refresh
-+ * b. power-down
-+ * c. PWRDNX
-+ * d. NOP */
-+
-+ orr r2, r2, #0x00010000 /* assert K1RUN for SDCLK1 */
-+ bic r2, r2, #0x000A4000 /* clear K0DB2, K1DB2 and K2DB2 */
-+ str r2, [r3] /* change from "self-refresh and clock-stop" to "self-refresh" state */
-+
-+ bic r2, r2, #0x00400000 /* clear SLFRSH bit field */
-+ str r2, [r3] /* change from "self-refresh" to "Power-down" state */
-+
-+ orr r2, r2, #0x00008000 /* set the E1PIN bit field */
-+ str r2, [r3] /* change from "Power-down" to "PWRDNX" state */
-+
-+ nop /* no action is required to change from "PWRDNX" to "NOP" state */
-+
-+ /* Step 4f: Write MDCNFG (with enable bits deasserted), MDCNFG:DE3:2,1:0 set to 0. */
-+
-+ ldr r3, =MDCNFG /* Load the SDRAM Configuration register. Must not be enabled yet. */
-+ ldr r2, =0x000019C8 /* Value from Intel tool */
-+ str r2, [r3] /* Write to MDCNFG register */
-+
-+ /* Step 5: For systems that contain SDRAM, wait a specified NOP power-up waiting period required by
-+ * the SDRAMs to ensure the SDRAMs receive a stable clock with a NOP condition */
-+
-+ ldr r3, =OSCR /* reset the OS Timer Count to zero */
-+ mov r2, #0
-+ str r2, [r3]
-+ ldr r4, =0x300 /* really 0x2E1 is about 200usec, so 0x300 should be plenty */
-+20:
-+ ldr r2, [r3]
-+ cmp r4, r2
-+ bgt 20b
-+
-+ /* Step 6: Ensure the data cache is disabled -- should not be needed out of reset, but best to be safe*/
-+
-+ mov r0, #0x78 /* turn everything off */
-+ mcr p15, 0, r0, c1, c0, 0 /* caches off, MMU off, etc. */
-+
-+ CPWAIT /* wait for co-processor */
-+
-+ /* Step 7: On a hardware reset in systems that contain SDRAM, trigger the specified number (typically
-+ eight) of refresh cycles by attempting non-burst read or write accesses to any disabled
-+ SDRAM bank. Each such access causes a simultaneous CBR refresh cycles for all four banks,
-+ which causes a pass through the CBR state and back to NOP. On the first pass, the PALL state
-+ occurs before the CBR state. */
-+
-+ ldr r3, =PHYS_SDRAM_1
-+ mov r2, #9 /* now must do 9 (!) refresh or CBR commands before the first access */
-+CBR_refresh1:
-+ str r2, [r3]
-+ subs r2, r2, #1
-+ bne CBR_refresh1
-+
-+ /* Step 8: Can re-enable DCACHE if it was disabled above (Skip on gumstix) */
-+
-+ /* Step 9: Enable SDRAM partitions */
-+
-+ ldr r3, =MDCNFG /* sdram config -- sdram enable */
-+ ldr r2, [r3]
-+ orr r2, r2, #0x00000001 /* enable partition 0 only */
-+ str r2, [r3] /* write to MDCNFG */
-+
-+ /* Step 10: In systems containing SDRAM, write the MDMRS register to trigger an MRS command to all
-+ * enabled banks of SDRAM. For each SDRAM partition pair that has one or both partitions
-+ * enabled, this forces a pass through the MRS state and back to NOP. The CAS latency must be
-+ * the only variable option and is derived from the value programmed in the
-+ * MDCNFG:MDTC0,2 fields. The burst type is programmed to sequential and the length is set
-+ * to four. */
-+
-+ ldr r3, =MDMRS /* write the MDMRS */
-+ ldr r2, =0x00020022 /* the writable bits will be written as a 0 */
-+ str r2, [r3]
-+
-+ /* Step 11: (optional) Enable auto-power-down */
-+
-+ ldr r3, =MDREFR /* enable auto-power-down */
-+ ldr r2, [r3]
-+ orr r2, r2, #0x00100000 /* set the APD bit */
-+ str r2, [r3] /* write to MDREFR */
-+
-+ /* enable the 32Khz oscillator for RTC and PowerManager */
-+
-+ ldr r1, =OSCC
-+ mov r2, #OSCC_OON
-+ str r2, [r1]
-+
-+ /* NOTE: spin here until OSCC.OOK get set, meaning the PLL */
-+ /* has settled. */
-+/*60:
-+ ldr r2, [r1]
-+ ands r2, r2, #1
-+ beq 60b */
-+
-+end_of_memsetup:
-+ mov pc, lr
-+
---- a/board/gumstix/u-boot.lds
-+++ a/board/gumstix/u-boot.lds
-@@ -0,0 +1,55 @@
-+/*
-+ * (C) Copyright 2004
-+ * Craig Hughes, Gumstix Inc, <craig@gumstix.com>
-+ *
-+ * 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
-+ */
-+
-+OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-+OUTPUT_ARCH(arm)
-+ENTRY(_start)
-+SECTIONS
-+{
-+ . = 0x00000000;
-+
-+ . = ALIGN(4);
-+ .text :
-+ {
-+ cpu/pxa/start.o (.text)
-+ board/gumstix/memsetup.o (.text)
-+ *(.text)
-+ }
-+ . = ALIGN(4);
-+ .rodata : { *(.rodata) }
-+
-+ . = ALIGN(4);
-+ .data : { *(.data) }
-+
-+ . = ALIGN(4);
-+ .got : { *(.got) }
-+
-+ __u_boot_cmd_start = .;
-+ .u_boot_cmd : { *(.u_boot_cmd) }
-+ __u_boot_cmd_end = .;
-+
-+ . = ALIGN(4);
-+ __bss_start = .;
-+ .bss : { *(.bss) }
-+ _end = .;
-+}
---- a/cpu/pxa/start.S
-+++ a/cpu/pxa/start.S
-@@ -91,6 +91,7 @@
- .word 0x0badc0de
- #endif
-
-+.space 0x800 /* JTAG install interrupt vectors over low memory in instruction cache */
-
- /****************************************************************************/
- /* */
-@@ -104,6 +105,37 @@
- orr r0,r0,#0x13
- msr cpsr,r0
-
-+/* This special code just unprotects all of flash, then erases it */
-+// mov r0, #0x1f /* Loop over all blocks 0x1f-0x00*/
-+//flash_wipe_main_loop:
-+// mov r1, r0, LSL #0x11 /* Convert bank number to start address */
-+// mov r2, #0x60 /* Clear lock bit setup */
-+// strh r2, [r1]
-+// nop
-+// mov r2, #0xd0 /* Clear lock bits confirm */
-+// strh r2, [r1]
-+// nop
-+//flash_clear_wait_loop:
-+// ldrh r2, [r1]
-+// tst r2, #0x80 /* Check SR.7 */
-+// bne flash_clear_wait_loop
-+//
-+// mov r2, #0x20 /* Block erase command */
-+// strh r2, [r1]
-+// nop
-+// mov r2, #0xd0 /* Block erase confirm */
-+// strh r2, [r1]
-+// nop
-+//flash_erase_wait_loop:
-+// ldrh r2, [r1]
-+// tst r2, #0x80
-+// bne flash_clear_wait_loop
-+//
-+// teq r0, #0
-+// subne r0, r0, #1
-+// bne flash_wipe_main_loop
-+/* End of flash-nuking code */
-+
- /*
- * we do sys-critical inits only at reboot,
- * not when booting from ram!
-@@ -113,7 +145,7 @@
- #endif
-
- relocate: /* relocate U-Boot to RAM */
-- adr r0, _start /* r0 <- current position of code */
-+ adrl r0, _start /* r0 <- current position of code */
- ldr r1, _TEXT_BASE /* test if we run from flash or RAM */
- cmp r0, r1 /* don't reloc during debug */
- beq stack_setup
---- a/include/configs/gumstix.h
-+++ a/include/configs/gumstix.h
-@@ -0,0 +1,259 @@
-+/*
-+ * Copyright (C) 2004 Gumstix, Inc.
-+**
-+** Gumstix u-boot 1.1.1
-+ *
-+ * 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
-+ *
-+ * Written by Craig Hughes <craig@gumstix.com> 2004
-+ *
-+ */
-+
-+#ifndef __CONFIG_H
-+#define __CONFIG_H
-+
-+#define CONFIG_PXA250 /* this is an PXA250 CPU */
-+#define CONFIG_GUMSTIX /* config for gumstix board */
-+#undef CONFIG_USE_IRQ /* don't need use IRQ/FIQ */
-+#ifndef __LITTLE_ENDIAN
-+#define __LITTLE_ENDIAN 1234 /* For some reason this is not defined */
-+#endif
-+
-+/*
-+ * Select serial console configuration FFUART is default on G dev board
-+ */
-+
-+#define CONFIG_FFUART
-+#define CONFIG_BAUDRATE 115200
-+#define CONFIG_SILENT_CONSOLE
-+
-+/*
-+ * Definition of u-boot build in commands. Check out CONFIG_CMD_DFL if
-+ * neccessary in include/cmd_confdefs.h file. (Un)comment for getting
-+ * functionality or size of u-boot code.
-+ */
-+
-+#define CONFIG_COMMANDS ( CONFIG_CMD_DFL \
-+ & ~CFG_CMD_CDP \
-+ & ~CFG_CMD_IDE \
-+ & ~CFG_CMD_IMLS \
-+ & ~CFG_CMD_IRQ \
-+ & ~CFG_CMD_PCMCIA \
-+ & ~CFG_CMD_SETGETDCR \
-+ | CFG_CMD_AUTOSCRIPT \
-+ | CFG_CMD_BDI \
-+ | CFG_CMD_BOOTD \
-+ | CFG_CMD_CACHE \
-+ | CFG_CMD_CONSOLE \
-+ | CFG_CMD_DHCP \
-+ | CFG_CMD_DIAG \
-+ | CFG_CMD_ECHO \
-+ | CFG_CMD_ELF \
-+ | CFG_CMD_ENV \
-+ | CFG_CMD_FAT \
-+ | CFG_CMD_FLASH \
-+ | CFG_CMD_IMI \
-+ | CFG_CMD_ITEST \
-+ | CFG_CMD_JFFS2 \
-+ | CFG_CMD_LOADB \
-+ | CFG_CMD_LOADS \
-+ | CFG_CMD_MEMORY \
-+ | CFG_CMD_MISC \
-+ | CFG_CMD_MMC \
-+ | CFG_CMD_NET \
-+ | CFG_CMD_NFS \
-+ | CFG_CMD_PING \
-+ | CFG_CMD_REGINFO \
-+ | CFG_CMD_RUN \
-+ | CFG_CMD_SAVES \
-+ | CFG_CMD_SDRAM \
-+ )
-+
-+
-+#define CONFIG_NETCONSOLE
-+#define CONFIG_NET_MULTI
-+
-+#define CFG_DEVICE_NULLDEV
-+
-+#include <cmd_confdefs.h>
-+
-+/*
-+ * Boot options. Setting delay to -1 stops autostart count down.
-+ * NOTE: Sending parameters to kernel depends on kernel version and
-+ * 2.4.19-rmk6-pxa1 patch used while my u-boot coding didn't accept
-+ * parameters at all! Do not get confused by them so.
-+*/
-+
-+#define CONFIG_IDENT_STRING "\n\n*** Welcome to Gumstix ***"
-+#define CONFIG_MISC_INIT_R /* misc_init_r function in gumstix sets board serial number */
-+
-+#define CONFIG_BOOTFILE boot/uImage
-+#define CONFIG_BOOTARGS "console=ttyS0,115200n8 root=1f01 rootfstype=jffs2 reboot=cold,hard"
-+#define CONFIG_BOOTCOMMAND "icache on;setenv stderr nulldev; setenv stdout nulldev; if mmcinit && fatload mmc 0 a2000000 gumstix-factory.script; then setenv stdout serial; setenv stderr serial; echo Found gumstix-factory script...; autoscr; else setenv stdout serial;setenv stderr serial;fsload && bootm; fi"
-+#define CONFIG_BOOTDELAY 2 /* in seconds */
-+#define CONFIG_EXTRA_ENV_SETTINGS "verify=no"
-+#define CFG_HUSH_PARSER
-+#define CFG_AUTO_COMPLETE
-+#define CFG_PROMPT_HUSH_PS2 "> "
-+
-+/*
-+ * General options for u-boot. Modify to save memory foot print
-+ */
-+
-+#define CFG_LONGHELP /* undef saves memory */
-+#define CFG_PROMPT "GUM> " /* prompt string */
-+#define CFG_CBSIZE 512 /* console I/O buffer */
-+#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* print buffer size */
-+#define CFG_MAXARGS 16 /* max command args */
-+#define CFG_BARGSIZE CFG_CBSIZE /* boot args buf size */
-+
-+#define CONFIG_CRC32_VERIFY
-+#define CONFIG_LOOPW
-+#define CONFIG_MX_CYCLIC
-+
-+/*
-+ * * SMSC91C111 Network Card
-+ * */
-+#define CONFIG_DRIVER_SMC91111 1
-+#define CONFIG_SMC91111_BASE 0x04000300 /* chip select 1 */
-+#undef CONFIG_SMC_USE_32_BIT /* 16 bit bus access */
-+#undef CONFIG_SMC_91111_EXT_PHY /* we use internal phy */
-+#undef CONFIG_SHOW_ACTIVITY
-+#define CONFIG_NET_RETRY_COUNT 10 /* # of retries */
-+#define CONFIG_ETHPRIME "SMC91C1111-0"
-+#define CONFIG_ETHADDR 00:0A:95:A5:47:3A
-+
-+
-+#define CFG_MEMTEST_START 0xa1000000 /* memtest test area */
-+#define CFG_MEMTEST_END 0xa2000000
-+
-+
-+#undef CFG_CLKS_IN_HZ /* use HZ for freq. display */
-+#define CFG_HZ 3686400 /* incrementer freq: 3.6864 MHz */
-+#ifdef CONFIG_GUMSTIX_CPUSPEED_400
-+#define CFG_CPUSPEED 0x161 /* 0x161 == 400MHz, 0x141 ==200MHz */
-+#else
-+#define CFG_CPUSPEED 0x141
-+#endif
-+#define CFG_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200, 230400 }
-+
-+#define CFG_CONSOLE_INFO_QUIET
-+
-+/*
-+ * Definitions related to passing arguments to kernel.
-+ */
-+#define CONFIG_CMDLINE_TAG /* send commandline to Kernel */
-+#define CONFIG_SETUP_MEMORY_TAGS /* send memory definition to kernel */
-+#define CONFIG_INITRD_TAG /* send initrd params */
-+#define CONFIG_SERIAL_TAG /* send serialnr from flash */
-+#undef CONFIG_VFD /* do not send framebuffer setup */
-+
-+/*
-+ * SDRAM Memory Map
-+ */
-+#define CONFIG_NR_DRAM_BANKS 1 /* we have 1 bank of SDRAM */
-+#define PHYS_SDRAM_1 0xa0000000 /* SDRAM bank #1 */
-+#define PHYS_SDRAM_1_SIZE 0x04000000 /* 64 MB ( 2 chip ) */
-+
-+#define CFG_DRAM_BASE PHYS_SDRAM_1
-+#define CFG_DRAM_SIZE PHYS_SDRAM_1_SIZE
-+
-+/*
-+ * Configuration for FLASH memory
-+ */
-+#define PHYS_FLASH_1 0x00000000 /* Flash Bank #1 */
-+#define PHYS_FLASH_SECT_SIZE 0x00020000 /* 128 KB sectors */
-+
-+#define CFG_FLASH_BASE PHYS_FLASH_1
-+#define CFG_FLASH_CFI /* flash is CFI conformant */
-+#define CFG_FLASH_CFI_DRIVER /* use common cfi driver */
-+#define CFG_FLASH_USE_BUFFER_WRITE 1 /* use buffered writes (20x faster) */
-+#define CFG_MAX_FLASH_BANKS 1 /* max # of memory banks */
-+#define CFG_MAX_FLASH_SECT 256 /* max # of sectors on one chip */
-+#define CFG_FLASH_PROTECTION /* use hardware flash protection */
-+
-+#define CFG_ENV_IS_IN_FLASH
-+#define CFG_ENV_SIZE 0x1000 /* 4kB */
-+#define CFG_ENV_SECT_SIZE PHYS_FLASH_SECT_SIZE
-+#define CFG_ENV_ADDR ((CFG_FLASH_BASE + CFG_ENV_SECT_SIZE*2) - CFG_ENV_SIZE)
-+
-+/*
-+ * Malloc pool need to host env + 128 Kb reserve for other allocations.
-+ */
-+#define CFG_MALLOC_LEN (CFG_ENV_SIZE + (128<<10) )
-+#define CONFIG_STACKSIZE (120<<10) /* stack size */
-+#define CFG_GBL_DATA_SIZE 512 /* num bytes initial data */
-+
-+/*
-+ * This is setting for JFFS2 support in u-boot.
-+ * Right now there is no gain for user, but later on booting kernel might be
-+ * possible. Consider using XIP kernel running from flash to save RAM
-+ * footprint.
-+ * NOTE: Enable CFG_CMD_JFFS2 for JFFS2 support.
-+ */
-+
-+#define CFG_JFFS2_FIRST_BANK 0
-+#define CFG_JFFS2_FIRST_SECTOR 2
-+#define CFG_JFFS2_NUM_BANKS 1
-+
-+#define CONFIG_MMC 1
-+#define CFG_MMC_BASE 0xF0000000
-+#define CONFIG_DOS_PARTITION
-+
-+/*
-+ * Environment setup. Definitions of monitor location and size with
-+ * definition of environment setup ends up in 2 possibilities.
-+ * 1. Embedded environment - in u-boot code is space for environment
-+ * 2. Environment is read from predefined sector of flash
-+ * Right now we support 2. possiblity, but expecting no env placed
-+ * on mentioned address right now. This also needs to provide whole
-+ * sector for it - for us 256Kb is really waste of memory. U-boot uses
-+ * default env. and until kernel parameters could be sent to kernel
-+ * env. has no sense to us.
-+ */
-+
-+#define CFG_MONITOR_BASE CFG_FLASH_BASE
-+#define CFG_MONITOR_LEN (PHYS_FLASH_SECT_SIZE*2 - CFG_ENV_SIZE)
-+
-+#define CFG_GPSR0_VAL 0xFFFFFFFF
-+#define CFG_GPSR1_VAL 0xFFEFFFFF
-+#define CFG_GPSR2_VAL 0xFFFEFFFF
-+
-+#define CFG_GPCR0_VAL 0x08022080
-+#define CFG_GPCR1_VAL 0x00100000
-+#define CFG_GPCR2_VAL 0x00010000
-+
-+#define CFG_GPDR0_VAL 0xC182B9F8
-+#define CFG_GPDR1_VAL 0x0012AA80
-+#define CFG_GPDR2_VAL 0x0001FFFF
-+
-+#define CFG_GAFR0_L_VAL 0x81011000
-+#define CFG_GAFR0_U_VAL 0xA5254010
-+#define CFG_GAFR1_L_VAL 0x69908010
-+#define CFG_GAFR1_U_VAL 0xAAA5A8AA
-+#define CFG_GAFR2_L_VAL 0xAAAAAAAA
-+#define CFG_GAFR2_U_VAL 0x00000000
-+
-+#define CFG_PSSR_VAL 0x20
-+
-+/*
-+ * Well this has to be defined, but on the other hand it is used differently
-+ * one may expect. For instance loadb command do not cares :-)
-+ * So advice is - do not rely on this...
-+ */
-+
-+#define CFG_LOAD_ADDR 0xA2000000
-+#endif /* __CONFIG_H */
---- a/lib_arm/board.c
-+++ a/lib_arm/board.c
-@@ -200,10 +200,10 @@
- NULL,
- };
-
-+DECLARE_GLOBAL_DATA_PTR;
-+
- void start_armboot (void)
- {
-- DECLARE_GLOBAL_DATA_PTR;
--
- ulong size;
- init_fnc_t **init_fnc_ptr;
- char *s;