diff -uprN -X dontdiff u-boot-2006-06-30-2020-vanilla/board/icn330/config.mk u-boot-2006-06-30-2020/board/icn330/config.mk
--- u-boot-2006-06-30-2020-vanilla/board/icn330/config.mk	1970-01-01 01:00:00.000000000 +0100
+++ u-boot-2006-06-30-2020/board/icn330/config.mk	2006-09-28 18:53:16.000000000 +0200
@@ -0,0 +1 @@
+TEXT_BASE = 0xa1000000
diff -uprN -X dontdiff u-boot-2006-06-30-2020-vanilla/board/icn330/Makefile u-boot-2006-06-30-2020/board/icn330/Makefile
--- u-boot-2006-06-30-2020-vanilla/board/icn330/Makefile	1970-01-01 01:00:00.000000000 +0100
+++ u-boot-2006-06-30-2020/board/icn330/Makefile	2006-09-28 17:35:17.000000000 +0200
@@ -0,0 +1,48 @@
+
+#
+# (C) Copyright 2000-2005
+# Wolfgang Denk, DENX Software Engineering, wd@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	= lib$(BOARD).a
+
+OBJS	:= pxa_navman.o
+SOBJS	:= 
+
+$(LIB):	$(OBJS) $(SOBJS)
+	$(AR) crv $@ $(OBJS) $(SOBJS)
+
+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
+
+#########################################################################
diff -uprN -X dontdiff u-boot-2006-06-30-2020-vanilla/board/icn330/pxa_navman.c u-boot-2006-06-30-2020/board/icn330/pxa_navman.c
--- u-boot-2006-06-30-2020-vanilla/board/icn330/pxa_navman.c	1970-01-01 01:00:00.000000000 +0100
+++ u-boot-2006-06-30-2020/board/icn330/pxa_navman.c	2006-11-08 22:15:47.000000000 +0100
@@ -0,0 +1,82 @@
+/*
+ * (C) Copyright 2002
+ * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
+ *
+ * (C) Copyright 2002
+ * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
+ * Marius Groeger <mgroeger@sysgo.de>
+ *
+ * (C) Copyright 2004
+ * BEC Systems <http://bec-systems.com>
+ * Cliff Brake <cliff.brake@gmail.com>
+ * Support for Accelent/Vibren PXA255 IDP
+ *
+ * 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 <command.h>
+#include <asm/arch/pxa-regs.h>
+#include <lcd.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+extern void memsetup(void);
+
+void lowlevel_init(void)
+{
+}
+
+/*
+ * Miscelaneous platform dependent initialisations
+ */
+
+int board_init (void)
+{
+	/* memory and cpu-speed are setup before relocation */
+	/* so we do _nothing_ here */
+
+	/* arch number of Lubbock-Board */
+	gd->bd->bi_arch_number = MACH_TYPE_PXA_IDP;
+
+	/* adress of boot parameters */
+	gd->bd->bi_boot_params = 0xa0000100;
+
+	return 0;
+}
+
+int board_late_init(void)
+{
+	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;
+	gd->bd->bi_dram[1].start = PHYS_SDRAM_2;
+	gd->bd->bi_dram[1].size = PHYS_SDRAM_2_SIZE;
+	gd->bd->bi_dram[2].start = PHYS_SDRAM_3;
+	gd->bd->bi_dram[2].size = PHYS_SDRAM_3_SIZE;
+	gd->bd->bi_dram[3].start = PHYS_SDRAM_4;
+	gd->bd->bi_dram[3].size = PHYS_SDRAM_4_SIZE;
+
+	return 0;
+}
diff -uprN -X dontdiff u-boot-2006-06-30-2020-vanilla/board/icn330/u-boot.lds u-boot-2006-06-30-2020/board/icn330/u-boot.lds
--- u-boot-2006-06-30-2020-vanilla/board/icn330/u-boot.lds	1970-01-01 01:00:00.000000000 +0100
+++ u-boot-2006-06-30-2020/board/icn330/u-boot.lds	2006-09-28 17:33:22.000000000 +0200
@@ -0,0 +1,55 @@
+/*
+ * (C) Copyright 2000-2005
+ * Wolfgang Denk, DENX Software Engineering, wd@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
+ */
+
+OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
+OUTPUT_ARCH(arm)
+ENTRY(_start)
+SECTIONS
+{
+	. = 0x0;
+
+	. = ALIGN(4);
+	.text      :
+	{
+	  cpu/pxa/start.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 = .;
+}
diff -uprN -X dontdiff u-boot-2006-06-30-2020-vanilla/common/lcd.c u-boot-2006-06-30-2020/common/lcd.c
--- u-boot-2006-06-30-2020-vanilla/common/lcd.c	2006-06-30 20:16:37.000000000 +0200
+++ u-boot-2006-06-30-2020/common/lcd.c	2006-11-08 22:12:31.000000000 +0100
@@ -607,13 +607,13 @@ int lcd_display_bitmap(ulong bmp_image, 
 
 	bpix = NBITS(panel_info.vl_bpix);
 
-	if ((bpix != 1) && (bpix != 8)) {
+	if ((bpix != 1) && (bpix != 8) && (bpix != 16)) {
 		printf ("Error: %d bit/pixel mode not supported by U-Boot\n",
 			bpix);
 		return 1;
 	}
 
-	if (bpix != le16_to_cpu(bmp->header.bit_count)) {
+	if (bpix != le16_to_cpu(bmp->header.bit_count) && (bpix != 16)) {
 		printf ("Error: %d bit/pixel mode, but BMP has %d bit/pixel\n",
 			bpix,
 			le16_to_cpu(bmp->header.bit_count));
@@ -650,6 +650,23 @@ int lcd_display_bitmap(ulong bmp_image, 
 			cmap--;
 #endif
 		}
+	} else if(bpix == 16) {
+		ushort palette[256];
+                for (i=0; i<colors; ++i) {
+                        bmp_color_table_entry_t cte = bmp->color_table[i];
+                        palette[i] =
+                                ( ((cte.red)   << 8) & 0xf800) |
+                                ( ((cte.green) << 3) & 0x07e0) |
+                                ( ((cte.blue)  >> 3) & 0x001f) ;
+		}
+		bmap = (uchar *)bmp + le32_to_cpu (bmp->header.data_offset);
+		ushort *myfb = (ushort *) (lcd_base);
+		for (i = 0; i < height; ++i) {
+        	        for (j = 0; j < width ; j++) {
+				*(myfb++) = palette[*(bmap++)];
+			}
+		}
+		return 0;
 	}
 
 	padded_line = (width&0x3) ? ((width&~0x3)+4) : (width);
diff -uprN -X dontdiff u-boot-2006-06-30-2020-vanilla/cpu/pxa/mmc.c u-boot-2006-06-30-2020/cpu/pxa/mmc.c
--- u-boot-2006-06-30-2020-vanilla/cpu/pxa/mmc.c	2006-06-30 20:16:37.000000000 +0200
+++ u-boot-2006-06-30-2020/cpu/pxa/mmc.c	2006-11-02 20:05:57.000000000 +0100
@@ -30,9 +30,6 @@
 
 #ifdef CONFIG_MMC
 
-extern int
-fat_register_device(block_dev_desc_t *dev_desc, int part_no);
-
 static block_dev_desc_t mmc_dev;
 
 block_dev_desc_t * mmc_get_dev(int dev)
@@ -48,7 +45,6 @@ static uchar mmc_buf[MMC_BLOCK_SIZE];
 static mmc_csd_t mmc_csd;
 static int mmc_ready = 0;
 
-
 static uchar *
 /****************************************************/
 mmc_cmd(ushort cmd, ushort argh, ushort argl, ushort cmdat)
@@ -73,6 +69,7 @@ mmc_cmd(ushort cmd, ushort argh, ushort 
 	status = MMC_STAT;
 	debug("MMC status %x\n", status);
 	if (status & MMC_STAT_TIME_OUT_RESPONSE) {
+		printf("Timeout on %x %x %x %x\n", cmd, argh, argl, cmdat);
 		return 0;
 	}
 
@@ -105,6 +102,18 @@ mmc_cmd(ushort cmd, ushort argh, ushort 
 	return resp;
 }
 
+static uchar *
+/****************************************************/
+mmc_app_cmd(ushort argh, ushort argl, ushort cmdat)
+/****************************************************/
+{
+	uchar *resp = mmc_cmd(55, 0, 0, MMC_CMDAT_R1);
+	if(!resp || !(resp[1] & (1 << 5))) {
+		printf("Card does not support application commands\n");
+	}
+	return mmc_cmd(41, argh, argl, cmdat);
+}
+
 int
 /****************************************************/
 mmc_block_read(uchar *dst, ulong src, ulong len)
@@ -379,7 +388,9 @@ mmc_init(int verbose)
 /****************************************************/
 {
  	int retries, rc = -ENODEV;
+	int mmc_mode = 0;
 	uchar *resp;
+	unsigned short rca = MMC_DEFAULT_RCA;
 
 #ifdef CONFIG_LUBBOCK
 	set_GPIO_mode( GPIO6_MMCCLK_MD );
@@ -399,45 +410,47 @@ mmc_init(int verbose)
 	MMC_SPI    = MMC_SPI_DISABLE;
 
 	/* reset */
-	retries = 10;
+	retries = 100;
 	resp = mmc_cmd(0, 0, 0, 0);
-	resp = mmc_cmd(1, 0x00ff, 0xc000, MMC_CMDAT_INIT|MMC_CMDAT_BUSY|MMC_CMDAT_R3);
+	resp = mmc_app_cmd(0x0, 0x0, MMC_CMDAT_INIT|MMC_CMDAT_BUSY|MMC_CMDAT_R3);
+	if(!resp) {
+		// Try running in MMC mode instead
+		mmc_mode = 1;
+		resp = mmc_cmd(1, 0x00ff, 0xc000, MMC_CMDAT_INIT|MMC_CMDAT_BUSY|MMC_CMDAT_R3);
+		printf("MMC card detected\n");
+	}
+
 	while (retries-- && resp && !(resp[4] & 0x80)) {
 		debug("resp %x %x\n", resp[0], resp[1]);
 #ifdef CONFIG_PXA27X
 		udelay(10000);
 #else
-		udelay(50);
+		udelay(10*1000);
 #endif
-		resp = mmc_cmd(1, 0x00ff, 0xff00, MMC_CMDAT_BUSY|MMC_CMDAT_R3);
+		if(mmc_mode)
+			resp = mmc_cmd(1, 0x00ff, 0xff00, MMC_CMDAT_BUSY|MMC_CMDAT_R3);
+		else
+			resp = mmc_app_cmd(0x0030, 0x0, MMC_CMDAT_BUSY|MMC_CMDAT_R3);
 	}
 
-	/* try to get card id */
-	resp = mmc_cmd(2, 0, 0, MMC_CMDAT_R2);
+	if(retries < 0)
+		printf("Failed to select card voltage\n", retries);
+
+	resp = mmc_cmd(2, 0, 0, MMC_CMDAT_R2|MMC_CMDAT_INIT|MMC_CMDAT_BUSY);
+
 	if (resp) {
+		int i;
 		/* TODO configure mmc driver depending on card attributes */
 		mmc_cid_t *cid = (mmc_cid_t *)resp;
-		if (verbose) {
-			printf("MMC found. Card desciption is:\n");
-			printf("Manufacturer ID = %02x%02x%02x\n",
-							cid->id[0], cid->id[1], cid->id[2]);
-			printf("HW/FW Revision = %x %x\n",cid->hwrev, cid->fwrev);
-			cid->hwrev = cid->fwrev = 0;	/* null terminate string */
-			printf("Product Name = %s\n",cid->name);
-			printf("Serial Number = %02x%02x%02x\n",
-							cid->sn[0], cid->sn[1], cid->sn[2]);
-			printf("Month = %d\n",cid->month);
-			printf("Year = %d\n",1997 + cid->year);
-		}
 		/* fill in device description */
 		mmc_dev.if_type = IF_TYPE_MMC;
-		mmc_dev.part_type = PART_TYPE_DOS;
+		mmc_dev.part_type = PART_TYPE_UNKNOWN;
 		mmc_dev.dev = 0;
 		mmc_dev.lun = 0;
 		mmc_dev.type = 0;
-		/* FIXME fill in the correct size (is set to 32MByte) */
+
 		mmc_dev.blksz = 512;
-		mmc_dev.lba = 0x10000;
+		mmc_dev.lba = 0;
 		sprintf(mmc_dev.vendor,"Man %02x%02x%02x Snr %02x%02x%02x",
 				cid->id[0], cid->id[1], cid->id[2],
 				cid->sn[0], cid->sn[1], cid->sn[2]);
@@ -447,11 +460,19 @@ mmc_init(int verbose)
 		mmc_dev.block_read = mmc_bread;
 
 		/* MMC exists, get CSD too */
-		resp = mmc_cmd(MMC_CMD_SET_RCA, MMC_DEFAULT_RCA, 0, MMC_CMDAT_R1);
-		resp = mmc_cmd(MMC_CMD_SEND_CSD, MMC_DEFAULT_RCA, 0, MMC_CMDAT_R2);
+		if(mmc_mode)
+			resp = mmc_cmd(MMC_CMD_SET_RCA, MMC_DEFAULT_RCA, 0, MMC_CMDAT_R1);
+		else {
+			resp = mmc_cmd(MMC_CMD_SET_RCA, 0, 0, MMC_CMDAT_R6|MMC_CMDAT_INIT|MMC_CMDAT_BUSY);
+			rca = (resp[3]) | (resp[4]<<8);
+		}
+		for(i=0; i<10 && !resp; i++)
+			resp = mmc_cmd(MMC_CMD_SEND_CSD, rca, 0, MMC_CMDAT_R2);
+
 		if (resp) {
 			mmc_csd_t *csd = (mmc_csd_t *)resp;
 			memcpy(&mmc_csd, csd, sizeof(csd));
+			mmc_dev.lba = (1+csd->c_size) << (2+csd->c_size_mult1);
 			rc = 0;
 			mmc_ready = 1;
 			/* FIXME add verbose printout for csd */
@@ -463,9 +484,9 @@ mmc_init(int verbose)
 #else
 	MMC_CLKRT = 0;	/* 20 MHz */
 #endif
-	resp = mmc_cmd(7, MMC_DEFAULT_RCA, 0, MMC_CMDAT_R1);
+	resp = mmc_cmd(7, rca, 0, MMC_CMDAT_R1);
 
-	fat_register_device(&mmc_dev,1); /* partitions start counting with 1 */
+	init_part(&mmc_dev);
 
 	return rc;
 }
diff -uprN -X dontdiff u-boot-2006-06-30-2020-vanilla/cpu/pxa/pxafb.c u-boot-2006-06-30-2020/cpu/pxa/pxafb.c
--- u-boot-2006-06-30-2020-vanilla/cpu/pxa/pxafb.c	2006-06-30 20:16:37.000000000 +0200
+++ u-boot-2006-06-30-2020/cpu/pxa/pxafb.c	2006-09-28 22:21:06.000000000 +0200
@@ -37,7 +37,6 @@
 #include <asm/arch/pxa-regs.h>
 
 /* #define DEBUG */
-
 #ifdef CONFIG_LCD
 
 /*----------------------------------------------------------------------*/
@@ -146,6 +145,37 @@ vidinfo_t panel_info = {
 };
 #endif /* CONFIG_HITACHI_SX14 */
 
+#ifdef CONFIG_SAMSUNG_LTP283QV-F0X
+
+/* you have to set lccr0 and lccr3 (including pcd) */
+#define REG_LCCR0       0x001000f9
+#define REG_LCCR3       0x04b0ff09
+
+vidinfo_t panel_info = {
+        vl_col:         240,
+        vl_row:         320,
+        vl_width:       240,
+        vl_height:      320,
+        vl_clkp:        CFG_HIGH,
+        vl_oep:         CFG_HIGH,
+        vl_hsp:         CFG_HIGH,
+        vl_vsp:         CFG_HIGH,
+        vl_dp:          CFG_HIGH,
+        vl_bpix:        LCD_BPP,
+        vl_lbw:         1,
+        vl_splt:        0,
+        vl_clor:        1,
+        vl_tft:         1,
+        vl_hpw:         3,
+        vl_blw:         7,
+        vl_elw:         7,
+        vl_vpw:         0,
+        vl_bfw:         8,
+        vl_efw:         8,
+};
+
+#endif
+
 /*----------------------------------------------------------------------*/
 
 #if LCD_BPP == LCD_COLOR8
diff -uprN -X dontdiff u-boot-2006-06-30-2020-vanilla/disk/part.c u-boot-2006-06-30-2020/disk/part.c
--- u-boot-2006-06-30-2020-vanilla/disk/part.c	2006-06-30 20:16:37.000000000 +0200
+++ u-boot-2006-06-30-2020/disk/part.c	2006-09-30 21:22:42.000000000 +0200
@@ -126,7 +126,8 @@ void dev_print (block_dev_desc_t *dev_de
 #if ((CONFIG_COMMANDS & CFG_CMD_IDE)	|| \
      (CONFIG_COMMANDS & CFG_CMD_SCSI)	|| \
      (CONFIG_COMMANDS & CFG_CMD_USB)	|| \
-     defined(CONFIG_SYSTEMACE)          )
+     defined(CONFIG_SYSTEMACE)          ) || \
+     defined(CONFIG_MMC)
 
 #if defined(CONFIG_MAC_PARTITION) || \
     defined(CONFIG_DOS_PARTITION) || \
diff -uprN -X dontdiff u-boot-2006-06-30-2020-vanilla/examples/Makefile u-boot-2006-06-30-2020/examples/Makefile
--- u-boot-2006-06-30-2020-vanilla/examples/Makefile	2006-06-30 20:16:37.000000000 +0200
+++ u-boot-2006-06-30-2020/examples/Makefile	2006-09-06 19:02:21.000000000 +0200
@@ -59,8 +59,8 @@ endif
 
 include $(TOPDIR)/config.mk
 
-SREC	= hello_world.srec
-BIN	= hello_world.bin hello_world
+#SREC	= hello_world.srec
+#BIN	= hello_world.bin hello_world
 
 ifeq ($(CPU),mpc8xx)
 SREC	= test_burst.srec
diff -uprN -X dontdiff u-boot-2006-06-30-2020-vanilla/fs/fat/fat.c u-boot-2006-06-30-2020/fs/fat/fat.c
--- u-boot-2006-06-30-2020-vanilla/fs/fat/fat.c	2006-06-30 20:16:37.000000000 +0200
+++ u-boot-2006-06-30-2020/fs/fat/fat.c	2006-09-30 23:03:46.000000000 +0200
@@ -90,7 +90,8 @@ fat_register_device(block_dev_desc_t *de
 	}
 	else {
 #if (CONFIG_COMMANDS & CFG_CMD_IDE) || (CONFIG_COMMANDS & CFG_CMD_SCSI) || \
-    (CONFIG_COMMANDS & CFG_CMD_USB) || defined(CONFIG_SYSTEMACE)
+    (CONFIG_COMMANDS & CFG_CMD_USB) || defined(CONFIG_SYSTEMACE) || \
+    defined(CONFIG_MMC)
 		disk_partition_t info;
 		if(!get_partition_info(dev_desc, part_no, &info)) {
 			part_offset = info.start;
diff -uprN -X dontdiff u-boot-2006-06-30-2020-vanilla/include/asm-arm/arch-pxa/mmc.h u-boot-2006-06-30-2020/include/asm-arm/arch-pxa/mmc.h
--- u-boot-2006-06-30-2020-vanilla/include/asm-arm/arch-pxa/mmc.h	2006-06-30 20:16:37.000000000 +0200
+++ u-boot-2006-06-30-2020/include/asm-arm/arch-pxa/mmc.h	2006-10-31 20:14:37.000000000 +0100
@@ -65,6 +65,7 @@
 #define MMC_CMDAT_R1	    		(0x0001UL)
 #define MMC_CMDAT_R2	    		(0x0002UL)
 #define MMC_CMDAT_R3	    		(0x0003UL)
+#define MMC_CMDAT_R6	    		(0x0005UL)
 
 /* MMC_RESTO */
 #define MMC_RES_TO_MAX	  		(0x007fUL) /* [6:0] */
diff -uprN -X dontdiff u-boot-2006-06-30-2020-vanilla/include/config.h u-boot-2006-06-30-2020/include/config.h
--- u-boot-2006-06-30-2020-vanilla/include/config.h	1970-01-01 01:00:00.000000000 +0100
+++ u-boot-2006-06-30-2020/include/config.h	2006-09-10 00:14:07.000000000 +0200
@@ -0,0 +1,2 @@
+/* Automatically generated - do not edit */
+#include <configs/icn330.h>
diff -uprN -X dontdiff u-boot-2006-06-30-2020-vanilla/include/config.mk u-boot-2006-06-30-2020/include/config.mk
--- u-boot-2006-06-30-2020-vanilla/include/config.mk	1970-01-01 01:00:00.000000000 +0100
+++ u-boot-2006-06-30-2020/include/config.mk	2006-09-10 00:14:07.000000000 +0200
@@ -0,0 +1,3 @@
+ARCH   = arm
+CPU    = pxa
+BOARD  = icn330
diff -uprN -X dontdiff u-boot-2006-06-30-2020-vanilla/include/configs/icn330.h u-boot-2006-06-30-2020/include/configs/icn330.h
--- u-boot-2006-06-30-2020-vanilla/include/configs/icn330.h	1970-01-01 01:00:00.000000000 +0100
+++ u-boot-2006-06-30-2020/include/configs/icn330.h	2006-11-08 22:11:22.000000000 +0100
@@ -0,0 +1,177 @@
+/*
+ * (C) Copyright 2002
+ * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
+ *
+ * (C) Copyright 2002
+ * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
+ * Marius Groeger <mgroeger@sysgo.de>
+ *
+ * Copied from lubbock.h
+ *
+ * (C) Copyright 2004
+ * BEC Systems <http://bec-systems.com>
+ * Cliff Brake <cliff.brake@gmail.com>
+ * Configuation settings for the Accelent/Vibren PXA255 IDP
+ *
+ * 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
+ */
+
+#ifndef __CONFIG_H
+#define __CONFIG_H
+
+#include <asm/arch/pxa-regs.h>
+
+#define CONFIG_SKIP_RELOCATE_UBOOT 1
+
+/*
+ * High Level Configuration Options
+ * (easy to change)
+ */
+#define CONFIG_PXA250		1	/* This is an PXA250 CPU    */
+#define CFG_NO_FLASH 1
+#define CONFIG_LCD 1
+
+#ifdef CONFIG_LCD
+#define CONFIG_SAMSUNG_LTP283QV-F0X
+#define LCD_BPP         LCD_COLOR16
+#endif
+
+#define CONFIG_BAUDRATE 115200
+#define CFG_BAUDRATE_TABLE {}
+
+#define CONFIG_MMC		1
+#define BOARD_LATE_INIT		1
+
+#undef CONFIG_USE_IRQ			/* we don't need IRQ/FIQ stuff */
+
+/*
+ * Size of malloc() pool
+ */
+#define CFG_MALLOC_LEN	    (64*1024)
+#define CFG_GBL_DATA_SIZE	128	/* size in bytes reserved for initial data */
+
+/*
+ * select serial console configuration
+ */
+// TODO: Determine if this should be CONFIG_STUART, CONFIG_BTUART or CONFIG_FFUART
+#define CONFIG_FFUART	       1       /* we use FFUART on LUBBOCK */
+
+/* allow to overwrite serial and ethaddr */
+#define CONFIG_ENV_OVERWRITE
+
+#define CONFIG_COMMANDS		((CONFIG_CMD_DFL | CFG_CMD_MMC | CFG_CMD_FAT ) & ~(CFG_CMD_NET | CFG_CMD_ENV | CFG_CMD_IMLS | CFG_CMD_FLASH))
+
+/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
+#include <cmd_confdefs.h>
+
+#define CONFIG_BOOTARGS		"root=/dev/mmc/blk0/part2 ro mem=32M"
+#define CONFIG_CMDLINE_TAG
+
+/*
+ * Current memory map for Vibren supplied Linux images:
+ *
+ * Flash:
+ * 0 - 0x3ffff (size = 0x40000): bootloader
+ * 0x40000 - 0x13ffff (size = 0x100000): kernel
+ * 0x140000 - 0x1f3ffff (size = 0x1e00000): jffs
+ *
+ * RAM:
+ * 0xa0008000 - kernel is loaded
+ * 0xa3000000 - Uboot runs (48MB into RAM)
+ *
+ */
+
+#define CFG_ENV_SIZE 0x200
+#define CONFIG_SPLASH_SCREEN 1
+#define CFG_ENV_IS_NOWHERE 1
+
+#define CONFIG_EXTRA_ENV_SETTINGS                                       \
+        "splashimage=0xa1080000\0"                                      \
+	""
+
+#define CONFIG_DOS_PARTITION     1
+#define CONFIG_BOOTDELAY 0
+#define CONFIG_BOOTCOMMAND  "if mmcinit && "                             \
+                                "fatload mmc 0:1 0xa0800000 uImage && "  \
+                            "then "                                     \
+                                "bootm 0xa0800000; "                    \
+                            "fi"         
+
+/*
+ * Miscellaneous configurable options
+ */
+#define CFG_HUSH_PARSER		1
+#define CFG_PROMPT_HUSH_PS2	"> "
+
+#define CFG_LONGHELP				/* undef to save memory		*/
+#ifdef CFG_HUSH_PARSER
+#define CFG_PROMPT		"$ "		/* Monitor Command Prompt */
+#else
+#define CFG_PROMPT		"=> "		/* Monitor Command Prompt */
+#endif
+#define CFG_CBSIZE		256		/* Console I/O Buffer Size	*/
+#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */
+#define CFG_MAXARGS		16		/* max number of command args	*/
+#define CFG_BARGSIZE		CFG_CBSIZE	/* Boot Argument Buffer Size	*/
+#define CFG_DEVICE_NULLDEV	1
+
+#define CFG_MEMTEST_START	0xa0400000	/* memtest works on	*/
+#define CFG_MEMTEST_END		0xa0800000	/* 4 ... 8 MB in DRAM	*/
+
+#undef	CFG_CLKS_IN_HZ		/* everything, incl board info, in Hz */
+
+#define CFG_LOAD_ADDR		0xa0008000	/* default load address */
+
+#define CFG_HZ			3686400		/* incrementer freq: 3.6864 MHz */
+#define CFG_CPUSPEED		0x141		/* set core clock to 400/200/100 MHz */
+
+#define RTC	1				/* enable 32KHz osc */
+
+#define CFG_MMC_BASE		0xF0000000
+
+/*
+ * Stack sizes
+ *
+ * The stack sizes are set up in start.S using the settings below
+ */
+#define CONFIG_STACKSIZE	(128*1024)	/* regular stack */
+#ifdef CONFIG_USE_IRQ
+#define CONFIG_STACKSIZE_IRQ	(4*1024)	/* IRQ stack */
+#define CONFIG_STACKSIZE_FIQ	(4*1024)	/* FIQ stack */
+#endif
+
+/*
+ * Physical Memory Map
+ */
+#define CONFIG_NR_DRAM_BANKS	4	   /* we have 1 banks of DRAM */
+#define PHYS_SDRAM_1		0xa0000000 /* SDRAM Bank #1 */
+#define PHYS_SDRAM_1_SIZE	0x02000000 /* 32 MB */
+#define PHYS_SDRAM_2		0xa4000000 /* SDRAM Bank #2 */
+#define PHYS_SDRAM_2_SIZE	0x00000000 /* 0 MB */
+#define PHYS_SDRAM_3		0xa8000000 /* SDRAM Bank #3 */
+#define PHYS_SDRAM_3_SIZE	0x00000000 /* 0 MB */
+#define PHYS_SDRAM_4		0xac000000 /* SDRAM Bank #4 */
+#define PHYS_SDRAM_4_SIZE	0x00000000 /* 0 MB */
+
+#define CFG_DRAM_BASE		0xa0000000
+#define CFG_DRAM_SIZE		0x02000000
+
+#define CFG_MAX_FLASH_SECT    32
+
+#endif	/* __CONFIG_H */
diff -uprN -X dontdiff u-boot-2006-06-30-2020-vanilla/include/lcd.h u-boot-2006-06-30-2020/include/lcd.h
--- u-boot-2006-06-30-2020-vanilla/include/lcd.h	2006-06-30 20:16:37.000000000 +0200
+++ u-boot-2006-06-30-2020/include/lcd.h	2006-09-28 22:29:12.000000000 +0200
@@ -274,6 +274,8 @@ void	lcd_printf	(const char *fmt, ...);
 				 (c) << 4 | (c) << 5 | (c) << 6 | (c) << 7)
 #elif LCD_BPP == LCD_COLOR8
 # define COLOR_MASK(c)		(c)
+#elif LCD_BPP == LCD_COLOR16
+# define COLOR_MASK(c)          (c)
 #else
 # error Unsupported LCD BPP.
 #endif
diff -uprN -X dontdiff u-boot-2006-06-30-2020-vanilla/lib_arm/board.c u-boot-2006-06-30-2020/lib_arm/board.c
--- u-boot-2006-06-30-2020-vanilla/lib_arm/board.c	2006-06-30 20:16:37.000000000 +0200
+++ u-boot-2006-06-30-2020/lib_arm/board.c	2006-11-08 21:42:36.000000000 +0100
@@ -237,9 +237,7 @@ void start_armboot (void)
 {
 	init_fnc_t **init_fnc_ptr;
 	char *s;
-#ifndef CFG_NO_FLASH
 	ulong size;
-#endif
 #if defined(CONFIG_VFD) || defined(CONFIG_LCD)
 	unsigned long addr;
 #endif
diff -uprN -X dontdiff u-boot-2006-06-30-2020-vanilla/Makefile u-boot-2006-06-30-2020/Makefile
--- u-boot-2006-06-30-2020-vanilla/Makefile	2006-06-30 20:16:37.000000000 +0200
+++ u-boot-2006-06-30-2020/Makefile	2006-09-10 00:29:53.000000000 +0200
@@ -1732,6 +1732,9 @@ pdnb3_config	:	unconfig
 pxa255_idp_config:	unconfig
 	@./mkconfig $(@:_config=) arm pxa pxa255_idp
 
+icn330_config:	unconfig
+	@./mkconfig $(@:_config=) arm pxa icn330
+
 wepep250_config	:	unconfig
 	@./mkconfig $(@:_config=) arm pxa wepep250
 
