Browse Source

Merge commit 'u-boot/master' into for-1.3.1

Conflicts:

	drivers/rtc/Makefile
Stefan Roese 17 years ago
parent
commit
9caeaadf50
100 changed files with 2371 additions and 564 deletions
  1. 13 0
      .gitignore
  2. 1244 0
      CHANGELOG
  3. 2 0
      MAKEALL
  4. 73 20
      Makefile
  5. 1 1
      README
  6. 1 1
      blackfin_config.mk
  7. 1 0
      board/ads5121/u-boot.lds
  8. 15 8
      board/cds/common/ft_board.c
  9. 1 1
      board/cds/mpc8541cds/u-boot.lds
  10. 1 1
      board/cds/mpc8548cds/u-boot.lds
  11. 1 1
      board/cds/mpc8555cds/u-boot.lds
  12. 1 1
      board/cm5200/cm5200.c
  13. 1 0
      board/cogent/u-boot.lds
  14. 4 0
      board/dbau1x00/dbau1x00.c
  15. 12 11
      board/dbau1x00/u-boot.lds
  16. 4 1
      board/freescale/common/pixis.c
  17. 3 1
      board/freescale/m54455evb/config.mk
  18. 144 0
      board/freescale/m54455evb/u-boot.atm
  19. 141 0
      board/freescale/m54455evb/u-boot.int
  20. 1 1
      board/freescale/mpc832xemds/pci.c
  21. 2 2
      board/freescale/mpc8349emds/pci.c
  22. 2 2
      board/freescale/mpc8349itx/pci.c
  23. 1 1
      board/freescale/mpc8360emds/pci.c
  24. 1 1
      board/freescale/mpc8544ds/mpc8544ds.c
  25. 5 3
      board/gth2/gth2.c
  26. 4 0
      board/gth2/lowlevel_init.S
  27. 12 10
      board/gth2/u-boot.lds
  28. 1 0
      board/hymod/u-boot.lds
  29. 73 33
      board/ids8247/ids8247.c
  30. 3 2
      board/incaip/incaip.c
  31. 12 11
      board/incaip/u-boot.lds
  32. 17 9
      board/lwmon5/lwmon5.c
  33. 1 0
      board/m5282evb/m5282evb.c
  34. 1 0
      board/mousse/u-boot.lds
  35. 1 1
      board/mpl/vcma9/cmd_vcma9.c
  36. 1 1
      board/mpl/vcma9/flash.c
  37. 1 1
      board/mpl/vcma9/vcma9.h
  38. 1 1
      board/netstar/eeprom.c
  39. 1 1
      board/pb1x00/Makefile
  40. 2 2
      board/pb1x00/lowlevel_init.S
  41. 6 0
      board/pb1x00/pb1x00.c
  42. 12 10
      board/pb1x00/u-boot.lds
  43. 1 1
      board/pleb2/flash.c
  44. 1 1
      board/purple/flash.c
  45. 3 0
      board/purple/purple.c
  46. 12 11
      board/purple/u-boot.lds
  47. 2 2
      board/rsdproto/rsdproto.c
  48. 1 0
      board/rsdproto/u-boot.lds
  49. 1 1
      board/sbc2410x/flash.c
  50. 1 1
      board/smdk2410/flash.c
  51. 3 4
      board/tb0229/tb0229.c
  52. 12 11
      board/tb0229/u-boot.lds
  53. 11 3
      board/tqm5200/tqm5200.c
  54. 1 1
      board/voiceblue/eeprom.c
  55. 4 1
      board/wepep250/flash.c
  56. 106 25
      common/Makefile
  57. 0 2
      common/cmd_bdinfo.c
  58. 0 3
      common/cmd_bedbug.c
  59. 0 4
      common/cmd_bmp.c
  60. 0 4
      common/cmd_console.c
  61. 0 4
      common/cmd_date.c
  62. 0 4
      common/cmd_dcr.c
  63. 0 4
      common/cmd_diag.c
  64. 0 4
      common/cmd_display.c
  65. 0 5
      common/cmd_doc.c
  66. 0 4
      common/cmd_dtt.c
  67. 0 4
      common/cmd_elf.c
  68. 0 4
      common/cmd_ext2.c
  69. 0 7
      common/cmd_fat.c
  70. 0 4
      common/cmd_fdos.c
  71. 44 37
      common/cmd_fdt.c
  72. 0 4
      common/cmd_flash.c
  73. 0 3
      common/cmd_fpga.c
  74. 0 5
      common/cmd_i2c.c
  75. 6 14
      common/cmd_ide.c
  76. 1 4
      common/cmd_immap.c
  77. 0 3
      common/cmd_itest.c
  78. 0 5
      common/cmd_jffs2.c
  79. 0 4
      common/cmd_log.c
  80. 0 4
      common/cmd_mfsl.c
  81. 6 6
      common/cmd_mii.c
  82. 0 4
      common/cmd_misc.c
  83. 0 5
      common/cmd_mmc.c
  84. 0 4
      common/cmd_net.c
  85. 0 9
      common/cmd_pci.c
  86. 0 4
      common/cmd_portio.c
  87. 0 5
      common/cmd_reginfo.c
  88. 0 4
      common/cmd_reiser.c
  89. 6 7
      common/cmd_scsi.c
  90. 0 4
      common/cmd_spi.c
  91. 0 4
      common/cmd_universe.c
  92. 0 10
      common/cmd_usb.c
  93. 161 22
      common/fdt_support.c
  94. 156 126
      common/miiphyutil.c
  95. 1 1
      common/spartan2.c
  96. 1 1
      common/spartan3.c
  97. 1 1
      common/usb_kbd.c
  98. 1 1
      common/usb_storage.c
  99. 3 4
      config.mk
  100. 1 1
      cpu/arm920t/s3c24x0/Makefile

+ 13 - 0
.gitignore

@@ -0,0 +1,13 @@
+*.orig
+*.a
+*.o
+*.depend
+System.map
+/u-boot
+/u-boot.map
+/u-boot.bin
+/u-boot.srec
+/LOG
+/errlog
+/reloc_off
+

File diff suppressed because it is too large
+ 1244 - 0
CHANGELOG


+ 2 - 0
MAKEALL

@@ -383,6 +383,7 @@ LIST_7xx="		\
 
 
 LIST_ppc="		\
 LIST_ppc="		\
 	${LIST_5xx}	\
 	${LIST_5xx}	\
+	${LIST_512x}	\
 	${LIST_5xxx}	\
 	${LIST_5xxx}	\
 	${LIST_8xx}	\
 	${LIST_8xx}	\
 	${LIST_8220}	\
 	${LIST_8220}	\
@@ -559,6 +560,7 @@ LIST_mips5kc_el=""
 
 
 LIST_au1xx0_el="	\
 LIST_au1xx0_el="	\
 	dbau1550_el	\
 	dbau1550_el	\
+	pb1000		\
 "
 "
 
 
 LIST_mips_el="			\
 LIST_mips_el="			\

+ 73 - 20
Makefile

@@ -23,8 +23,8 @@
 
 
 VERSION = 1
 VERSION = 1
 PATCHLEVEL = 3
 PATCHLEVEL = 3
-SUBLEVEL = 0
-EXTRAVERSION = -rc3
+SUBLEVEL = 1
+EXTRAVERSION =
 U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
 U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
 VERSION_FILE = $(obj)include/version_autogenerated.h
 VERSION_FILE = $(obj)include/version_autogenerated.h
 
 
@@ -205,22 +205,30 @@ LIBS += fs/cramfs/libcramfs.a fs/fat/libfat.a fs/fdos/libfdos.a fs/jffs2/libjffs
 	fs/reiserfs/libreiserfs.a fs/ext2/libext2fs.a
 	fs/reiserfs/libreiserfs.a fs/ext2/libext2fs.a
 LIBS += net/libnet.a
 LIBS += net/libnet.a
 LIBS += disk/libdisk.a
 LIBS += disk/libdisk.a
-LIBS += rtc/librtc.a
-LIBS += dtt/libdtt.a
-LIBS += drivers/libdrivers.a
 LIBS += drivers/bios_emulator/libatibiosemu.a
 LIBS += drivers/bios_emulator/libatibiosemu.a
-LIBS += drivers/nand/libnand.a
-LIBS += drivers/nand_legacy/libnand_legacy.a
-LIBS += drivers/onenand/libonenand.a
+LIBS += drivers/block/libblock.a
+LIBS += drivers/hwmon/libhwmon.a
+LIBS += drivers/i2c/libi2c.a
+LIBS += drivers/input/libinput.a
+LIBS += drivers/misc/libmisc.a
+LIBS += drivers/mtd/libmtd.a
+LIBS += drivers/mtd/nand/libnand.a
+LIBS += drivers/mtd/nand_legacy/libnand_legacy.a
+LIBS += drivers/mtd/onenand/libonenand.a
 LIBS += drivers/net/libnet.a
 LIBS += drivers/net/libnet.a
+LIBS += drivers/net/sk98lin/libsk98lin.a
+LIBS += drivers/pci/libpci.a
+LIBS += drivers/pcmcia/libpcmcia.a
 ifeq ($(CPU),mpc83xx)
 ifeq ($(CPU),mpc83xx)
 LIBS += drivers/qe/qe.a
 LIBS += drivers/qe/qe.a
 endif
 endif
 ifeq ($(CPU),mpc85xx)
 ifeq ($(CPU),mpc85xx)
 LIBS += drivers/qe/qe.a
 LIBS += drivers/qe/qe.a
 endif
 endif
+LIBS += drivers/rtc/librtc.a
 LIBS += drivers/serial/libserial.a
 LIBS += drivers/serial/libserial.a
-LIBS += drivers/sk98lin/libsk98lin.a
+LIBS += drivers/usb/libusb.a
+LIBS += drivers/video/libvideo.a
 LIBS += post/libpost.a post/drivers/libpostdrivers.a
 LIBS += post/libpost.a post/drivers/libpostdrivers.a
 LIBS += $(shell if [ -d post/lib_$(ARCH) ]; then echo \
 LIBS += $(shell if [ -d post/lib_$(ARCH) ]; then echo \
 	"post/lib_$(ARCH)/libpost$(ARCH).a"; fi)
 	"post/lib_$(ARCH)/libpost$(ARCH).a"; fi)
@@ -323,25 +331,65 @@ env:
 depend dep:	version
 depend dep:	version
 		for dir in $(SUBDIRS) ; do $(MAKE) -C $$dir _depend ; done
 		for dir in $(SUBDIRS) ; do $(MAKE) -C $$dir _depend ; done
 
 
+TAG_SUBDIRS += include
+TAG_SUBDIRS += lib_generic board/$(BOARDDIR)
+TAG_SUBDIRS += cpu/$(CPU)
+TAG_SUBDIRS += lib_$(ARCH)
+TAG_SUBDIRS += fs/cramfs
+TAG_SUBDIRS += fs/fat
+TAG_SUBDIRS += fs/fdos
+TAG_SUBDIRS += fs/jffs2
+TAG_SUBDIRS += net
+TAG_SUBDIRS += disk
+TAG_SUBDIRS += common
+TAG_SUBDIRS += drivers/bios_emulator
+TAG_SUBDIRS += drivers/block
+TAG_SUBDIRS += drivers/hwmon
+TAG_SUBDIRS += drivers/i2c
+TAG_SUBDIRS += drivers/input
+TAG_SUBDIRS += drivers/misc
+TAG_SUBDIRS += drivers/mtd
+TAG_SUBDIRS += drivers/mtd/nand
+TAG_SUBDIRS += drivers/mtd/nand_legacy
+TAG_SUBDIRS += drivers/mtd/onenand
+TAG_SUBDIRS += drivers/net
+TAG_SUBDIRS += drivers/net/sk98lin
+TAG_SUBDIRS += drivers/pci
+TAG_SUBDIRS += drivers/pcmcia
+TAG_SUBDIRS += drivers/qe
+TAG_SUBDIRS += drivers/rtc
+TAG_SUBDIRS += drivers/serial
+TAG_SUBDIRS += drivers/usb
+TAG_SUBDIRS += drivers/video
+
 tags ctags:
 tags ctags:
-		ctags -w -o $(OBJTREE)/ctags `find $(SUBDIRS) include \
-				lib_generic board/$(BOARDDIR) cpu/$(CPU) lib_$(ARCH) \
-				fs/cramfs fs/fat fs/fdos fs/jffs2 \
-				net disk rtc dtt drivers drivers/sk98lin common \
-			\( -name CVS -prune \) -o \( -name '*.[ch]' -print \)`
+		ctags -w -o $(OBJTREE)/ctags `find $(SUBDIRS) $(TAG_SUBDIRS) \
+						-name '*.[ch]' -print`
 
 
 etags:
 etags:
-		etags -a -o $(OBJTREE)/etags `find $(SUBDIRS) include \
-				lib_generic board/$(BOARDDIR) cpu/$(CPU) lib_$(ARCH) \
-				fs/cramfs fs/fat fs/fdos fs/jffs2 \
-				net disk rtc dtt drivers drivers/sk98lin common \
-			\( -name CVS -prune \) -o \( -name '*.[ch]' -print \)`
+		etags -a -o $(OBJTREE)/etags `find $(SUBDIRS) $(TAG_SUBDIRS) \
+						-name '*.[ch]' -print`
 
 
 $(obj)System.map:	$(obj)u-boot
 $(obj)System.map:	$(obj)u-boot
 		@$(NM) $< | \
 		@$(NM) $< | \
 		grep -v '\(compiled\)\|\(\.o$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | \
 		grep -v '\(compiled\)\|\(\.o$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | \
 		sort > $(obj)System.map
 		sort > $(obj)System.map
 
 
+#
+# Auto-generate the autoconf.mk file (which is included by all makefiles)
+#
+# This target actually generates 2 files; autoconf.mk and autoconf.mk.dep.
+# the dep file is only include in this top level makefile to determine when
+# to regenerate the autoconf.mk file.
+$(OBJTREE)/include/autoconf.mk: $(obj)include/config.h
+	@echo Generating include/autoconf.mk
+	@# Generate the dependancies
+	@$(CC) -M $(HOST_CFLAGS) $(CPPFLAGS) -MQ $@ include/common.h > $@.dep
+	@# Extract the config macros
+	@$(CPP) $(CFLAGS) -dM include/common.h | sed -n -f tools/scripts/define2mk.sed >> $@
+
+sinclude $(OBJTREE)/include/autoconf.mk.dep
+
 #########################################################################
 #########################################################################
 else
 else
 all $(obj)u-boot.hex $(obj)u-boot.srec $(obj)u-boot.bin \
 all $(obj)u-boot.hex $(obj)u-boot.srec $(obj)u-boot.bin \
@@ -361,7 +409,8 @@ CHANGELOG:
 
 
 unconfig:
 unconfig:
 	@rm -f $(obj)include/config.h $(obj)include/config.mk \
 	@rm -f $(obj)include/config.h $(obj)include/config.mk \
-		$(obj)board/*/config.tmp $(obj)board/*/*/config.tmp
+		$(obj)board/*/config.tmp $(obj)board/*/*/config.tmp \
+		$(obj)include/autoconf.mk $(obj)include/autoconf.mk.dep
 
 
 #========================================================================
 #========================================================================
 # PowerPC
 # PowerPC
@@ -1750,9 +1799,13 @@ M54455EVB_i66_config :	unconfig
 	>include/config.h ; \
 	>include/config.h ; \
 	if [ "$${FLASH}" == "INTEL" ] ; then \
 	if [ "$${FLASH}" == "INTEL" ] ; then \
 		echo "#undef CFG_ATMEL_BOOT" >> $(obj)include/config.h ; \
 		echo "#undef CFG_ATMEL_BOOT" >> $(obj)include/config.h ; \
+		echo "TEXT_BASE = 0x00000000" > $(obj)board/freescale/m54455evb/config.tmp ; \
+		cp $(obj)board/freescale/m54455evb/u-boot.int $(obj)board/freescale/m54455evb/u-boot.lds ; \
 		echo "... with INTEL boot..." ; \
 		echo "... with INTEL boot..." ; \
 	else \
 	else \
 		echo "#define CFG_ATMEL_BOOT"	>> $(obj)include/config.h ; \
 		echo "#define CFG_ATMEL_BOOT"	>> $(obj)include/config.h ; \
+		echo "TEXT_BASE = 0x04000000" > $(obj)board/freescale/m54455evb/config.tmp ; \
+		cp $(obj)board/freescale/m54455evb/u-boot.atm $(obj)board/freescale/m54455evb/u-boot.lds ; \
 		echo "... with ATMEL boot..." ; \
 		echo "... with ATMEL boot..." ; \
 	fi; \
 	fi; \
 	echo "#define CFG_INPUT_CLKSRC $${FREQ}" >> $(obj)include/config.h ; \
 	echo "#define CFG_INPUT_CLKSRC $${FREQ}" >> $(obj)include/config.h ; \

+ 1 - 1
README

@@ -2123,7 +2123,7 @@ to save the current settings.
 	to be a good choice since it makes it far enough from the
 	to be a good choice since it makes it far enough from the
 	start of the data area as well as from the stack pointer.
 	start of the data area as well as from the stack pointer.
 
 
-Please note that the environment is read-only as long as the monitor
+Please note that the environment is read-only until the monitor
 has been relocated to RAM and a RAM copy of the environment has been
 has been relocated to RAM and a RAM copy of the environment has been
 created; also, when using EEPROM you will have to use getenv_r()
 created; also, when using EEPROM you will have to use getenv_r()
 until then to read environment variables.
 until then to read environment variables.

+ 1 - 1
blackfin_config.mk

@@ -21,4 +21,4 @@
 # MA 02111-1307 USA
 # MA 02111-1307 USA
 #
 #
 
 
-PLATFORM_CPPFLAGS += -DCONFIG_BLACKFIN
+PLATFORM_CPPFLAGS += -DCONFIG_BLACKFIN -D__BLACKFIN__

+ 1 - 0
board/ads5121/u-boot.lds

@@ -51,6 +51,7 @@ SECTIONS
   {
   {
     cpu/mpc512x/start.o	(.text)
     cpu/mpc512x/start.o	(.text)
     *(.text)
     *(.text)
+    *(.fixup)
     *(.got1)
     *(.got1)
     . = ALIGN(16);
     . = ALIGN(16);
     *(.rodata)
     *(.rodata)

+ 15 - 8
board/cds/common/ft_board.c

@@ -37,17 +37,24 @@ static void cds_pci_fixup(void *blob)
 
 
 	map = ft_get_prop(blob, "/" OF_SOC "/pci@8000/interrupt-map", &len);
 	map = ft_get_prop(blob, "/" OF_SOC "/pci@8000/interrupt-map", &len);
 
 
-	len /= sizeof(u32);
+	if (!map)
+		map = ft_get_prop(blob, "/" OF_PCI "/interrupt-map", &len);
 
 
-	slot = get_pci_slot();
+	if (map) {
+		len /= sizeof(u32);
 
 
-	for (i=0;i<len;i+=7) {
-		/* We rotate the interrupt pins so that the mapping
-		 * changes depending on the slot the carrier card is in.
-		 */
-		map[3] = ((map[3] + slot - 2) % 4) + 1;
+		slot = get_pci_slot();
 
 
-		map+=7;
+		for (i=0;i<len;i+=7) {
+			/* We rotate the interrupt pins so that the mapping
+			 * changes depending on the slot the carrier card is in.
+			 */
+			map[3] = ((map[3] + slot - 2) % 4) + 1;
+
+			map+=7;
+		}
+	} else {
+		printf("*** Warning - No PCI node found\n");
 	}
 	}
 }
 }
 #endif
 #endif

+ 1 - 1
board/cds/mpc8541cds/u-boot.lds

@@ -69,7 +69,7 @@ SECTIONS
     cpu/mpc85xx/interrupts.o (.text)
     cpu/mpc85xx/interrupts.o (.text)
     cpu/mpc85xx/cpu_init.o (.text)
     cpu/mpc85xx/cpu_init.o (.text)
     cpu/mpc85xx/cpu.o (.text)
     cpu/mpc85xx/cpu.o (.text)
-    drivers/tsec.o (.text)
+    drivers/net/tsec.o (.text)
     cpu/mpc85xx/speed.o (.text)
     cpu/mpc85xx/speed.o (.text)
     cpu/mpc85xx/pci.o (.text)
     cpu/mpc85xx/pci.o (.text)
     common/dlmalloc.o (.text)
     common/dlmalloc.o (.text)

+ 1 - 1
board/cds/mpc8548cds/u-boot.lds

@@ -69,7 +69,7 @@ SECTIONS
     cpu/mpc85xx/interrupts.o (.text)
     cpu/mpc85xx/interrupts.o (.text)
     cpu/mpc85xx/cpu_init.o (.text)
     cpu/mpc85xx/cpu_init.o (.text)
     cpu/mpc85xx/cpu.o (.text)
     cpu/mpc85xx/cpu.o (.text)
-    drivers/tsec.o (.text)
+    drivers/net/tsec.o (.text)
     cpu/mpc85xx/speed.o (.text)
     cpu/mpc85xx/speed.o (.text)
     common/dlmalloc.o (.text)
     common/dlmalloc.o (.text)
     lib_generic/crc32.o (.text)
     lib_generic/crc32.o (.text)

+ 1 - 1
board/cds/mpc8555cds/u-boot.lds

@@ -69,7 +69,7 @@ SECTIONS
     cpu/mpc85xx/interrupts.o (.text)
     cpu/mpc85xx/interrupts.o (.text)
     cpu/mpc85xx/cpu_init.o (.text)
     cpu/mpc85xx/cpu_init.o (.text)
     cpu/mpc85xx/cpu.o (.text)
     cpu/mpc85xx/cpu.o (.text)
-    drivers/tsec.o (.text)
+    drivers/net/tsec.o (.text)
     cpu/mpc85xx/speed.o (.text)
     cpu/mpc85xx/speed.o (.text)
     cpu/mpc85xx/pci.o (.text)
     cpu/mpc85xx/pci.o (.text)
     common/dlmalloc.o (.text)
     common/dlmalloc.o (.text)

+ 1 - 1
board/cm5200/cm5200.c

@@ -276,7 +276,7 @@ static void ft_blob_update(void *blob, bd_t *bd)
 	memory_data[0] = cpu_to_be32(bd->bi_memstart);
 	memory_data[0] = cpu_to_be32(bd->bi_memstart);
 	memory_data[1] = cpu_to_be32(bd->bi_memsize);
 	memory_data[1] = cpu_to_be32(bd->bi_memsize);
 
 
-	nodeoffset = fdt_find_node_by_path (blob, "/memory");
+	nodeoffset = fdt_path_offset (blob, "/memory");
 	if (nodeoffset >= 0) {
 	if (nodeoffset >= 0) {
 		ret = fdt_setprop(blob, nodeoffset, "reg", memory_data,
 		ret = fdt_setprop(blob, nodeoffset, "reg", memory_data,
 					sizeof(memory_data));
 					sizeof(memory_data));

+ 1 - 0
board/cogent/u-boot.lds

@@ -55,6 +55,7 @@ SECTIONS
   {
   {
     *(.text)
     *(.text)
     common/environment.o(.text)
     common/environment.o(.text)
+    *(.fixup)
     *(.got1)
     *(.got1)
   }
   }
   _etext = .;
   _etext = .;

+ 4 - 0
board/dbau1x00/dbau1x00.c

@@ -25,6 +25,7 @@
 #include <command.h>
 #include <command.h>
 #include <asm/au1x00.h>
 #include <asm/au1x00.h>
 #include <asm/mipsregs.h>
 #include <asm/mipsregs.h>
+#include <asm/io.h>
 
 
 long int initdram(int board_type)
 long int initdram(int board_type)
 {
 {
@@ -77,6 +78,9 @@ int checkboard (void)
 	default:
 	default:
 		printf ("Unsupported cpu %d, proc_id=0x%x\n", proc_id >> 24, proc_id);
 		printf ("Unsupported cpu %d, proc_id=0x%x\n", proc_id >> 24, proc_id);
 	}
 	}
+
+	set_io_port_base(0);
+
 #ifdef CONFIG_IDE_PCMCIA
 #ifdef CONFIG_IDE_PCMCIA
 	/* Enable 3.3 V on slot 0 ( VCC )
 	/* Enable 3.3 V on slot 0 ( VCC )
 	   No 5V */
 	   No 5V */

+ 12 - 11
board/dbau1x00/u-boot.lds

@@ -43,21 +43,22 @@ SECTIONS
 	. = ALIGN(4);
 	. = ALIGN(4);
 	.data  : { *(.data) }
 	.data  : { *(.data) }
 
 
-	. = ALIGN(4);
-	.sdata  : { *(.sdata) }
-
-	_gp = ALIGN(16);
+	. = .;
+	_gp = ALIGN(16) + 0x7ff0;
 
 
-	__got_start = .;
-	.got  : { *(.got) }
-	__got_end = .;
+	.got : {
+	  __got_start = .;
+	  *(.got)
+	  __got_end = .;
+	}
 
 
 	.sdata  : { *(.sdata) }
 	.sdata  : { *(.sdata) }
 
 
-	. = .;
-	__u_boot_cmd_start = .;
-	.u_boot_cmd : { *(.u_boot_cmd) }
-	__u_boot_cmd_end = .;
+	.u_boot_cmd : {
+	  __u_boot_cmd_start = .;
+	  *(.u_boot_cmd)
+	  __u_boot_cmd_end = .;
+	}
 
 
 	uboot_end_data = .;
 	uboot_end_data = .;
 	num_got_entries = (__got_end - __got_start) >> 2;
 	num_got_entries = (__got_end - __got_start) >> 2;

+ 4 - 1
board/freescale/common/pixis.c

@@ -207,13 +207,16 @@ void read_from_px_regs_altbank(int set)
 	out8(PIXIS_BASE + PIXIS_VCFGEN1, tmp);
 	out8(PIXIS_BASE + PIXIS_VCFGEN1, tmp);
 }
 }
 
 
+#ifndef CFG_PIXIS_VBOOT_MASK
+#define CFG_PIXIS_VBOOT_MASK	0x40
+#endif
 
 
 void set_altbank(void)
 void set_altbank(void)
 {
 {
 	u8 tmp;
 	u8 tmp;
 
 
 	tmp = in8(PIXIS_BASE + PIXIS_VBOOT);
 	tmp = in8(PIXIS_BASE + PIXIS_VBOOT);
-	tmp ^= 0x40;
+	tmp ^= CFG_PIXIS_VBOOT_MASK;
 
 
 	out8(PIXIS_BASE + PIXIS_VBOOT, tmp);
 	out8(PIXIS_BASE + PIXIS_VBOOT, tmp);
 }
 }

+ 3 - 1
board/freescale/m54455evb/config.mk

@@ -22,4 +22,6 @@
 # MA 02111-1307 USA
 # MA 02111-1307 USA
 #
 #
 
 
-TEXT_BASE = 0
+sinclude $(OBJTREE)/board/$(BOARDDIR)/config.tmp
+
+PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE)

+ 144 - 0
board/freescale/m54455evb/u-boot.atm

@@ -0,0 +1,144 @@
+/*
+ * (C) Copyright 2000
+ * 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_ARCH(m68k)
+SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/lib);
+/* Do we need any of these for elf?
+   __DYNAMIC = 0;    */
+SECTIONS
+{
+  /* Read-only sections, merged into text segment: */
+  . = + SIZEOF_HEADERS;
+  .interp : { *(.interp) }
+  .hash          : { *(.hash)		}
+  .dynsym        : { *(.dynsym)		}
+  .dynstr        : { *(.dynstr)		}
+  .rel.text      : { *(.rel.text)		}
+  .rela.text     : { *(.rela.text) 	}
+  .rel.data      : { *(.rel.data)		}
+  .rela.data     : { *(.rela.data) 	}
+  .rel.rodata    : { *(.rel.rodata) 	}
+  .rela.rodata   : { *(.rela.rodata) 	}
+  .rel.got       : { *(.rel.got)		}
+  .rela.got      : { *(.rela.got)		}
+  .rel.ctors     : { *(.rel.ctors)	}
+  .rela.ctors    : { *(.rela.ctors)	}
+  .rel.dtors     : { *(.rel.dtors)	}
+  .rela.dtors    : { *(.rela.dtors)	}
+  .rel.bss       : { *(.rel.bss)		}
+  .rela.bss      : { *(.rela.bss)		}
+  .rel.plt       : { *(.rel.plt)		}
+  .rela.plt      : { *(.rela.plt)		}
+  .init          : { *(.init)	}
+  .plt : { *(.plt) }
+  .text      :
+  {
+    /* WARNING - the following is hand-optimized to fit within	*/
+    /* the sector layout of our flash chips!	XXX FIXME XXX	*/
+
+    cpu/mcf5445x/start.o		(.text)
+    lib_m68k/traps.o		(.text)
+    lib_m68k/interrupts.o	(.text)
+    common/dlmalloc.o		(.text)
+    lib_generic/zlib.o		(.text)
+
+    . = DEFINED(env_offset) ? env_offset : .;
+    common/environment.o	(.text)
+
+    *(.text)
+    *(.fixup)
+    *(.got1)
+  }
+  _etext = .;
+  PROVIDE (etext = .);
+  .rodata    :
+  {
+    *(.rodata)
+    *(.rodata1)
+  }
+  .fini      : { *(.fini)    } =0
+  .ctors     : { *(.ctors)   }
+  .dtors     : { *(.dtors)   }
+
+  /* Read-write section, merged into data segment: */
+  . = (. + 0x00FF) & 0xFFFFFF00;
+  _erotext = .;
+  PROVIDE (erotext = .);
+
+  .reloc   :
+  {
+    __got_start = .;
+    *(.got)
+    __got_end = .;
+    _GOT2_TABLE_ = .;
+    *(.got2)
+    _FIXUP_TABLE_ = .;
+    *(.fixup)
+  }
+  __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
+  __fixup_entries = (. - _FIXUP_TABLE_)>>2;
+
+  .data    :
+  {
+    *(.data)
+    *(.data1)
+    *(.sdata)
+    *(.sdata2)
+    *(.dynamic)
+    CONSTRUCTORS
+  }
+  _edata  =  .;
+  PROVIDE (edata = .);
+
+  . = .;
+  __u_boot_cmd_start = .;
+  .u_boot_cmd : { *(.u_boot_cmd) }
+  __u_boot_cmd_end = .;
+
+
+  . = .;
+  __start___ex_table = .;
+  __ex_table : { *(__ex_table) }
+  __stop___ex_table = .;
+
+  . = ALIGN(256);
+  __init_begin = .;
+  .text.init : { *(.text.init) }
+  .data.init : { *(.data.init) }
+  . = ALIGN(256);
+  __init_end = .;
+
+  __bss_start = .;
+  .bss       :
+  {
+   _sbss = .;
+   *(.sbss) *(.scommon)
+   *(.dynbss)
+   *(.bss)
+   *(COMMON)
+   . = ALIGN(4);
+   _ebss = .;
+  }
+  _end = . ;
+  PROVIDE (end = .);
+}

+ 141 - 0
board/freescale/m54455evb/u-boot.int

@@ -0,0 +1,141 @@
+/*
+ * (C) Copyright 2000
+ * 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_ARCH(m68k)
+SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/lib);
+/* Do we need any of these for elf?
+   __DYNAMIC = 0;    */
+SECTIONS
+{
+  /* Read-only sections, merged into text segment: */
+  . = + SIZEOF_HEADERS;
+  .interp : { *(.interp) }
+  .hash          : { *(.hash)		}
+  .dynsym        : { *(.dynsym)		}
+  .dynstr        : { *(.dynstr)		}
+  .rel.text      : { *(.rel.text)		}
+  .rela.text     : { *(.rela.text) 	}
+  .rel.data      : { *(.rel.data)		}
+  .rela.data     : { *(.rela.data) 	}
+  .rel.rodata    : { *(.rel.rodata) 	}
+  .rela.rodata   : { *(.rela.rodata) 	}
+  .rel.got       : { *(.rel.got)		}
+  .rela.got      : { *(.rela.got)		}
+  .rel.ctors     : { *(.rel.ctors)	}
+  .rela.ctors    : { *(.rela.ctors)	}
+  .rel.dtors     : { *(.rel.dtors)	}
+  .rela.dtors    : { *(.rela.dtors)	}
+  .rel.bss       : { *(.rel.bss)		}
+  .rela.bss      : { *(.rela.bss)		}
+  .rel.plt       : { *(.rel.plt)		}
+  .rela.plt      : { *(.rela.plt)		}
+  .init          : { *(.init)	}
+  .plt : { *(.plt) }
+  .text      :
+  {
+    /* WARNING - the following is hand-optimized to fit within	*/
+    /* the sector layout of our flash chips!	XXX FIXME XXX	*/
+
+    cpu/mcf5445x/start.o		(.text)
+    lib_m68k/traps.o		(.text)
+    lib_m68k/interrupts.o	(.text)
+    common/dlmalloc.o		(.text)
+    lib_generic/zlib.o		(.text)
+
+    *(.text)
+    *(.fixup)
+    *(.got1)
+  }
+  _etext = .;
+  PROVIDE (etext = .);
+  .rodata    :
+  {
+    *(.rodata)
+    *(.rodata1)
+  }
+  .fini      : { *(.fini)    } =0
+  .ctors     : { *(.ctors)   }
+  .dtors     : { *(.dtors)   }
+
+  /* Read-write section, merged into data segment: */
+  . = (. + 0x00FF) & 0xFFFFFF00;
+  _erotext = .;
+  PROVIDE (erotext = .);
+
+  .reloc   :
+  {
+    __got_start = .;
+    *(.got)
+    __got_end = .;
+    _GOT2_TABLE_ = .;
+    *(.got2)
+    _FIXUP_TABLE_ = .;
+    *(.fixup)
+  }
+  __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
+  __fixup_entries = (. - _FIXUP_TABLE_)>>2;
+
+  .data    :
+  {
+    *(.data)
+    *(.data1)
+    *(.sdata)
+    *(.sdata2)
+    *(.dynamic)
+    CONSTRUCTORS
+  }
+  _edata  =  .;
+  PROVIDE (edata = .);
+
+  . = .;
+  __u_boot_cmd_start = .;
+  .u_boot_cmd : { *(.u_boot_cmd) }
+  __u_boot_cmd_end = .;
+
+
+  . = .;
+  __start___ex_table = .;
+  __ex_table : { *(__ex_table) }
+  __stop___ex_table = .;
+
+  . = ALIGN(256);
+  __init_begin = .;
+  .text.init : { *(.text.init) }
+  .data.init : { *(.data.init) }
+  . = ALIGN(256);
+  __init_end = .;
+
+  __bss_start = .;
+  .bss       :
+  {
+   _sbss = .;
+   *(.sbss) *(.scommon)
+   *(.dynbss)
+   *(.bss)
+   *(COMMON)
+   . = ALIGN(4);
+   _ebss = .;
+  }
+  _end = . ;
+  PROVIDE (end = .);
+}

+ 1 - 1
board/freescale/mpc832xemds/pci.c

@@ -269,7 +269,7 @@ ft_pci_setup(void *blob, bd_t *bd)
 	int err;
 	int err;
 	int tmp[2];
 	int tmp[2];
 
 
-	nodeoffset = fdt_find_node_by_path(blob, "/" OF_SOC "/pci@8500");
+	nodeoffset = fdt_path_offset(blob, "/" OF_SOC "/pci@8500");
 	if (nodeoffset >= 0) {
 	if (nodeoffset >= 0) {
 		tmp[0] = cpu_to_be32(hose[0].first_busno);
 		tmp[0] = cpu_to_be32(hose[0].first_busno);
 		tmp[1] = cpu_to_be32(hose[0].last_busno);
 		tmp[1] = cpu_to_be32(hose[0].last_busno);

+ 2 - 2
board/freescale/mpc8349emds/pci.c

@@ -396,7 +396,7 @@ ft_pci_setup(void *blob, bd_t *bd)
 	int err;
 	int err;
 	int tmp[2];
 	int tmp[2];
 
 
-	nodeoffset = fdt_find_node_by_path(blob, "/" OF_SOC "/pci@8500");
+	nodeoffset = fdt_path_offset(blob, "/" OF_SOC "/pci@8500");
 	if (nodeoffset >= 0) {
 	if (nodeoffset >= 0) {
 		tmp[0] = cpu_to_be32(pci_hose[0].first_busno);
 		tmp[0] = cpu_to_be32(pci_hose[0].first_busno);
 		tmp[1] = cpu_to_be32(pci_hose[0].last_busno);
 		tmp[1] = cpu_to_be32(pci_hose[0].last_busno);
@@ -408,7 +408,7 @@ ft_pci_setup(void *blob, bd_t *bd)
 				  tmp, sizeof(tmp[0]));
 				  tmp, sizeof(tmp[0]));
 	}
 	}
 #ifdef CONFIG_MPC83XX_PCI2
 #ifdef CONFIG_MPC83XX_PCI2
-	nodeoffset = fdt_find_node_by_path(blob, "/" OF_SOC "/pci@8600");
+	nodeoffset = fdt_path_offset(blob, "/" OF_SOC "/pci@8600");
 	if (nodeoffset >= 0) {
 	if (nodeoffset >= 0) {
 		tmp[0] = cpu_to_be32(pci_hose[1].first_busno);
 		tmp[0] = cpu_to_be32(pci_hose[1].first_busno);
 		tmp[1] = cpu_to_be32(pci_hose[1].last_busno);
 		tmp[1] = cpu_to_be32(pci_hose[1].last_busno);

+ 2 - 2
board/freescale/mpc8349itx/pci.c

@@ -342,7 +342,7 @@ ft_pci_setup(void *blob, bd_t *bd)
 	int err;
 	int err;
 	int tmp[2];
 	int tmp[2];
 
 
-	nodeoffset = fdt_find_node_by_path(blob, "/" OF_SOC "/pci@8500");
+	nodeoffset = fdt_path_offset(blob, "/" OF_SOC "/pci@8500");
 	if (nodeoffset >= 0) {
 	if (nodeoffset >= 0) {
 		tmp[0] = cpu_to_be32(pci_hose[0].first_busno);
 		tmp[0] = cpu_to_be32(pci_hose[0].first_busno);
 		tmp[1] = cpu_to_be32(pci_hose[0].last_busno);
 		tmp[1] = cpu_to_be32(pci_hose[0].last_busno);
@@ -354,7 +354,7 @@ ft_pci_setup(void *blob, bd_t *bd)
 				  tmp, sizeof(tmp[0]));
 				  tmp, sizeof(tmp[0]));
 	}
 	}
 #ifdef CONFIG_MPC83XX_PCI2
 #ifdef CONFIG_MPC83XX_PCI2
-	nodeoffset = fdt_find_node_by_path(blob, "/" OF_SOC "/pci@8500");
+	nodeoffset = fdt_path_offset(blob, "/" OF_SOC "/pci@8500");
 	if (nodeoffset >= 0) {
 	if (nodeoffset >= 0) {
 		tmp[0] = cpu_to_be32(pci_hose[1].first_busno);
 		tmp[0] = cpu_to_be32(pci_hose[1].first_busno);
 		tmp[1] = cpu_to_be32(pci_hose[1].last_busno);
 		tmp[1] = cpu_to_be32(pci_hose[1].last_busno);

+ 1 - 1
board/freescale/mpc8360emds/pci.c

@@ -269,7 +269,7 @@ ft_pci_setup(void *blob, bd_t *bd)
 	int err;
 	int err;
 	int tmp[2];
 	int tmp[2];
 
 
-	nodeoffset = fdt_find_node_by_path(blob, "/" OF_SOC "/pci@8500");
+	nodeoffset = fdt_path_offset(blob, "/" OF_SOC "/pci@8500");
 	if (nodeoffset >= 0) {
 	if (nodeoffset >= 0) {
 		tmp[0] = cpu_to_be32(hose[0].first_busno);
 		tmp[0] = cpu_to_be32(hose[0].first_busno);
 		tmp[1] = cpu_to_be32(hose[0].last_busno);
 		tmp[1] = cpu_to_be32(hose[0].last_busno);

+ 1 - 1
board/freescale/mpc8544ds/mpc8544ds.c

@@ -227,7 +227,7 @@ pci_init_board(void)
 		 * Activate ULI1575 legacy chip by performing a fake
 		 * Activate ULI1575 legacy chip by performing a fake
 		 * memory access.  Needed to make ULI RTC work.
 		 * memory access.  Needed to make ULI RTC work.
 		 */
 		 */
-		in_be32(CFG_PCIE3_MEM_BASE);
+		in_be32((u32 *)CFG_PCIE3_MEM_BASE);
 	} else {
 	} else {
 		printf ("    PCIE3: disabled\n");
 		printf ("    PCIE3: disabled\n");
 	}
 	}

+ 5 - 3
board/gth2/gth2.c

@@ -26,14 +26,13 @@
 #include <asm/au1x00.h>
 #include <asm/au1x00.h>
 #include <asm/addrspace.h>
 #include <asm/addrspace.h>
 #include <asm/mipsregs.h>
 #include <asm/mipsregs.h>
+#include <asm/io.h>
 #include <watchdog.h>
 #include <watchdog.h>
 
 
 #include "ee_access.h"
 #include "ee_access.h"
 
 
 static int wdi_status = 0;
 static int wdi_status = 0;
 
 
-unsigned long mips_io_port_base = 0;
-
 #define SDRAM_SIZE ((64*1024*1024)-(12*4096))
 #define SDRAM_SIZE ((64*1024*1024)-(12*4096))
 
 
 
 
@@ -147,6 +146,9 @@ int checkboard (void)
 	default:
 	default:
 		printf ("Unsupported cpu %d, proc_id=0x%x\n", proc_id >> 24, proc_id);
 		printf ("Unsupported cpu %d, proc_id=0x%x\n", proc_id >> 24, proc_id);
 	}
 	}
+
+	set_io_port_base(0);
+
 #ifdef CONFIG_IDE_PCMCIA
 #ifdef CONFIG_IDE_PCMCIA
 	/* PCMCIA is on a 36 bit physical address.
 	/* PCMCIA is on a 36 bit physical address.
 	   We need to map it into a 32 bit addresses */
 	   We need to map it into a 32 bit addresses */
@@ -429,7 +431,7 @@ int misc_init_r(void){
 	    (Rx[8] != ':') | (Rx[11] != ':') | (Rx[14] != ':')) {
 	    (Rx[8] != ':') | (Rx[11] != ':') | (Rx[14] != ':')) {
 		printf ("*** ethernet addr invalid, using default ***\n");
 		printf ("*** ethernet addr invalid, using default ***\n");
 	} else {
 	} else {
-		setenv ("ethaddr", Rx);
+		setenv ("ethaddr", (char *)Rx);
 	}
 	}
 	return (0);
 	return (0);
 }
 }

+ 4 - 0
board/gth2/lowlevel_init.S

@@ -413,7 +413,9 @@ noCacheJump:
 	j clearmem
 	j clearmem
 	nop
 	nop
 
 
+#if 0
 	.globl	memtest
 	.globl	memtest
+#endif
 memtest:
 memtest:
 	/* Fill memory with address */
 	/* Fill memory with address */
 	li	t0, 0x80000000
 	li	t0, 0x80000000
@@ -434,7 +436,9 @@ mt1:	lw	t2, 0(t0)
 	bne	t1, zero, mt1
 	bne	t1, zero, mt1
 	nop
 	nop
 	nop
 	nop
+#if 0
 	.globl	clearmem
 	.globl	clearmem
+#endif
 clearmem:
 clearmem:
 		/* Clear memory */
 		/* Clear memory */
 	li	t0, 0x80000000
 	li	t0, 0x80000000

+ 12 - 10
board/gth2/u-boot.lds

@@ -43,20 +43,22 @@ SECTIONS
 	. = ALIGN(4);
 	. = ALIGN(4);
 	.data  : { *(.data) }
 	.data  : { *(.data) }
 
 
-	. = ALIGN(4);
-	.sdata  : { *(.sdata) }
-
-	_gp = ALIGN(16);
+	. = .;
+	_gp = ALIGN(16) + 0x7ff0;
 
 
-	__got_start = .;
-	.got  : { *(.got) }
-	__got_end = .;
+	.got : {
+	  __got_start = .;
+	  *(.got)
+	  __got_end = .;
+	}
 
 
 	.sdata  : { *(.sdata) }
 	.sdata  : { *(.sdata) }
 
 
-	__u_boot_cmd_start = .;
-	.u_boot_cmd : { *(.u_boot_cmd) }
-	__u_boot_cmd_end = .;
+	.u_boot_cmd : {
+	  __u_boot_cmd_start = .;
+	  *(.u_boot_cmd)
+	  __u_boot_cmd_end = .;
+	}
 
 
 	uboot_end_data = .;
 	uboot_end_data = .;
 	num_got_entries = (__got_end - __got_start) >> 2;
 	num_got_entries = (__got_end - __got_start) >> 2;

+ 1 - 0
board/hymod/u-boot.lds

@@ -69,6 +69,7 @@ SECTIONS
     common/environment.o(.text)
     common/environment.o(.text)
 
 
     *(.text)
     *(.text)
+    *(.fixup)
     *(.got1)
     *(.got1)
   }
   }
   _etext = .;
   _etext = .;

+ 73 - 33
board/ids8247/ids8247.c

@@ -25,6 +25,12 @@
 #include <ioports.h>
 #include <ioports.h>
 #include <mpc8260.h>
 #include <mpc8260.h>
 
 
+#if defined(CONFIG_OF_LIBFDT)
+#include <libfdt.h>
+#include <libfdt_env.h>
+#include <fdt_support.h>
+#endif
+
 DECLARE_GLOBAL_DATA_PTR;
 DECLARE_GLOBAL_DATA_PTR;
 
 
 /*
 /*
@@ -38,12 +44,12 @@ const iop_conf_t iop_conf_tab[4][32] = {
 
 
     /* Port A configuration */
     /* Port A configuration */
     {	/*	      conf ppar psor pdir podr pdat */
     {	/*	      conf ppar psor pdir podr pdat */
-	/* PA31 */ {   0,   1,	 1,   0,   0,	0   }, /* FCC1 COL */
-	/* PA30 */ {   0,   1,	 1,   0,   0,	0   }, /* FCC1 CRS */
-	/* PA29 */ {   0,   1,	 1,   1,   0,	0   }, /* FCC1 TXER */
-	/* PA28 */ {   0,   1,	 1,   1,   0,	0   }, /* FCC1 TXEN */
-	/* PA27 */ {   0,   1,	 1,   0,   0,	0   }, /* FCC1 RXDV */
-	/* PA26 */ {   0,   1,	 1,   0,   0,	0   }, /* FCC1 RXER */
+	/* PA31 */ {   1,   1,	 1,   0,   0,	0   }, /* FCC1 COL */
+	/* PA30 */ {   1,   1,	 1,   0,   0,	0   }, /* FCC1 CRS */
+	/* PA29 */ {   1,   1,	 1,   1,   0,	0   }, /* FCC1 TXER */
+	/* PA28 */ {   1,   1,	 1,   1,   0,	0   }, /* FCC1 TXEN */
+	/* PA27 */ {   1,   1,	 1,   0,   0,	0   }, /* FCC1 RXDV */
+	/* PA26 */ {   1,   1,	 1,   0,   0,	0   }, /* FCC1 RXER */
 	/* PA25 */ {   0,   0,	 0,   0,   1,	0   }, /* 8247_P0 */
 	/* PA25 */ {   0,   0,	 0,   0,   1,	0   }, /* 8247_P0 */
 #if defined(CONFIG_SOFT_I2C)
 #if defined(CONFIG_SOFT_I2C)
 	/* PA24 */ {   1,   0,	 0,   0,   1,	1   }, /* I2C_SDA2 */
 	/* PA24 */ {   1,   0,	 0,   0,   1,	1   }, /* I2C_SDA2 */
@@ -53,14 +59,14 @@ const iop_conf_t iop_conf_tab[4][32] = {
 	/* PA23 */ {   0,   0,	 0,   1,   0,	0   }, /* PA23 */
 	/* PA23 */ {   0,   0,	 0,   1,   0,	0   }, /* PA23 */
 #endif
 #endif
 	/* PA22 */ {   0,   0,	 0,   0,   1,	0   }, /* SMC2_DCD */
 	/* PA22 */ {   0,   0,	 0,   0,   1,	0   }, /* SMC2_DCD */
-	/* PA21 */ {   0,   1,	 0,   1,   0,	0   }, /* FCC1 TXD3 */
-	/* PA20 */ {   0,   1,	 0,   1,   0,	0   }, /* FCC1 TXD2 */
-	/* PA19 */ {   0,   1,	 0,   1,   0,	0   }, /* FCC1 TXD1 */
-	/* PA18 */ {   0,   1,	 0,   1,   0,	0   }, /* FCC1 TXD0 */
-	/* PA17 */ {   0,   1,	 0,   0,   0,	0   }, /* FCC1 RXD0 */
-	/* PA16 */ {   0,   1,	 0,   0,   0,	0   }, /* FCC1 RXD1 */
-	/* PA15 */ {   0,   1,	 0,   0,   0,	0   }, /* FCC1 RXD2 */
-	/* PA14 */ {   0,   1,	 0,   0,   0,	0   }, /* FCC1 RXD3 */
+	/* PA21 */ {   1,   1,	 0,   1,   0,	0   }, /* FCC1 TXD3 */
+	/* PA20 */ {   1,   1,	 0,   1,   0,	0   }, /* FCC1 TXD2 */
+	/* PA19 */ {   1,   1,	 0,   1,   0,	0   }, /* FCC1 TXD1 */
+	/* PA18 */ {   1,   1,	 0,   1,   0,	0   }, /* FCC1 TXD0 */
+	/* PA17 */ {   1,   1,	 0,   0,   0,	0   }, /* FCC1 RXD0 */
+	/* PA16 */ {   1,   1,	 0,   0,   0,	0   }, /* FCC1 RXD1 */
+	/* PA15 */ {   1,   1,	 0,   0,   0,	0   }, /* FCC1 RXD2 */
+	/* PA14 */ {   1,   1,	 0,   0,   0,	0   }, /* FCC1 RXD3 */
 	/* PA13 */ {   0,   0,	 0,   1,   1,	0   }, /* SMC2_RTS */
 	/* PA13 */ {   0,   0,	 0,   1,   1,	0   }, /* SMC2_RTS */
 	/* PA12 */ {   0,   0,	 0,   0,   1,	0   }, /* SMC2_CTS */
 	/* PA12 */ {   0,   0,	 0,   0,   1,	0   }, /* SMC2_CTS */
 	/* PA11 */ {   0,   0,	 0,   1,   1,	0   }, /* SMC2_DTR */
 	/* PA11 */ {   0,   0,	 0,   1,   1,	0   }, /* SMC2_DTR */
@@ -79,20 +85,20 @@ const iop_conf_t iop_conf_tab[4][32] = {
 
 
     /* Port B configuration */
     /* Port B configuration */
     {	/*	      conf ppar psor pdir podr pdat */
     {	/*	      conf ppar psor pdir podr pdat */
-	/* PB31 */ {   1,   1,	 0,   1,   0,	0   }, /* FCC2 MII TX_ER */
-	/* PB30 */ {   1,   1,	 0,   0,   0,	0   }, /* FCC2 MII RX_DV */
-	/* PB29 */ {   1,   1,	 1,   1,   0,	0   }, /* FCC2 MII TX_EN */
-	/* PB28 */ {   1,   1,	 0,   0,   0,	0   }, /* FCC2 MII RX_ER */
-	/* PB27 */ {   1,   1,	 0,   0,   0,	0   }, /* FCC2 MII COL */
-	/* PB26 */ {   1,   1,	 0,   0,   0,	0   }, /* FCC2 MII CRS */
-	/* PB25 */ {   1,   1,	 0,   1,   0,	0   }, /* FCC2 MII TxD[3] */
-	/* PB24 */ {   1,   1,	 0,   1,   0,	0   }, /* FCC2 MII TxD[2] */
-	/* PB23 */ {   1,   1,	 0,   1,   0,	0   }, /* FCC2 MII TxD[1] */
-	/* PB22 */ {   1,   1,	 0,   1,   0,	0   }, /* FCC2 MII TxD[0] */
-	/* PB21 */ {   1,   1,	 0,   0,   0,	0   }, /* FCC2 MII RxD[0] */
-	/* PB20 */ {   1,   1,	 0,   0,   0,	0   }, /* FCC2 MII RxD[1] */
-	/* PB19 */ {   1,   1,	 0,   0,   0,	0   }, /* FCC2 MII RxD[2] */
-	/* PB18 */ {   1,   1,	 0,   0,   0,	0   }, /* FCC2 MII RxD[3] */
+	/* PB31 */ {   0,   1,	 0,   1,   0,	0   }, /* FCC2 MII TX_ER */
+	/* PB30 */ {   0,   1,	 0,   0,   0,	0   }, /* FCC2 MII RX_DV */
+	/* PB29 */ {   0,   1,	 1,   1,   0,	0   }, /* FCC2 MII TX_EN */
+	/* PB28 */ {   0,   1,	 0,   0,   0,	0   }, /* FCC2 MII RX_ER */
+	/* PB27 */ {   0,   1,	 0,   0,   0,	0   }, /* FCC2 MII COL */
+	/* PB26 */ {   0,   1,	 0,   0,   0,	0   }, /* FCC2 MII CRS */
+	/* PB25 */ {   0,   1,	 0,   1,   0,	0   }, /* FCC2 MII TxD[3] */
+	/* PB24 */ {   0,   1,	 0,   1,   0,	0   }, /* FCC2 MII TxD[2] */
+	/* PB23 */ {   0,   1,	 0,   1,   0,	0   }, /* FCC2 MII TxD[1] */
+	/* PB22 */ {   0,   1,	 0,   1,   0,	0   }, /* FCC2 MII TxD[0] */
+	/* PB21 */ {   0,   1,	 0,   0,   0,	0   }, /* FCC2 MII RxD[0] */
+	/* PB20 */ {   0,   1,	 0,   0,   0,	0   }, /* FCC2 MII RxD[1] */
+	/* PB19 */ {   0,   1,	 0,   0,   0,	0   }, /* FCC2 MII RxD[2] */
+	/* PB18 */ {   0,   1,	 0,   0,   0,	0   }, /* FCC2 MII RxD[3] */
 	/* PB17 */ {   0,   0,	 0,   0,   0,	0   }, /* PB17 */
 	/* PB17 */ {   0,   0,	 0,   0,   0,	0   }, /* PB17 */
 	/* PB16 */ {   0,   0,	 0,   0,   0,	0   }, /* PB16 */
 	/* PB16 */ {   0,   0,	 0,   0,   0,	0   }, /* PB16 */
 	/* PB15 */ {   0,   0,	 0,   0,   0,	0   }, /* PB15 */
 	/* PB15 */ {   0,   0,	 0,   0,   0,	0   }, /* PB15 */
@@ -123,8 +129,8 @@ const iop_conf_t iop_conf_tab[4][32] = {
 	/* PC26 */ {   0,   0,	 0,   1,   0,	0   }, /* PC26 */
 	/* PC26 */ {   0,   0,	 0,   1,   0,	0   }, /* PC26 */
 	/* PC25 */ {   0,   1,	 1,   0,   0,	0   }, /* SYNC_IN */
 	/* PC25 */ {   0,   1,	 1,   0,   0,	0   }, /* SYNC_IN */
 	/* PC24 */ {   0,   0,	 0,   1,   0,	0   }, /* PC24 */
 	/* PC24 */ {   0,   0,	 0,   1,   0,	0   }, /* PC24 */
-	/* PC23 */ {   0,   1,	 0,   1,   0,	0   }, /* ATMTFCLK */
-	/* PC22 */ {   0,   1,	 0,   0,   0,	0   }, /* ATMRFCLK */
+	/* PC23 */ {   1,   1,	 0,   0,   0,	0   }, /* FCC1 MII TX_CLK */
+	/* PC22 */ {   1,   1,	 0,   0,   0,	0   }, /* FCC1 MII RX_CLK */
 	/* PC21 */ {   0,   1,	 0,   0,   0,	0   }, /* SCC1 EN RXCLK */
 	/* PC21 */ {   0,   1,	 0,   0,   0,	0   }, /* SCC1 EN RXCLK */
 	/* PC20 */ {   0,   1,	 0,   0,   0,	0   }, /* SCC1 EN TXCLK */
 	/* PC20 */ {   0,   1,	 0,   0,   0,	0   }, /* SCC1 EN TXCLK */
 	/* PC19 */ {   1,   1,	 0,   0,   0,	0   }, /* FCC2 MII RX_CLK */
 	/* PC19 */ {   1,   1,	 0,   0,   0,	0   }, /* FCC2 MII RX_CLK */
@@ -180,7 +186,7 @@ const iop_conf_t iop_conf_tab[4][32] = {
 	/* PD10 */ {   0,   0,	 0,   0,   0,	0   }, /* PD10 */
 	/* PD10 */ {   0,   0,	 0,   0,   0,	0   }, /* PD10 */
 	/* PD9	*/ {   0,   0,	 0,   0,   0,	0   }, /* PD9 */
 	/* PD9	*/ {   0,   0,	 0,   0,   0,	0   }, /* PD9 */
 	/* PD8	*/ {   0,   0,	 0,   0,   0,	0   }, /* PD8 */
 	/* PD8	*/ {   0,   0,	 0,   0,   0,	0   }, /* PD8 */
-	/* PD7	*/ {   0,   0,	 0,   1,   0,	1   }, /* MII_MDIO */
+	/* PD7	*/ {   1,   0,	 0,   1,   0,	1   }, /* MII_MDIO */
 	/* PD6	*/ {   0,   0,	 0,   1,   0,	1   }, /* PD6 */
 	/* PD6	*/ {   0,   0,	 0,   1,   0,	1   }, /* PD6 */
 	/* PD5	*/ {   0,   0,	 0,   1,   0,	1   }, /* PD5 */
 	/* PD5	*/ {   0,   0,	 0,   1,   0,	1   }, /* PD5 */
 	/* PD4	*/ {   0,   0,	 0,   1,   0,	1   }, /* PD4 */
 	/* PD4	*/ {   0,   0,	 0,   1,   0,	1   }, /* PD4 */
@@ -224,7 +230,7 @@ static long int try_init (volatile memctl8260_t * memctl, ulong sdmr,
 	 * mapped by the controller. That means, that the initial mapping has
 	 * mapped by the controller. That means, that the initial mapping has
 	 * to be (at least) twice as large as the maximum expected size.
 	 * to be (at least) twice as large as the maximum expected size.
 	 */
 	 */
-	maxsize = (1 + (~orx | 0x7fff)) / 2;
+	maxsize = (1 + (~orx | 0x7fff))/* / 2*/;
 
 
 	sdmr_ptr = &memctl->memc_psdmr;
 	sdmr_ptr = &memctl->memc_psdmr;
 	orx_ptr = &memctl->memc_or2;
 	orx_ptr = &memctl->memc_or2;
@@ -315,4 +321,38 @@ nand_init (void)
 	printf ("%4lu MB\n", totlen >>20);
 	printf ("%4lu MB\n", totlen >>20);
 }
 }
 
 
-#endif
+#endif	/* CFG_CMD_NAND */
+
+#if defined(CONFIG_OF_BOARD_SETUP) && defined(CONFIG_OF_LIBFDT)
+/*
+ * update "memory" property in the blob
+ */
+void ft_blob_update(void *blob, bd_t *bd)
+{
+	int ret, nodeoffset = 0;
+	ulong memory_data[2] = {0};
+
+	memory_data[0] = cpu_to_be32(bd->bi_memstart);
+	memory_data[1] = cpu_to_be32(bd->bi_memsize);
+
+	nodeoffset = fdt_find_node_by_path (blob, "/memory");
+	if (nodeoffset >= 0) {
+		ret = fdt_setprop(blob, nodeoffset, "reg", memory_data,
+					sizeof(memory_data));
+	if (ret < 0)
+		printf("ft_blob_update): cannot set /memory/reg "
+			"property err:%s\n", fdt_strerror(ret));
+	}
+	else {
+		/* memory node is required in dts */
+		printf("ft_blob_update(): cannot find /memory node "
+		"err:%s\n", fdt_strerror(nodeoffset));
+	}
+}
+
+void ft_board_setup(void *blob, bd_t *bd)
+{
+	ft_cpu_setup( blob, bd);
+	ft_blob_update(blob, bd);
+}
+#endif /* defined(CONFIG_OF_BOARD_SETUP) && defined(CONFIG_OF_LIBFDT) */

+ 3 - 2
board/incaip/incaip.c

@@ -25,7 +25,7 @@
 #include <command.h>
 #include <command.h>
 #include <asm/addrspace.h>
 #include <asm/addrspace.h>
 #include <asm/inca-ip.h>
 #include <asm/inca-ip.h>
-
+#include <asm/io.h>
 
 
 extern uint incaip_get_cpuclk(void);
 extern uint incaip_get_cpuclk(void);
 
 
@@ -85,7 +85,6 @@ long int initdram(int board_type)
 
 
 int checkboard (void)
 int checkboard (void)
 {
 {
-
 	unsigned long chipid = *INCA_IP_WDT_CHIPID;
 	unsigned long chipid = *INCA_IP_WDT_CHIPID;
 	int part_num;
 	int part_num;
 
 
@@ -107,5 +106,7 @@ int checkboard (void)
 
 
 	printf("CPU Speed %d MHz\n", incaip_get_cpuclk()/1000000);
 	printf("CPU Speed %d MHz\n", incaip_get_cpuclk()/1000000);
 
 
+	set_io_port_base(0);
+
 	return 0;
 	return 0;
 }
 }

+ 12 - 11
board/incaip/u-boot.lds

@@ -43,21 +43,22 @@ SECTIONS
 	. = ALIGN(4);
 	. = ALIGN(4);
 	.data  : { *(.data) }
 	.data  : { *(.data) }
 
 
-	. = ALIGN(4);
-	.sdata  : { *(.sdata) }
-
-	_gp = ALIGN(16);
+	. = .;
+	_gp = ALIGN(16) + 0x7ff0;
 
 
-	__got_start = .;
-	.got  : { *(.got) }
-	__got_end = .;
+	.got : {
+	  __got_start = .;
+	  *(.got)
+	  __got_end = .;
+	}
 
 
 	.sdata  : { *(.sdata) }
 	.sdata  : { *(.sdata) }
 
 
-	. = .;
-	__u_boot_cmd_start = .;
-	.u_boot_cmd : { *(.u_boot_cmd) }
-	__u_boot_cmd_end = .;
+	.u_boot_cmd : {
+	  __u_boot_cmd_start = .;
+	  *(.u_boot_cmd)
+	  __u_boot_cmd_end = .;
+	}
 
 
 	uboot_end_data = .;
 	uboot_end_data = .;
 	num_got_entries = (__got_end - __got_start) >> 2;
 	num_got_entries = (__got_end - __got_start) >> 2;

+ 17 - 9
board/lwmon5/lwmon5.c

@@ -96,6 +96,23 @@ int board_early_init_f(void)
 
 
 	gpio_write_bit(CFG_GPIO_FLASH_WP, 1);
 	gpio_write_bit(CFG_GPIO_FLASH_WP, 1);
 
 
+	/*
+	 * Reset PHY's:
+	 * The PHY's need a 2nd reset pulse, since the MDIO address is latched
+	 * upon reset, and with the first reset upon powerup, the addresses are
+	 * not latched reliable, since the IRQ line is multiplexed with an
+	 * MDIO address. A 2nd reset at this time will make sure, that the
+	 * correct address is latched.
+	 */
+	gpio_write_bit(CFG_GPIO_PHY0_RST, 1);
+	gpio_write_bit(CFG_GPIO_PHY1_RST, 1);
+	udelay(1000);
+	gpio_write_bit(CFG_GPIO_PHY0_RST, 0);
+	gpio_write_bit(CFG_GPIO_PHY1_RST, 0);
+	udelay(1000);
+	gpio_write_bit(CFG_GPIO_PHY0_RST, 1);
+	gpio_write_bit(CFG_GPIO_PHY1_RST, 1);
+
 	return 0;
 	return 0;
 }
 }
 
 
@@ -230,15 +247,6 @@ int misc_init_r(void)
 	/* Write lime controller memory parameters */
 	/* Write lime controller memory parameters */
 	out_be32((void *)CFG_LIME_MMR, CFG_LIME_MMR_VALUE);
 	out_be32((void *)CFG_LIME_MMR, CFG_LIME_MMR_VALUE);
 
 
-	/*
-	 * Reset PHY's
-	 */
-	gpio_write_bit(CFG_GPIO_PHY0_RST, 0);
-	gpio_write_bit(CFG_GPIO_PHY1_RST, 0);
-	udelay(100);
-	gpio_write_bit(CFG_GPIO_PHY0_RST, 1);
-	gpio_write_bit(CFG_GPIO_PHY1_RST, 1);
-
 	/*
 	/*
 	 * Init display controller
 	 * Init display controller
 	 */
 	 */

+ 1 - 0
board/m5282evb/m5282evb.c

@@ -89,4 +89,5 @@ long int initdram (int board_type)
 		/* Write to the SDRAM Mode Register */
 		/* Write to the SDRAM Mode Register */
 		*(u32 *)(CFG_SDRAM_BASE + 0x400) = 0xA5A59696;
 		*(u32 *)(CFG_SDRAM_BASE + 0x400) = 0xA5A59696;
 	}
 	}
+	return dramsize;
 }
 }

+ 1 - 0
board/mousse/u-boot.lds

@@ -60,6 +60,7 @@ SECTIONS
     lib_generic/crc32.o		(.text)
     lib_generic/crc32.o		(.text)
     lib_generic/zlib.o		(.text)
     lib_generic/zlib.o		(.text)
 
 
+    *(.fixup)
     *(.got1)
     *(.got1)
     . = ALIGN(16);
     . = ALIGN(16);
     *(.rodata)
     *(.rodata)

+ 1 - 1
board/mpl/vcma9/cmd_vcma9.c

@@ -31,7 +31,7 @@
 #include "../common/common_util.h"
 #include "../common/common_util.h"
 
 
 #if defined(CONFIG_DRIVER_CS8900)
 #if defined(CONFIG_DRIVER_CS8900)
-#include <../drivers/cs8900.h>
+#include <../drivers/net/cs8900.h>
 
 
 static uchar cs8900_chksum(ushort data)
 static uchar cs8900_chksum(ushort data)
 {
 {

+ 1 - 1
board/mpl/vcma9/flash.c

@@ -290,7 +290,7 @@ int flash_erase (flash_info_t * info, int s_first, int s_last)
  * Copy memory to flash
  * Copy memory to flash
  */
  */
 
 
-volatile static int write_hword (flash_info_t * info, ulong dest, ushort data)
+static int write_hword (flash_info_t * info, ulong dest, ushort data)
 {
 {
 	vu_short *addr = (vu_short *) dest;
 	vu_short *addr = (vu_short *) dest;
 	ushort result;
 	ushort result;

+ 1 - 1
board/mpl/vcma9/vcma9.h

@@ -128,7 +128,7 @@ typedef struct {
 } /*__attribute__((__packed__))*/ VCMA9_PLD;
 } /*__attribute__((__packed__))*/ VCMA9_PLD;
 
 
 #define VCMA9_PLD_BASE	0x2C000100
 #define VCMA9_PLD_BASE	0x2C000100
-static inline VCMA9_PLD * const VCMA9_GetBase_PLD(void)
+static inline VCMA9_PLD * VCMA9_GetBase_PLD(void)
 {
 {
 	return (VCMA9_PLD * const)VCMA9_PLD_BASE;
 	return (VCMA9_PLD * const)VCMA9_PLD_BASE;
 }
 }

+ 1 - 1
board/netstar/eeprom.c

@@ -26,7 +26,7 @@
 
 
 #include <common.h>
 #include <common.h>
 #include <exports.h>
 #include <exports.h>
-#include "../drivers/smc91111.h"
+#include "../drivers/net/smc91111.h"
 
 
 #define SMC_BASE_ADDRESS CONFIG_SMC91111_BASE
 #define SMC_BASE_ADDRESS CONFIG_SMC91111_BASE
 
 

+ 1 - 1
board/pb1x00/Makefile

@@ -26,7 +26,7 @@ include $(TOPDIR)/config.mk
 LIB	= $(obj)lib$(BOARD).a
 LIB	= $(obj)lib$(BOARD).a
 
 
 COBJS	= $(BOARD).o flash.o
 COBJS	= $(BOARD).o flash.o
-SOBJS	= memsetup.o
+SOBJS	= lowlevel_init.o
 
 
 SRCS	:= $(SOBJS:.o=.S) $(COBJS:.o=.c)
 SRCS	:= $(SOBJS:.o=.S) $(COBJS:.o=.c)
 OBJS	:= $(addprefix $(obj),$(COBJS))
 OBJS	:= $(addprefix $(obj),$(COBJS))

+ 2 - 2
board/pb1x00/memsetup.S → board/pb1x00/lowlevel_init.S

@@ -15,8 +15,8 @@
 	.set noreorder
 	.set noreorder
 	.set mips32
 	.set mips32
 
 
-	.globl	memsetup
-memsetup:
+	.globl	lowlevel_init
+lowlevel_init:
 	/*
 	/*
 	 * Step 1) Establish CPU endian mode.
 	 * Step 1) Establish CPU endian mode.
 	 * NOTE: A fair amount of code is necessary on the Pb1000 to
 	 * NOTE: A fair amount of code is necessary on the Pb1000 to

+ 6 - 0
board/pb1x00/pb1x00.c

@@ -25,6 +25,7 @@
 #include <command.h>
 #include <command.h>
 #include <asm/au1x00.h>
 #include <asm/au1x00.h>
 #include <asm/mipsregs.h>
 #include <asm/mipsregs.h>
+#include <asm/io.h>
 
 
 long int initdram(int board_type)
 long int initdram(int board_type)
 {
 {
@@ -41,7 +42,9 @@ void write_one_tlb( int index, u32 pagemask, u32 hi, u32 low0, u32 low1 );
 
 
 int checkboard (void)
 int checkboard (void)
 {
 {
+#if defined(CONFIG_IDE_PCMCIA) && 0
 	u16 status;
 	u16 status;
+#endif
 	/* volatile u32 *pcmcia_bcsr = (u32*)(DB1000_BCSR_ADDR+0x10); */
 	/* volatile u32 *pcmcia_bcsr = (u32*)(DB1000_BCSR_ADDR+0x10); */
 	volatile u32 *sys_counter = (volatile u32*)SYS_COUNTER_CNTRL;
 	volatile u32 *sys_counter = (volatile u32*)SYS_COUNTER_CNTRL;
 	u32 proc_id;
 	u32 proc_id;
@@ -69,6 +72,9 @@ int checkboard (void)
 	default:
 	default:
 		printf ("Unsupported cpu %d, proc_id=0x%x\n", proc_id >> 24, proc_id);
 		printf ("Unsupported cpu %d, proc_id=0x%x\n", proc_id >> 24, proc_id);
 	}
 	}
+
+	set_io_port_base(0);
+
 #if defined(CONFIG_IDE_PCMCIA) && 0
 #if defined(CONFIG_IDE_PCMCIA) && 0
 	/* Enable 3.3 V on slot 0 ( VCC )
 	/* Enable 3.3 V on slot 0 ( VCC )
 	   No 5V */
 	   No 5V */

+ 12 - 10
board/pb1x00/u-boot.lds

@@ -43,20 +43,22 @@ SECTIONS
 	. = ALIGN(4);
 	. = ALIGN(4);
 	.data  : { *(.data) }
 	.data  : { *(.data) }
 
 
-	. = ALIGN(4);
-	.sdata  : { *(.sdata) }
-
-	_gp = ALIGN(16);
+	. = .;
+	_gp = ALIGN(16) + 0x7ff0;
 
 
-	__got_start = .;
-	.got  : { *(.got) }
-	__got_end = .;
+	.got : {
+	  __got_start = .;
+	  *(.got)
+	  __got_end = .;
+	}
 
 
 	.sdata  : { *(.sdata) }
 	.sdata  : { *(.sdata) }
 
 
-	__u_boot_cmd_start = .;
-	.u_boot_cmd : { *(.u_boot_cmd) }
-	__u_boot_cmd_end = .;
+	.u_boot_cmd : {
+	  __u_boot_cmd_start = .;
+	  *(.u_boot_cmd)
+	  __u_boot_cmd_end = .;
+	}
 
 
 	uboot_end_data = .;
 	uboot_end_data = .;
 	num_got_entries = (__got_end - __got_start) >> 2;
 	num_got_entries = (__got_end - __got_start) >> 2;

+ 1 - 1
board/pleb2/flash.c

@@ -196,7 +196,7 @@ void flash_print_info (flash_info_t * info)
 	int i;
 	int i;
 	uchar *boottype;
 	uchar *boottype;
 	uchar *bootletter;
 	uchar *bootletter;
-	uchar *fmt;
+	char *fmt;
 	uchar botbootletter[] = "B";
 	uchar botbootletter[] = "B";
 	uchar topbootletter[] = "T";
 	uchar topbootletter[] = "T";
 	uchar botboottype[] = "bottom boot sector";
 	uchar botboottype[] = "bottom boot sector";

+ 1 - 1
board/purple/flash.c

@@ -299,7 +299,7 @@ void flash_print_info (flash_info_t *info)
 	int i;
 	int i;
 	uchar *boottype;
 	uchar *boottype;
 	uchar *bootletter;
 	uchar *bootletter;
-	uchar *fmt;
+	char *fmt;
 	uchar botbootletter[] = "B";
 	uchar botbootletter[] = "B";
 	uchar topbootletter[] = "T";
 	uchar topbootletter[] = "T";
 	uchar botboottype[] = "bottom boot sector";
 	uchar botboottype[] = "bottom boot sector";

+ 3 - 0
board/purple/purple.c

@@ -26,6 +26,7 @@
 #include <asm/inca-ip.h>
 #include <asm/inca-ip.h>
 #include <asm/regdef.h>
 #include <asm/regdef.h>
 #include <asm/mipsregs.h>
 #include <asm/mipsregs.h>
+#include <asm/io.h>
 #include <asm/addrspace.h>
 #include <asm/addrspace.h>
 #include <asm/cacheops.h>
 #include <asm/cacheops.h>
 
 
@@ -145,6 +146,8 @@ int checkboard (void)
 
 
 	printf("CPU Speed %d MHz\n", CPU_CLOCK_RATE/1000000);
 	printf("CPU Speed %d MHz\n", CPU_CLOCK_RATE/1000000);
 
 
+	set_io_port_base(0);
+
 	return 0;
 	return 0;
 }
 }
 
 

+ 12 - 11
board/purple/u-boot.lds

@@ -53,21 +53,22 @@ SECTIONS
 	. = ALIGN(4);
 	. = ALIGN(4);
 	.data  : { *(.data) }
 	.data  : { *(.data) }
 
 
-	. = ALIGN(4);
-	.sdata  : { *(.sdata) }
-
-	_gp = ALIGN(16);
+	. = .;
+	_gp = ALIGN(16) + 0x7ff0;
 
 
-	__got_start = .;
-	.got  : { *(.got) }
-	__got_end = .;
+	.got : {
+	  __got_start = .;
+	  *(.got)
+	  __got_end = .;
+	}
 
 
 	.sdata  : { *(.sdata) }
 	.sdata  : { *(.sdata) }
 
 
-	. = .;
-	__u_boot_cmd_start = .;
-	.u_boot_cmd : { *(.u_boot_cmd) }
-	__u_boot_cmd_end = .;
+	.u_boot_cmd : {
+	  __u_boot_cmd_start = .;
+	  *(.u_boot_cmd)
+	  __u_boot_cmd_end = .;
+	}
 
 
 	uboot_end_data = .;
 	uboot_end_data = .;
 	num_got_entries = (__got_end - __got_start) >> 2;
 	num_got_entries = (__got_end - __got_start) >> 2;

+ 2 - 2
board/rsdproto/rsdproto.c

@@ -210,7 +210,7 @@ void read_RS5C372_time (struct tm *timedate)
 
 
 #define BCD_TO_BIN(val) ((val)=((val)&15) + ((val)>>4)*10)
 #define BCD_TO_BIN(val) ((val)=((val)&15) + ((val)>>4)*10)
 
 
-	if (i2c_read (RS5C372_PPC_I2C_ADR, 0, 1, buffer, sizeof (buffer))) {
+	if (! i2c_read (RS5C372_PPC_I2C_ADR, 0, 1, buffer, sizeof (buffer))) {
 		timedate->tm_sec = BCD_TO_BIN (buffer[0]);
 		timedate->tm_sec = BCD_TO_BIN (buffer[0]);
 		timedate->tm_min = BCD_TO_BIN (buffer[1]);
 		timedate->tm_min = BCD_TO_BIN (buffer[1]);
 		timedate->tm_hour = BCD_TO_BIN (buffer[2]);
 		timedate->tm_hour = BCD_TO_BIN (buffer[2]);
@@ -231,7 +231,7 @@ int read_LM84_temp (int address)
 	unsigned char buffer[8];
 	unsigned char buffer[8];
 	/*int rc;*/
 	/*int rc;*/
 
 
-	if (i2c_read (address, 0, 1, buffer, 1)) {
+	if (! i2c_read (address, 0, 1, buffer, 1)) {
 		return (int) buffer[0];
 		return (int) buffer[0];
 	} else {
 	} else {
 		/*printf("i2c error %02x\n", rc); */
 		/*printf("i2c error %02x\n", rc); */

+ 1 - 0
board/rsdproto/u-boot.lds

@@ -55,6 +55,7 @@ SECTIONS
   {
   {
     cpu/mpc8260/start.o	(.text)
     cpu/mpc8260/start.o	(.text)
     *(.text)
     *(.text)
+    *(.fixup)
     *(.got1)
     *(.got1)
     /*. = env_offset; */
     /*. = env_offset; */
   }
   }

+ 1 - 1
board/sbc2410x/flash.c

@@ -288,7 +288,7 @@ int flash_erase (flash_info_t * info, int s_first, int s_last)
  * Copy memory to flash
  * Copy memory to flash
  */
  */
 
 
-volatile static int write_hword (flash_info_t * info, ulong dest, ushort data)
+static int write_hword (flash_info_t * info, ulong dest, ushort data)
 {
 {
 	vu_short *addr = (vu_short *) dest;
 	vu_short *addr = (vu_short *) dest;
 	ushort result;
 	ushort result;

+ 1 - 1
board/smdk2410/flash.c

@@ -290,7 +290,7 @@ int flash_erase (flash_info_t * info, int s_first, int s_last)
  * Copy memory to flash
  * Copy memory to flash
  */
  */
 
 
-volatile static int write_hword (flash_info_t * info, ulong dest, ushort data)
+static int write_hword (flash_info_t * info, ulong dest, ushort data)
 {
 {
 	vu_short *addr = (vu_short *) dest;
 	vu_short *addr = (vu_short *) dest;
 	ushort result;
 	ushort result;

+ 3 - 4
board/tb0229/tb0229.c

@@ -13,10 +13,9 @@
 #include <command.h>
 #include <command.h>
 #include <asm/addrspace.h>
 #include <asm/addrspace.h>
 #include <asm/inca-ip.h>
 #include <asm/inca-ip.h>
+#include <asm/io.h>
 #include <pci.h>
 #include <pci.h>
 
 
-unsigned long mips_io_port_base = 0;
-
 #if defined(CONFIG_PCI)
 #if defined(CONFIG_PCI)
 static struct pci_controller hose;
 static struct pci_controller hose;
 
 
@@ -26,17 +25,17 @@ void pci_init_board (void)
 }
 }
 #endif
 #endif
 
 
-
 long int initdram(int board_type)
 long int initdram(int board_type)
 {
 {
 	return get_ram_size (CFG_SDRAM_BASE, 0x8000000);
 	return get_ram_size (CFG_SDRAM_BASE, 0x8000000);
 }
 }
 
 
-
 int checkboard (void)
 int checkboard (void)
 {
 {
 	printf("Board: TANBAC TB0229 ");
 	printf("Board: TANBAC TB0229 ");
 	printf("(CPU Speed %d MHz)\n", (int)CPU_CLOCK_RATE/1000000);
 	printf("(CPU Speed %d MHz)\n", (int)CPU_CLOCK_RATE/1000000);
 
 
+	set_io_port_base(0);
+
 	return 0;
 	return 0;
 }
 }

+ 12 - 11
board/tb0229/u-boot.lds

@@ -43,21 +43,22 @@ SECTIONS
 	. = ALIGN(4);
 	. = ALIGN(4);
 	.data  : { *(.data) }
 	.data  : { *(.data) }
 
 
-	. = ALIGN(4);
-	.sdata  : { *(.sdata) }
-
-	_gp = ALIGN(16);
+	. = .;
+	_gp = ALIGN(16) + 0x7ff0;
 
 
-	__got_start = .;
-	.got  : { *(.got) }
-	__got_end = .;
+	.got : {
+	  __got_start = .;
+	  *(.got)
+	  __got_end = .;
+	}
 
 
 	.sdata  : { *(.sdata) }
 	.sdata  : { *(.sdata) }
 
 
-	. = .;
-	__u_boot_cmd_start = .;
-	.u_boot_cmd : { *(.u_boot_cmd) }
-	__u_boot_cmd_end = .;
+	.u_boot_cmd : {
+	  __u_boot_cmd_start = .;
+	  *(.u_boot_cmd)
+	  __u_boot_cmd_end = .;
+	}
 
 
 	uboot_end_data = .;
 	uboot_end_data = .;
 	num_got_entries = (__got_end - __got_start) >> 2;
 	num_got_entries = (__got_end - __got_start) >> 2;

+ 11 - 3
board/tqm5200/tqm5200.c

@@ -441,15 +441,23 @@ ulong post_word_load (void)
 }
 }
 #endif	/* CONFIG_POST || CONFIG_LOGBUFFER*/
 #endif	/* CONFIG_POST || CONFIG_LOGBUFFER*/
 
 
-#ifdef CONFIG_PS2MULT
 #ifdef CONFIG_BOARD_EARLY_INIT_R
 #ifdef CONFIG_BOARD_EARLY_INIT_R
 int board_early_init_r (void)
 int board_early_init_r (void)
 {
 {
+	extern int usb_cpu_init(void);
+
+#ifdef CONFIG_PS2MULT
 	ps2mult_early_init();
 	ps2mult_early_init();
+#endif /* CONFIG_PS2MULT */
+
+#if defined(CONFIG_USB_OHCI_NEW) && defined(CFG_USB_OHCI_CPU_INIT)
+	/* Low level USB init, required for proper kernel operation */
+	usb_cpu_init();
+#endif
+
 	return (0);
 	return (0);
 }
 }
 #endif
 #endif
-#endif /* CONFIG_PS2MULT */
 
 
 #ifdef CONFIG_FO300
 #ifdef CONFIG_FO300
 int silent_boot (void)
 int silent_boot (void)
@@ -585,9 +593,9 @@ int last_stage_init (void)
 		disable_ctrlc(1);
 		disable_ctrlc(1);
 	}
 	}
 #endif
 #endif
+#endif /* !CONFIG_TQM5200S */
 
 
 	return 0;
 	return 0;
-#endif /* !CONFIG_TQM5200S */
 }
 }
 
 
 #ifdef CONFIG_VIDEO_SM501
 #ifdef CONFIG_VIDEO_SM501

+ 1 - 1
board/voiceblue/eeprom.c

@@ -26,7 +26,7 @@
 
 
 #include <common.h>
 #include <common.h>
 #include <exports.h>
 #include <exports.h>
-#include "../drivers/smc91111.h"
+#include "../drivers/net/smc91111.h"
 
 
 #define SMC_BASE_ADDRESS CONFIG_SMC91111_BASE
 #define SMC_BASE_ADDRESS CONFIG_SMC91111_BASE
 
 

+ 4 - 1
board/wepep250/flash.c

@@ -44,6 +44,7 @@
 
 
 #if ( WEP_FLASH_BUS_WIDTH == 1 )
 #if ( WEP_FLASH_BUS_WIDTH == 1 )
 #  define FLASH_BUS vu_char
 #  define FLASH_BUS vu_char
+#  define FLASH_BUS_RET u_char
 #  if ( WEP_FLASH_INTERLEAVE == 1 )
 #  if ( WEP_FLASH_INTERLEAVE == 1 )
 #    define FLASH_CMD( x ) x
 #    define FLASH_CMD( x ) x
 #  else
 #  else
@@ -53,6 +54,7 @@
 
 
 #elif ( WEP_FLASH_BUS_WIDTH == 2 )
 #elif ( WEP_FLASH_BUS_WIDTH == 2 )
 #  define FLASH_BUS vu_short
 #  define FLASH_BUS vu_short
+#  define FLASH_BUS_RET u_short
 #  if ( WEP_FLASH_INTERLEAVE == 1 )
 #  if ( WEP_FLASH_INTERLEAVE == 1 )
 #    define FLASH_CMD( x ) x
 #    define FLASH_CMD( x ) x
 #  elif ( WEP_FLASH_INTERLEAVE == 2 )
 #  elif ( WEP_FLASH_INTERLEAVE == 2 )
@@ -64,6 +66,7 @@
 
 
 #elif ( WEP_FLASH_BUS_WIDTH == 4 )
 #elif ( WEP_FLASH_BUS_WIDTH == 4 )
 #  define FLASH_BUS vu_long
 #  define FLASH_BUS vu_long
+#  define FLASH_BUS_RET u_long
 #  if ( WEP_FLASH_INTERLEAVE == 1 )
 #  if ( WEP_FLASH_INTERLEAVE == 1 )
 #    define FLASH_CMD( x ) x
 #    define FLASH_CMD( x ) x
 #  elif ( WEP_FLASH_INTERLEAVE == 2 )
 #  elif ( WEP_FLASH_INTERLEAVE == 2 )
@@ -81,7 +84,7 @@
 
 
 flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
 flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
 
 
-static FLASH_BUS flash_status_reg (void)
+static FLASH_BUS_RET flash_status_reg (void)
 {
 {
 
 
 	FLASH_BUS *addr = (FLASH_BUS *) 0;
 	FLASH_BUS *addr = (FLASH_BUS *) 0;

+ 106 - 25
common/Makefile

@@ -27,32 +27,113 @@ LIB	= $(obj)libcommon.a
 
 
 AOBJS	=
 AOBJS	=
 
 
-COBJS	= main.o ACEX1K.o altera.o bedbug.o circbuf.o cmd_autoscript.o \
-	  cmd_bdinfo.o cmd_bedbug.o cmd_bmp.o cmd_boot.o cmd_bootm.o \
-	  cmd_cache.o cmd_console.o \
-	  cmd_date.o cmd_dcr.o cmd_diag.o cmd_display.o cmd_doc.o cmd_dtt.o \
-	  cmd_eeprom.o cmd_elf.o cmd_ext2.o \
-	  cmd_fat.o cmd_fdc.o cmd_fdt.o cmd_fdos.o cmd_flash.o cmd_fpga.o \
-	  cmd_i2c.o cmd_ide.o cmd_immap.o cmd_itest.o cmd_jffs2.o \
-	  cmd_load.o cmd_log.o \
-	  cmd_mem.o cmd_mii.o cmd_misc.o cmd_mmc.o \
-	  cmd_nand.o cmd_net.o cmd_nvedit.o \
-	  cmd_onenand.o \
-	  cmd_pci.o cmd_pcmcia.o cmd_portio.o \
-	  cmd_reginfo.o cmd_reiser.o cmd_sata.o cmd_scsi.o cmd_spi.o \
-	  cmd_universe.o cmd_usb.o cmd_vfd.o \
-	  command.o console.o cyclon2.o devices.o dlmalloc.o docecc.o \
-	  environment.o env_common.o \
-	  env_nand.o env_dataflash.o env_flash.o env_eeprom.o \
-	  env_onenand.o env_nvram.o env_nowhere.o \
-	  exports.o \
-	  fdt_support.o flash.o fpga.o ft_build.o \
-	  hush.o kgdb.o lcd.o lists.o lynxkdi.o \
-	  memsize.o miiphybb.o miiphyutil.o \
-	  s_record.o serial.o soft_i2c.o soft_spi.o spartan2.o spartan3.o \
-	  usb.o usb_kbd.o usb_storage.o \
-	  virtex2.o xilinx.o crc16.o xyzModem.o cmd_mac.o cmd_mfsl.o
+COBJS-y += main.o
+COBJS-y += ACEX1K.o
+COBJS-y += altera.o
+COBJS-y += bedbug.o
+COBJS-y += circbuf.o
+COBJS-y += cmd_autoscript.o
+COBJS-$(CONFIG_CMD_BDI) += cmd_bdinfo.o
+COBJS-$(CONFIG_CMD_BEDBUG) += cmd_bedbug.o
+COBJS-$(CONFIG_CMD_BMP) += cmd_bmp.o
+COBJS-y += cmd_boot.o
+COBJS-y += cmd_bootm.o
+COBJS-$(CONFIG_CMD_CACHE) += cmd_cache.o
+COBJS-$(CONFIG_CMD_CONSOLE) += cmd_console.o
+COBJS-$(CONFIG_CMD_DATE) += cmd_date.o
+ifdef CONFIG_4xx
+COBJS-$(CONFIG_CMD_SETGETDCR) += cmd_dcr.o
+endif
+ifdef CONFIG_POST
+COBJS-$(CONFIG_CMD_DIAG) += cmd_diag.o
+endif
+COBJS-$(CONFIG_CMD_DISPLAY) += cmd_display.o
+COBJS-$(CONFIG_CMD_DOC) += cmd_doc.o
+COBJS-$(CONFIG_CMD_DTT) += cmd_dtt.o
+COBJS-y += cmd_eeprom.o
+COBJS-$(CONFIG_CMD_ELF) += cmd_elf.o
+COBJS-$(CONFIG_CMD_EXT2) += cmd_ext2.o
+COBJS-$(CONFIG_CMD_FAT) += cmd_fat.o
+COBJS-y += cmd_fdc.o
+COBJS-$(CONFIG_OF_LIBFDT) += cmd_fdt.o
+COBJS-$(CONFIG_CMD_FDOS) += cmd_fdos.o
+COBJS-$(CONFIG_CMD_FLASH) += cmd_flash.o
+ifdef CONFIG_FPGA
+COBJS-$(CONFIG_CMD_FPGA) += cmd_fpga.o
+endif
+COBJS-$(CONFIG_CMD_I2C) += cmd_i2c.o
+COBJS-$(CONFIG_CMD_IDE) += cmd_ide.o
+COBJS-$(CONFIG_CMD_IMMAP) += cmd_immap.o
+COBJS-$(CONFIG_CMD_ITEST) += cmd_itest.o
+COBJS-$(CONFIG_CMD_JFFS2) += cmd_jffs2.o
+COBJS-y += cmd_load.o
+COBJS-$(CONFIG_LOGBUFFER) += cmd_log.o
+COBJS-y += cmd_mem.o
+COBJS-$(CONFIG_CMD_MII) += cmd_mii.o
+COBJS-$(CONFIG_CMD_MISC) += cmd_misc.o
+COBJS-$(CONFIG_CMD_MMC) += cmd_mmc.o
+COBJS-y += cmd_nand.o
+COBJS-$(CONFIG_CMD_NET) += cmd_net.o
+COBJS-y += cmd_nvedit.o
+COBJS-y += cmd_onenand.o
+ifdef CONFIG_PCI
+COBJS-$(CONFIG_CMD_PCI) += cmd_pci.o
+endif
+COBJS-y += cmd_pcmcia.o
+COBJS-$(CONFIG_CMD_PORTIO) += cmd_portio.o
+COBJS-$(CONFIG_CMD_REGINFO) += cmd_reginfo.o
+COBJS-$(CONFIG_CMD_REISER) += cmd_reiser.o
+COBJS-y += cmd_sata.o
+COBJS-$(CONFIG_CMD_SCSI) += cmd_scsi.o
+COBJS-$(CONFIG_CMD_SPI) += cmd_spi.o
+COBJS-$(CONFIG_CMD_UNIVERSE) += cmd_universe.o
+COBJS-$(CONFIG_CMD_USB) += cmd_usb.o
+COBJS-y += cmd_vfd.o
+COBJS-y += command.o
+COBJS-y += console.o
+COBJS-y += cyclon2.o
+COBJS-y += devices.o
+COBJS-y += dlmalloc.o
+COBJS-y += docecc.o
+COBJS-y += environment.o
+COBJS-y += env_common.o
+COBJS-y += env_nand.o
+COBJS-y += env_dataflash.o
+COBJS-y += env_flash.o
+COBJS-y += env_eeprom.o
+COBJS-y += env_onenand.o
+COBJS-y += env_nvram.o
+COBJS-y += env_nowhere.o
+COBJS-y += exports.o
+COBJS-y += fdt_support.o
+COBJS-y += flash.o
+COBJS-y += fpga.o
+COBJS-y += ft_build.o
+COBJS-y += hush.o
+COBJS-y += kgdb.o
+COBJS-y += lcd.o
+COBJS-y += lists.o
+COBJS-y += lynxkdi.o
+COBJS-y += memsize.o
+COBJS-y += miiphybb.o
+COBJS-y += miiphyutil.o
+COBJS-y += s_record.o
+COBJS-y += serial.o
+COBJS-y += soft_i2c.o
+COBJS-y += soft_spi.o
+COBJS-y += spartan2.o
+COBJS-y += spartan3.o
+COBJS-y += usb.o
+COBJS-y += usb_kbd.o
+COBJS-y += usb_storage.o
+COBJS-y += virtex2.o
+COBJS-y += xilinx.o
+COBJS-y += crc16.o
+COBJS-y += xyzModem.o
+COBJS-y += cmd_mac.o
+COBJS-$(CONFIG_CMD_MFSL) += cmd_mfsl.o
 
 
+COBJS	:= $(COBJS-y)
 SRCS	:= $(AOBJS:.o=.S) $(COBJS:.o=.c)
 SRCS	:= $(AOBJS:.o=.S) $(COBJS:.o=.c)
 OBJS	:= $(addprefix $(obj),$(AOBJS) $(COBJS))
 OBJS	:= $(addprefix $(obj),$(AOBJS) $(COBJS))
 
 

+ 0 - 2
common/cmd_bdinfo.c

@@ -30,7 +30,6 @@
 
 
 DECLARE_GLOBAL_DATA_PTR;
 DECLARE_GLOBAL_DATA_PTR;
 
 
-#if defined(CONFIG_CMD_BDI)
 static void print_num(const char *, ulong);
 static void print_num(const char *, ulong);
 
 
 #ifndef CONFIG_ARM	/* PowerPC and other */
 #ifndef CONFIG_ARM	/* PowerPC and other */
@@ -350,4 +349,3 @@ U_BOOT_CMD(
 	"bdinfo  - print Board Info structure\n",
 	"bdinfo  - print Board Info structure\n",
 	NULL
 	NULL
 );
 );
-#endif

+ 0 - 3
common/cmd_bedbug.c

@@ -13,8 +13,6 @@
 
 
 DECLARE_GLOBAL_DATA_PTR;
 DECLARE_GLOBAL_DATA_PTR;
 
 
-#if defined(CONFIG_CMD_BEDBUG)
-
 #ifndef MAX
 #ifndef MAX
 #define MAX(a,b) ((a) > (b) ? (a) : (b))
 #define MAX(a,b) ((a) > (b) ? (a) : (b))
 #endif
 #endif
@@ -413,7 +411,6 @@ int do_bedbug_rdump (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
 U_BOOT_CMD (rdump, 1, 1, do_bedbug_rdump,
 U_BOOT_CMD (rdump, 1, 1, do_bedbug_rdump,
 	    "rdump   - Show registers.\n", " - Show registers.\n");
 	    "rdump   - Show registers.\n", " - Show registers.\n");
 /* ====================================================================== */
 /* ====================================================================== */
-#endif
 
 
 
 
 /*
 /*

+ 0 - 4
common/cmd_bmp.c

@@ -31,8 +31,6 @@
 #include <asm/byteorder.h>
 #include <asm/byteorder.h>
 #include <malloc.h>
 #include <malloc.h>
 
 
-#if defined(CONFIG_CMD_BMP)
-
 static int bmp_info (ulong addr);
 static int bmp_info (ulong addr);
 static int bmp_display (ulong addr, int x, int y);
 static int bmp_display (ulong addr, int x, int y);
 
 
@@ -187,5 +185,3 @@ static int bmp_display(ulong addr, int x, int y)
 # error bmp_display() requires CONFIG_LCD or CONFIG_VIDEO
 # error bmp_display() requires CONFIG_LCD or CONFIG_VIDEO
 #endif
 #endif
 }
 }
-
-#endif /* defined(CONFIG_CMD_BMP) */

+ 0 - 4
common/cmd_console.c

@@ -28,8 +28,6 @@
 #include <command.h>
 #include <command.h>
 #include <devices.h>
 #include <devices.h>
 
 
-#if defined(CONFIG_CMD_CONSOLE)
-
 extern void _do_coninfo (void);
 extern void _do_coninfo (void);
 int do_coninfo (cmd_tbl_t * cmd, int flag, int argc, char *argv[])
 int do_coninfo (cmd_tbl_t * cmd, int flag, int argc, char *argv[])
 {
 {
@@ -67,5 +65,3 @@ U_BOOT_CMD(
 	"coninfo - print console devices and information\n",
 	"coninfo - print console devices and information\n",
 	""
 	""
 );
 );
-
-#endif

+ 0 - 4
common/cmd_date.c

@@ -31,8 +31,6 @@
 
 
 DECLARE_GLOBAL_DATA_PTR;
 DECLARE_GLOBAL_DATA_PTR;
 
 
-#if defined(CONFIG_CMD_DATE)
-
 const char *weekdays[] = {
 const char *weekdays[] = {
 	"Sun", "Mon", "Tues", "Wednes", "Thurs", "Fri", "Satur",
 	"Sun", "Mon", "Tues", "Wednes", "Thurs", "Fri", "Satur",
 };
 };
@@ -210,5 +208,3 @@ U_BOOT_CMD(
 	"  - with numeric argument: set the system date & time\n"
 	"  - with numeric argument: set the system date & time\n"
 	"  - with 'reset' argument: reset the RTC\n"
 	"  - with 'reset' argument: reset the RTC\n"
 );
 );
-
-#endif

+ 0 - 4
common/cmd_dcr.c

@@ -29,8 +29,6 @@
 #include <config.h>
 #include <config.h>
 #include <command.h>
 #include <command.h>
 
 
-#if defined(CONFIG_4xx) && defined(CONFIG_CMD_SETGETDCR)
-
 unsigned long get_dcr (unsigned short);
 unsigned long get_dcr (unsigned short);
 unsigned long set_dcr (unsigned short, unsigned long);
 unsigned long set_dcr (unsigned short, unsigned long);
 
 
@@ -245,5 +243,3 @@ U_BOOT_CMD(
 	"setidcr - Set a register value via indirect DCR addressing\n",
 	"setidcr - Set a register value via indirect DCR addressing\n",
 	"adr_dcrn[.dat_dcrn] offset value - write offset to adr_dcrn, write value to dat_dcrn.\n"
 	"adr_dcrn[.dat_dcrn] offset value - write offset to adr_dcrn, write value to dat_dcrn.\n"
 );
 );
-
-#endif

+ 0 - 4
common/cmd_diag.c

@@ -28,8 +28,6 @@
 #include <command.h>
 #include <command.h>
 #include <post.h>
 #include <post.h>
 
 
-#if defined(CONFIG_CMD_DIAG) && defined(CONFIG_POST)
-
 int do_diag (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
 int do_diag (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
 {
 {
 	unsigned int i;
 	unsigned int i;
@@ -76,5 +74,3 @@ U_BOOT_CMD(
 	"diag run [test1 [test2]]\n"
 	"diag run [test1 [test2]]\n"
 	"         - run specified tests\n"
 	"         - run specified tests\n"
 );
 );
-
-#endif

+ 0 - 4
common/cmd_display.c

@@ -24,8 +24,6 @@
 #include <common.h>
 #include <common.h>
 #include <command.h>
 #include <command.h>
 
 
-#if defined(CONFIG_CMD_DISPLAY)
-
 #undef DEBUG_DISP
 #undef DEBUG_DISP
 
 
 #define DISP_SIZE	8
 #define DISP_SIZE	8
@@ -78,5 +76,3 @@ U_BOOT_CMD(
 	"    - with <string> argument: display <string> on dot matrix display\n"
 	"    - with <string> argument: display <string> on dot matrix display\n"
 	"    - without arguments: clear dot matrix display\n"
 	"    - without arguments: clear dot matrix display\n"
 );
 );
-
-#endif

+ 0 - 5
common/cmd_doc.c

@@ -11,9 +11,6 @@
 #include <command.h>
 #include <command.h>
 #include <malloc.h>
 #include <malloc.h>
 #include <asm/io.h>
 #include <asm/io.h>
-
-#if defined(CONFIG_CMD_DOC)
-
 #include <linux/mtd/nftl.h>
 #include <linux/mtd/nftl.h>
 #include <linux/mtd/doc2000.h>
 #include <linux/mtd/doc2000.h>
 
 
@@ -1607,5 +1604,3 @@ void doc_probe(unsigned long physadr)
 		puts ("No DiskOnChip found\n");
 		puts ("No DiskOnChip found\n");
 	}
 	}
 }
 }
-
-#endif

+ 0 - 4
common/cmd_dtt.c

@@ -25,8 +25,6 @@
 #include <config.h>
 #include <config.h>
 #include <command.h>
 #include <command.h>
 
 
-#if defined(CONFIG_CMD_DTT)
-
 #include <dtt.h>
 #include <dtt.h>
 #include <i2c.h>
 #include <i2c.h>
 
 
@@ -60,5 +58,3 @@ U_BOOT_CMD(
 	  "dtt     - Digital Thermometer and Thermostat\n",
 	  "dtt     - Digital Thermometer and Thermostat\n",
 	  "        - Read temperature from digital thermometer and thermostat.\n"
 	  "        - Read temperature from digital thermometer and thermostat.\n"
 );
 );
-
-#endif

+ 0 - 4
common/cmd_elf.c

@@ -23,8 +23,6 @@
 DECLARE_GLOBAL_DATA_PTR;
 DECLARE_GLOBAL_DATA_PTR;
 #endif
 #endif
 
 
-#if defined(CONFIG_CMD_ELF)
-
 #ifndef MAX
 #ifndef MAX
 #define MAX(a,b) ((a) > (b) ? (a) : (b))
 #define MAX(a,b) ((a) > (b) ? (a) : (b))
 #endif
 #endif
@@ -323,5 +321,3 @@ U_BOOT_CMD(
 	"bootvx  - Boot vxWorks from an ELF image\n",
 	"bootvx  - Boot vxWorks from an ELF image\n",
 	" [address] - load address of vxWorks ELF image.\n"
 	" [address] - load address of vxWorks ELF image.\n"
 );
 );
-
-#endif

+ 0 - 4
common/cmd_ext2.c

@@ -34,8 +34,6 @@
  */
  */
 #include <common.h>
 #include <common.h>
 #include <part.h>
 #include <part.h>
-
-#if defined(CONFIG_CMD_EXT2)
 #include <config.h>
 #include <config.h>
 #include <command.h>
 #include <command.h>
 #include <image.h>
 #include <image.h>
@@ -259,5 +257,3 @@ U_BOOT_CMD(
 	"    - load binary file 'filename' from 'dev' on 'interface'\n"
 	"    - load binary file 'filename' from 'dev' on 'interface'\n"
 	"      to address 'addr' from ext2 filesystem\n"
 	"      to address 'addr' from ext2 filesystem\n"
 );
 );
-
-#endif

+ 0 - 7
common/cmd_fat.c

@@ -30,11 +30,6 @@
 #include <net.h>
 #include <net.h>
 #include <ata.h>
 #include <ata.h>
 #include <part.h>
 #include <part.h>
-
-#if defined(CONFIG_CMD_FAT)
-
-#undef	DEBUG
-
 #include <fat.h>
 #include <fat.h>
 
 
 
 
@@ -323,5 +318,3 @@ void hexdump (int cnt, unsigned char *data)
 	}
 	}
 }
 }
 #endif	/* NOT_IMPLEMENTED_YET */
 #endif	/* NOT_IMPLEMENTED_YET */
-
-#endif

+ 0 - 4
common/cmd_fdos.c

@@ -31,8 +31,6 @@
 #include <command.h>
 #include <command.h>
 #include <fdc.h>
 #include <fdc.h>
 
 
-#if defined(CONFIG_CMD_FDOS)
-
 /*-----------------------------------------------------------------------------
 /*-----------------------------------------------------------------------------
  * do_fdosboot --
  * do_fdosboot --
  *-----------------------------------------------------------------------------
  *-----------------------------------------------------------------------------
@@ -153,5 +151,3 @@ U_BOOT_CMD(
 	"fdosls  - list files in a directory\n",
 	"fdosls  - list files in a directory\n",
 	"[directory]\n"
 	"[directory]\n"
 );
 );
-
-#endif

+ 44 - 37
common/cmd_fdt.c

@@ -28,9 +28,6 @@
 #include <command.h>
 #include <command.h>
 #include <linux/ctype.h>
 #include <linux/ctype.h>
 #include <linux/types.h>
 #include <linux/types.h>
-
-#ifdef CONFIG_OF_LIBFDT
-
 #include <asm/global_data.h>
 #include <asm/global_data.h>
 #include <fdt.h>
 #include <fdt.h>
 #include <libfdt.h>
 #include <libfdt.h>
@@ -47,7 +44,7 @@ DECLARE_GLOBAL_DATA_PTR;
 static int fdt_valid(void);
 static int fdt_valid(void);
 static int fdt_parse_prop(char *pathp, char *prop, char *newval,
 static int fdt_parse_prop(char *pathp, char *prop, char *newval,
 	char *data, int *len);
 	char *data, int *len);
-static int fdt_print(char *pathp, char *prop, int depth);
+static int fdt_print(const char *pathp, char *prop, int depth);
 
 
 /*
 /*
  * Flattened Device Tree command, see the help for parameter definitions.
  * Flattened Device Tree command, see the help for parameter definitions.
@@ -78,7 +75,7 @@ int do_fdt (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
 			/*
 			/*
 			 * Optional new length
 			 * Optional new length
 			 */
 			 */
-			len =  simple_strtoul(argv[3], NULL, 16);
+			len = simple_strtoul(argv[3], NULL, 16);
 			if (len < fdt_totalsize(fdt)) {
 			if (len < fdt_totalsize(fdt)) {
 				printf ("New length %d < existing length %d, "
 				printf ("New length %d < existing length %d, "
 					"ignoring.\n",
 					"ignoring.\n",
@@ -165,12 +162,12 @@ int do_fdt (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
 		pathp = argv[2];
 		pathp = argv[2];
 		nodep = argv[3];
 		nodep = argv[3];
 
 
-		nodeoffset = fdt_find_node_by_path (fdt, pathp);
+		nodeoffset = fdt_path_offset (fdt, pathp);
 		if (nodeoffset < 0) {
 		if (nodeoffset < 0) {
 			/*
 			/*
 			 * Not found or something else bad happened.
 			 * Not found or something else bad happened.
 			 */
 			 */
-			printf ("libfdt fdt_find_node_by_path() returned %s\n",
+			printf ("libfdt fdt_path_offset() returned %s\n",
 				fdt_strerror(nodeoffset));
 				fdt_strerror(nodeoffset));
 			return 1;
 			return 1;
 		}
 		}
@@ -205,12 +202,12 @@ int do_fdt (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
 		prop   = argv[3];
 		prop   = argv[3];
 		newval = argv[4];
 		newval = argv[4];
 
 
-		nodeoffset = fdt_find_node_by_path (fdt, pathp);
+		nodeoffset = fdt_path_offset (fdt, pathp);
 		if (nodeoffset < 0) {
 		if (nodeoffset < 0) {
 			/*
 			/*
 			 * Not found or something else bad happened.
 			 * Not found or something else bad happened.
 			 */
 			 */
-			printf ("libfdt fdt_find_node_by_path() returned %s\n",
+			printf ("libfdt fdt_path_offset() returned %s\n",
 				fdt_strerror(nodeoffset));
 				fdt_strerror(nodeoffset));
 			return 1;
 			return 1;
 		}
 		}
@@ -232,6 +229,7 @@ int do_fdt (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
 		char *pathp;		/* path */
 		char *pathp;		/* path */
 		char *prop;		/* property */
 		char *prop;		/* property */
 		int  ret;		/* return value */
 		int  ret;		/* return value */
+		static char root[2] = "/";
 
 
 		/*
 		/*
 		 * list is an alias for print, but limited to 1 level
 		 * list is an alias for print, but limited to 1 level
@@ -244,7 +242,10 @@ int do_fdt (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
 		 * Get the starting path.  The root node is an oddball,
 		 * Get the starting path.  The root node is an oddball,
 		 * the offset is zero and has no name.
 		 * the offset is zero and has no name.
 		 */
 		 */
-		pathp = argv[2];
+		if (argc == 2)
+			pathp = root;
+		else
+			pathp = argv[2];
 		if (argc > 3)
 		if (argc > 3)
 			prop = argv[3];
 			prop = argv[3];
 		else
 		else
@@ -265,12 +266,12 @@ int do_fdt (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
 		 * Get the path.  The root node is an oddball, the offset
 		 * Get the path.  The root node is an oddball, the offset
 		 * is zero and has no name.
 		 * is zero and has no name.
 		 */
 		 */
-		nodeoffset = fdt_find_node_by_path (fdt, argv[2]);
+		nodeoffset = fdt_path_offset (fdt, argv[2]);
 		if (nodeoffset < 0) {
 		if (nodeoffset < 0) {
 			/*
 			/*
 			 * Not found or something else bad happened.
 			 * Not found or something else bad happened.
 			 */
 			 */
-			printf ("libfdt fdt_find_node_by_path() returned %s\n",
+			printf ("libfdt fdt_path_offset() returned %s\n",
 				fdt_strerror(nodeoffset));
 				fdt_strerror(nodeoffset));
 			return 1;
 			return 1;
 		}
 		}
@@ -521,21 +522,21 @@ static void print_data(const void *data, int len)
 
 
 	switch (len) {
 	switch (len) {
 	case 1:	 /* byte */
 	case 1:	 /* byte */
-		printf("<%02x>", (*(u8 *) data) & 0xff);
+		printf("<0x%02x>", (*(u8 *) data) & 0xff);
 		break;
 		break;
 	case 2:	 /* half-word */
 	case 2:	 /* half-word */
-		printf("<%04x>", be16_to_cpu(*(u16 *) data) & 0xffff);
+		printf("<0x%04x>", be16_to_cpu(*(u16 *) data) & 0xffff);
 		break;
 		break;
 	case 4:	 /* word */
 	case 4:	 /* word */
-		printf("<%08x>", be32_to_cpu(*(u32 *) data) & 0xffffffffU);
+		printf("<0x%08x>", be32_to_cpu(*(u32 *) data) & 0xffffffffU);
 		break;
 		break;
 	case 8:	 /* double-word */
 	case 8:	 /* double-word */
 #if __WORDSIZE == 64
 #if __WORDSIZE == 64
-		printf("<%016llx>", be64_to_cpu(*(uint64_t *) data));
+		printf("<0x%016llx>", be64_to_cpu(*(uint64_t *) data));
 #else
 #else
-		printf("<%08x ", be32_to_cpu(*(u32 *) data) & 0xffffffffU);
+		printf("<0x%08x ", be32_to_cpu(*(u32 *) data) & 0xffffffffU);
 		data += 4;
 		data += 4;
-		printf("%08x>", be32_to_cpu(*(u32 *) data) & 0xffffffffU);
+		printf("0x%08x>", be32_to_cpu(*(u32 *) data) & 0xffffffffU);
 #endif
 #endif
 		break;
 		break;
 	default:		/* anything else... hexdump */
 	default:		/* anything else... hexdump */
@@ -554,25 +555,25 @@ static void print_data(const void *data, int len)
  * Recursively print (a portion of) the fdt.  The depth parameter
  * Recursively print (a portion of) the fdt.  The depth parameter
  * determines how deeply nested the fdt is printed.
  * determines how deeply nested the fdt is printed.
  */
  */
-static int fdt_print(char *pathp, char *prop, int depth)
+static int fdt_print(const char *pathp, char *prop, int depth)
 {
 {
-	static int offstack[MAX_LEVEL];
 	static char tabs[MAX_LEVEL+1] =
 	static char tabs[MAX_LEVEL+1] =
 		"\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t"
 		"\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t"
 		"\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t";
 		"\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t";
-	void *nodep;		/* property node pointer */
+	const void *nodep;	/* property node pointer */
 	int  nodeoffset;	/* node offset from libfdt */
 	int  nodeoffset;	/* node offset from libfdt */
 	int  nextoffset;	/* next node offset from libfdt */
 	int  nextoffset;	/* next node offset from libfdt */
 	uint32_t tag;		/* tag */
 	uint32_t tag;		/* tag */
 	int  len;		/* length of the property */
 	int  len;		/* length of the property */
 	int  level = 0;		/* keep track of nesting level */
 	int  level = 0;		/* keep track of nesting level */
+	const struct fdt_property *fdt_prop;
 
 
-	nodeoffset = fdt_find_node_by_path (fdt, pathp);
+	nodeoffset = fdt_path_offset (fdt, pathp);
 	if (nodeoffset < 0) {
 	if (nodeoffset < 0) {
 		/*
 		/*
 		 * Not found or something else bad happened.
 		 * Not found or something else bad happened.
 		 */
 		 */
-		printf ("libfdt fdt_find_node_by_path() returned %s\n",
+		printf ("libfdt fdt_path_offset() returned %s\n",
 			fdt_strerror(nodeoffset));
 			fdt_strerror(nodeoffset));
 		return 1;
 		return 1;
 	}
 	}
@@ -602,45 +603,52 @@ static int fdt_print(char *pathp, char *prop, int depth)
 	 * The user passed in a node path and no property,
 	 * The user passed in a node path and no property,
 	 * print the node and all subnodes.
 	 * print the node and all subnodes.
 	 */
 	 */
-	offstack[0] = nodeoffset;
-
 	while(level >= 0) {
 	while(level >= 0) {
-		tag = fdt_next_tag(fdt, nodeoffset, &nextoffset, &pathp);
+		tag = fdt_next_tag(fdt, nodeoffset, &nextoffset);
 		switch(tag) {
 		switch(tag) {
 		case FDT_BEGIN_NODE:
 		case FDT_BEGIN_NODE:
-			if(level <= depth)
+			pathp = fdt_get_name(fdt, nodeoffset, NULL);
+			if (level <= depth) {
+				if (pathp == NULL)
+					pathp = "/* NULL pointer error */";
+				if (*pathp == '\0')
+					pathp = "/";	/* root is nameless */
 				printf("%s%s {\n",
 				printf("%s%s {\n",
 					&tabs[MAX_LEVEL - level], pathp);
 					&tabs[MAX_LEVEL - level], pathp);
+			}
 			level++;
 			level++;
-			offstack[level] = nodeoffset;
 			if (level >= MAX_LEVEL) {
 			if (level >= MAX_LEVEL) {
-				printf("Aaaiii <splat> nested too deep. "
-					"Aborting.\n");
+				printf("Nested too deep, aborting.\n");
 				return 1;
 				return 1;
 			}
 			}
 			break;
 			break;
 		case FDT_END_NODE:
 		case FDT_END_NODE:
 			level--;
 			level--;
-			if(level <= depth)
+			if (level <= depth)
 				printf("%s};\n", &tabs[MAX_LEVEL - level]);
 				printf("%s};\n", &tabs[MAX_LEVEL - level]);
 			if (level == 0) {
 			if (level == 0) {
 				level = -1;		/* exit the loop */
 				level = -1;		/* exit the loop */
 			}
 			}
 			break;
 			break;
 		case FDT_PROP:
 		case FDT_PROP:
-			nodep = fdt_getprop (fdt, offstack[level], pathp, &len);
+			fdt_prop = fdt_offset_ptr(fdt, nodeoffset,
+					sizeof(*fdt_prop));
+			pathp    = fdt_string(fdt,
+					fdt32_to_cpu(fdt_prop->nameoff));
+			len      = fdt32_to_cpu(fdt_prop->len);
+			nodep    = fdt_prop->data;
 			if (len < 0) {
 			if (len < 0) {
 				printf ("libfdt fdt_getprop(): %s\n",
 				printf ("libfdt fdt_getprop(): %s\n",
 					fdt_strerror(len));
 					fdt_strerror(len));
 				return 1;
 				return 1;
 			} else if (len == 0) {
 			} else if (len == 0) {
 				/* the property has no value */
 				/* the property has no value */
-				if(level <= depth)
+				if (level <= depth)
 					printf("%s%s;\n",
 					printf("%s%s;\n",
 						&tabs[MAX_LEVEL - level],
 						&tabs[MAX_LEVEL - level],
 						pathp);
 						pathp);
 			} else {
 			} else {
-				if(level <= depth) {
+				if (level <= depth) {
 					printf("%s%s=",
 					printf("%s%s=",
 						&tabs[MAX_LEVEL - level],
 						&tabs[MAX_LEVEL - level],
 						pathp);
 						pathp);
@@ -650,11 +658,12 @@ static int fdt_print(char *pathp, char *prop, int depth)
 			}
 			}
 			break;
 			break;
 		case FDT_NOP:
 		case FDT_NOP:
+			printf("/* NOP */\n", &tabs[MAX_LEVEL - level]);
 			break;
 			break;
 		case FDT_END:
 		case FDT_END:
 			return 1;
 			return 1;
 		default:
 		default:
-			if(level <= depth)
+			if (level <= depth)
 				printf("Unknown tag 0x%08X\n", tag);
 				printf("Unknown tag 0x%08X\n", tag);
 			return 1;
 			return 1;
 		}
 		}
@@ -692,5 +701,3 @@ U_BOOT_CMD(
 	"          fdt print /cpus \"#address-cells\"\n"
 	"          fdt print /cpus \"#address-cells\"\n"
 	"          fdt set   /cpus \"#address-cells\" \"[00 00 00 01]\"\n"
 	"          fdt set   /cpus \"#address-cells\" \"[00 00 00 01]\"\n"
 );
 );
-
-#endif /* CONFIG_OF_LIBFDT */

+ 0 - 4
common/cmd_flash.c

@@ -31,8 +31,6 @@
 #include <dataflash.h>
 #include <dataflash.h>
 #endif
 #endif
 
 
-#if defined(CONFIG_CMD_FLASH)
-
 #if defined(CONFIG_CMD_JFFS2) && defined(CONFIG_JFFS2_CMDLINE)
 #if defined(CONFIG_CMD_JFFS2) && defined(CONFIG_JFFS2_CMDLINE)
 #include <jffs2/jffs2.h>
 #include <jffs2/jffs2.h>
 
 
@@ -731,5 +729,3 @@ U_BOOT_CMD(
 #undef	TMP_ERASE
 #undef	TMP_ERASE
 #undef	TMP_PROT_ON
 #undef	TMP_PROT_ON
 #undef	TMP_PROT_OFF
 #undef	TMP_PROT_OFF
-
-#endif

+ 0 - 3
common/cmd_fpga.c

@@ -43,8 +43,6 @@
 #define PRINTF(fmt,args...)
 #define PRINTF(fmt,args...)
 #endif
 #endif
 
 
-#if defined (CONFIG_FPGA) && defined(CONFIG_CMD_FPGA)
-
 /* Local functions */
 /* Local functions */
 static void fpga_usage (cmd_tbl_t * cmdtp);
 static void fpga_usage (cmd_tbl_t * cmdtp);
 static int fpga_get_op (char *opstr);
 static int fpga_get_op (char *opstr);
@@ -321,4 +319,3 @@ U_BOOT_CMD (fpga, 6, 1, do_fpga,
 	    "\tloadb\tLoad device from bitstream buffer (Xilinx devices only)\n"
 	    "\tloadb\tLoad device from bitstream buffer (Xilinx devices only)\n"
 	    "\tloadmk\tLoad device generated with mkimage\n"
 	    "\tloadmk\tLoad device generated with mkimage\n"
 	    "\tdump\tLoad device to memory buffer\n");
 	    "\tdump\tLoad device to memory buffer\n");
-#endif

+ 0 - 5
common/cmd_i2c.c

@@ -86,9 +86,6 @@
 #include <i2c.h>
 #include <i2c.h>
 #include <asm/byteorder.h>
 #include <asm/byteorder.h>
 
 
-#if defined(CONFIG_CMD_I2C)
-
-
 /* Display values from last command.
 /* Display values from last command.
  * Memory modify remembered values are different from display memory.
  * Memory modify remembered values are different from display memory.
  */
  */
@@ -1024,5 +1021,3 @@ U_BOOT_CMD(
 	"      (valid chip values 50..57)\n"
 	"      (valid chip values 50..57)\n"
 );
 );
 #endif
 #endif
-
-#endif

+ 6 - 14
common/cmd_ide.c

@@ -54,10 +54,6 @@
 
 
 #ifndef __PPC__
 #ifndef __PPC__
 #include <asm/io.h>
 #include <asm/io.h>
-#ifdef __MIPS__
-/* Macros depend on this variable */
-unsigned long mips_io_port_base = 0;
-#endif
 #endif
 #endif
 
 
 #ifdef CONFIG_IDE_8xx_DIRECT
 #ifdef CONFIG_IDE_8xx_DIRECT
@@ -72,8 +68,6 @@ DECLARE_GLOBAL_DATA_PTR;
 # define SYNC		/* nothing */
 # define SYNC		/* nothing */
 #endif
 #endif
 
 
-#if defined(CONFIG_CMD_IDE)
-
 #ifdef CONFIG_IDE_8xx_DIRECT
 #ifdef CONFIG_IDE_8xx_DIRECT
 /* Timings for IDE Interface
 /* Timings for IDE Interface
  *
  *
@@ -1136,9 +1130,9 @@ static void ide_ident (block_dev_desc_t *dev_desc)
 
 
 	input_swap_data (device, iobuf, ATA_SECTORWORDS);
 	input_swap_data (device, iobuf, ATA_SECTORWORDS);
 
 
-	ident_cpy (dev_desc->revision, iop->fw_rev, sizeof(dev_desc->revision));
-	ident_cpy (dev_desc->vendor, iop->model, sizeof(dev_desc->vendor));
-	ident_cpy (dev_desc->product, iop->serial_no, sizeof(dev_desc->product));
+	ident_cpy ((unsigned char*)dev_desc->revision, iop->fw_rev, sizeof(dev_desc->revision));
+	ident_cpy ((unsigned char*)dev_desc->vendor, iop->model, sizeof(dev_desc->vendor));
+	ident_cpy ((unsigned char*)dev_desc->product, iop->serial_no, sizeof(dev_desc->product));
 #ifdef __LITTLE_ENDIAN
 #ifdef __LITTLE_ENDIAN
 	/*
 	/*
 	 * firmware revision and model number have Big Endian Byte
 	 * firmware revision and model number have Big Endian Byte
@@ -1953,9 +1947,9 @@ static void	atapi_inquiry(block_dev_desc_t * dev_desc)
 		return;
 		return;
 
 
 	/* copy device ident strings */
 	/* copy device ident strings */
-	ident_cpy(dev_desc->vendor,&iobuf[8],8);
-	ident_cpy(dev_desc->product,&iobuf[16],16);
-	ident_cpy(dev_desc->revision,&iobuf[32],5);
+	ident_cpy((unsigned char*)dev_desc->vendor,&iobuf[8],8);
+	ident_cpy((unsigned char*)dev_desc->product,&iobuf[16],16);
+	ident_cpy((unsigned char*)dev_desc->revision,&iobuf[32],5);
 
 
 	dev_desc->lun=0;
 	dev_desc->lun=0;
 	dev_desc->lba=0;
 	dev_desc->lba=0;
@@ -2085,5 +2079,3 @@ U_BOOT_CMD(
 	"diskboot- boot from IDE device\n",
 	"diskboot- boot from IDE device\n",
 	"loadAddr dev:part\n"
 	"loadAddr dev:part\n"
 );
 );
-
-#endif

+ 1 - 4
common/cmd_immap.c

@@ -28,8 +28,7 @@
 #include <common.h>
 #include <common.h>
 #include <command.h>
 #include <command.h>
 
 
-#if defined(CONFIG_CMD_IMMAP) && \
-    (defined(CONFIG_8xx) || defined(CONFIG_8260))
+#if defined(CONFIG_8xx) || defined(CONFIG_8260)
 
 
 #if defined(CONFIG_8xx)
 #if defined(CONFIG_8xx)
 #include <asm/8xx_immap.h>
 #include <asm/8xx_immap.h>
@@ -41,9 +40,7 @@
 #include <asm/iopin_8260.h>
 #include <asm/iopin_8260.h>
 #endif
 #endif
 
 
-#if defined(CONFIG_8xx) || defined(CONFIG_8260)
 DECLARE_GLOBAL_DATA_PTR;
 DECLARE_GLOBAL_DATA_PTR;
-#endif
 
 
 static void
 static void
 unimplemented ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 unimplemented ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])

+ 0 - 3
common/cmd_itest.c

@@ -32,8 +32,6 @@
 #include <config.h>
 #include <config.h>
 #include <command.h>
 #include <command.h>
 
 
-#if defined(CONFIG_CMD_ITEST)
-
 #define EQ	0
 #define EQ	0
 #define NE	1
 #define NE	1
 #define LT	2
 #define LT	2
@@ -197,4 +195,3 @@ U_BOOT_CMD(
 	"itest\t- return true/false on integer compare\n",
 	"itest\t- return true/false on integer compare\n",
 	"[.b, .w, .l, .s] [*]value1 <op> [*]value2\n"
 	"[.b, .w, .l, .s] [*]value1 <op> [*]value2\n"
 );
 );
-#endif

+ 0 - 5
common/cmd_jffs2.c

@@ -93,9 +93,6 @@
 #include <jffs2/jffs2.h>
 #include <jffs2/jffs2.h>
 #include <linux/list.h>
 #include <linux/list.h>
 #include <linux/ctype.h>
 #include <linux/ctype.h>
-
-#if defined(CONFIG_CMD_JFFS2)
-
 #include <cramfs/cramfs_fs.h>
 #include <cramfs/cramfs_fs.h>
 
 
 #if defined(CONFIG_CMD_NAND)
 #if defined(CONFIG_CMD_NAND)
@@ -2191,5 +2188,3 @@ U_BOOT_CMD(
 #endif /* #ifdef CONFIG_JFFS2_CMDLINE */
 #endif /* #ifdef CONFIG_JFFS2_CMDLINE */
 
 
 /***************************************************/
 /***************************************************/
-
-#endif

+ 0 - 4
common/cmd_log.c

@@ -48,8 +48,6 @@
 
 
 DECLARE_GLOBAL_DATA_PTR;
 DECLARE_GLOBAL_DATA_PTR;
 
 
-#if defined(CONFIG_LOGBUFFER)
-
 /* Local prototypes */
 /* Local prototypes */
 static void logbuff_putc (const char c);
 static void logbuff_putc (const char c);
 static void logbuff_puts (const char *s);
 static void logbuff_puts (const char *s);
@@ -287,5 +285,3 @@ static int logbuff_printk(const char *line)
 	}
 	}
 	return i;
 	return i;
 }
 }
-
-#endif /* (CONFIG_LOGBUFFER) */

+ 0 - 4
common/cmd_mfsl.c

@@ -29,8 +29,6 @@
 #include <common.h>
 #include <common.h>
 #include <config.h>
 #include <config.h>
 #include <command.h>
 #include <command.h>
-
-#if defined(CONFIG_CMD_MFSL)
 #include <asm/asm.h>
 #include <asm/asm.h>
 
 
 int do_frd (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
 int do_frd (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
@@ -413,5 +411,3 @@ U_BOOT_CMD (rspr, 3, 1, do_rspr,
 		" 1 - MSR - Machine status register\n"
 		" 1 - MSR - Machine status register\n"
 		" 3 - EAR - Exception address register\n"
 		" 3 - EAR - Exception address register\n"
 		" 5 - ESR - Exception status register\n");
 		" 5 - ESR - Exception status register\n");
-
-#endif

+ 6 - 6
common/cmd_mii.c

@@ -27,8 +27,6 @@
 
 
 #include <common.h>
 #include <common.h>
 #include <command.h>
 #include <command.h>
-
-#if defined(CONFIG_CMD_MII)
 #include <miiphy.h>
 #include <miiphy.h>
 
 
 #ifdef CONFIG_TERSE_MII
 #ifdef CONFIG_TERSE_MII
@@ -112,9 +110,11 @@ int do_mii (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
 					"OUI = 0x%04X, "
 					"OUI = 0x%04X, "
 					"Model = 0x%02X, "
 					"Model = 0x%02X, "
 					"Rev = 0x%02X, "
 					"Rev = 0x%02X, "
-					"%3dbaseT, %s\n",
+					"%3dbase%s, %s\n",
 					j, oui, model, rev,
 					j, oui, model, rev,
 					miiphy_speed (devname, j),
 					miiphy_speed (devname, j),
+					miiphy_is_1000base_x (devname, j)
+						? "X" : "T",
 					(miiphy_duplex (devname, j) == FULL)
 					(miiphy_duplex (devname, j) == FULL)
 						? "FDX" : "HDX");
 						? "FDX" : "HDX");
 			}
 			}
@@ -496,9 +496,11 @@ int do_mii (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
 					"OUI = 0x%04X, "
 					"OUI = 0x%04X, "
 					"Model = 0x%02X, "
 					"Model = 0x%02X, "
 					"Rev = 0x%02X, "
 					"Rev = 0x%02X, "
-					"%3dbaseT, %s\n",
+					"%3dbase%s, %s\n",
 					j, oui, model, rev,
 					j, oui, model, rev,
 					miiphy_speed (devname, j),
 					miiphy_speed (devname, j),
+					miiphy_is_1000base_x (devname, j)
+						? "X" : "T",
 					(miiphy_duplex (devname, j) == FULL)
 					(miiphy_duplex (devname, j) == FULL)
 						? "FDX" : "HDX");
 						? "FDX" : "HDX");
 			}
 			}
@@ -594,5 +596,3 @@ U_BOOT_CMD(
 );
 );
 
 
 #endif /* CONFIG_TERSE_MII */
 #endif /* CONFIG_TERSE_MII */
-
-#endif

+ 0 - 4
common/cmd_misc.c

@@ -27,8 +27,6 @@
 #include <common.h>
 #include <common.h>
 #include <command.h>
 #include <command.h>
 
 
-#if defined(CONFIG_CMD_MISC)
-
 int do_sleep (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 int do_sleep (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 {
 {
 	ulong start = get_timer(0);
 	ulong start = get_timer(0);
@@ -68,5 +66,3 @@ U_BOOT_CMD(
 	"N\n"
 	"N\n"
 	"    - delay execution for N seconds (N is _decimal_ !!!)\n"
 	"    - delay execution for N seconds (N is _decimal_ !!!)\n"
 );
 );
-
-#endif

+ 0 - 5
common/cmd_mmc.c

@@ -23,9 +23,6 @@
 
 
 #include <common.h>
 #include <common.h>
 #include <command.h>
 #include <command.h>
-
-#if defined(CONFIG_CMD_MMC)
-
 #include <mmc.h>
 #include <mmc.h>
 
 
 int do_mmc (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 int do_mmc (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
@@ -42,5 +39,3 @@ U_BOOT_CMD(
 	"mmcinit - init mmc card\n",
 	"mmcinit - init mmc card\n",
 	NULL
 	NULL
 );
 );
-
-#endif

+ 0 - 4
common/cmd_net.c

@@ -28,8 +28,6 @@
 #include <command.h>
 #include <command.h>
 #include <net.h>
 #include <net.h>
 
 
-#if defined(CONFIG_CMD_NET)
-
 extern int do_bootm (cmd_tbl_t *, int, int, char *[]);
 extern int do_bootm (cmd_tbl_t *, int, int, char *[]);
 
 
 static int netboot_common (proto_t, cmd_tbl_t *, int , char *[]);
 static int netboot_common (proto_t, cmd_tbl_t *, int , char *[]);
@@ -343,5 +341,3 @@ U_BOOT_CMD(
 	"[NTP server IP]\n"
 	"[NTP server IP]\n"
 );
 );
 #endif
 #endif
-
-#endif

+ 0 - 9
common/cmd_pci.c

@@ -30,16 +30,11 @@
  */
  */
 
 
 #include <common.h>
 #include <common.h>
-
-#ifdef CONFIG_PCI
-
 #include <command.h>
 #include <command.h>
 #include <asm/processor.h>
 #include <asm/processor.h>
 #include <asm/io.h>
 #include <asm/io.h>
 #include <pci.h>
 #include <pci.h>
 
 
-#if defined(CONFIG_CMD_PCI)
-
 extern int cmd_get_data_size(char* arg, int default_size);
 extern int cmd_get_data_size(char* arg, int default_size);
 
 
 unsigned char	ShortPCIListing = 1;
 unsigned char	ShortPCIListing = 1;
@@ -564,7 +559,3 @@ U_BOOT_CMD(
 	"pci write[.b, .w, .l] b.d.f address value\n"
 	"pci write[.b, .w, .l] b.d.f address value\n"
 	"    - write to CFG address\n"
 	"    - write to CFG address\n"
 );
 );
-
-#endif
-
-#endif /* CONFIG_PCI */

+ 0 - 4
common/cmd_portio.c

@@ -30,8 +30,6 @@
 #include <common.h>
 #include <common.h>
 #include <command.h>
 #include <command.h>
 
 
-#if defined(CONFIG_CMD_PORTIO)
-
 extern int cmd_get_data_size (char *arg, int default_size);
 extern int cmd_get_data_size (char *arg, int default_size);
 
 
 /* Display values from last command.
 /* Display values from last command.
@@ -165,5 +163,3 @@ U_BOOT_CMD(
 	"[.b, .w, .l] port\n"
 	"[.b, .w, .l] port\n"
 	"    - read datum from IO port\n"
 	"    - read datum from IO port\n"
 );
 );
-
-#endif

+ 0 - 5
common/cmd_reginfo.c

@@ -33,8 +33,6 @@
 #include <mpc5xxx.h>
 #include <mpc5xxx.h>
 #endif
 #endif
 
 
-#if defined(CONFIG_CMD_REGINFO)
-
 int do_reginfo (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 int do_reginfo (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 {
 {
 #if defined(CONFIG_8xx)
 #if defined(CONFIG_8xx)
@@ -335,9 +333,6 @@ int do_reginfo (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 	return 0;
 	return 0;
 }
 }
 
 
-#endif
-
-
  /**************************************************/
  /**************************************************/
 
 
 #if ( defined(CONFIG_8xx)   || defined(CONFIG_405GP) || \
 #if ( defined(CONFIG_8xx)   || defined(CONFIG_405GP) || \

+ 0 - 4
common/cmd_reiser.c

@@ -27,8 +27,6 @@
  * Reiserfs support
  * Reiserfs support
  */
  */
 #include <common.h>
 #include <common.h>
-
-#if defined(CONFIG_CMD_REISER)
 #include <config.h>
 #include <config.h>
 #include <command.h>
 #include <command.h>
 #include <image.h>
 #include <image.h>
@@ -239,5 +237,3 @@ U_BOOT_CMD(
 	"    - load binary file 'filename' from 'dev' on 'interface'\n"
 	"    - load binary file 'filename' from 'dev' on 'interface'\n"
 	"      to address 'addr' from dos filesystem\n"
 	"      to address 'addr' from dos filesystem\n"
 );
 );
-
-#endif

+ 6 - 7
common/cmd_scsi.c

@@ -34,8 +34,6 @@
 #include <image.h>
 #include <image.h>
 #include <pci.h>
 #include <pci.h>
 
 
-#if defined(CONFIG_CMD_SCSI)
-
 #ifdef CONFIG_SCSI_SYM53C8XX
 #ifdef CONFIG_SCSI_SYM53C8XX
 #define SCSI_VEND_ID	0x1000
 #define SCSI_VEND_ID	0x1000
 #ifndef CONFIG_SCSI_DEV_ID
 #ifndef CONFIG_SCSI_DEV_ID
@@ -129,9 +127,12 @@ void scsi_scan(int mode)
 			if((modi&0x80)==0x80) /* drive is removable */
 			if((modi&0x80)==0x80) /* drive is removable */
 				scsi_dev_desc[scsi_max_devs].removable=TRUE;
 				scsi_dev_desc[scsi_max_devs].removable=TRUE;
 			/* get info for this device */
 			/* get info for this device */
-			scsi_ident_cpy(&scsi_dev_desc[scsi_max_devs].vendor[0],&tempbuff[8],8);
-			scsi_ident_cpy(&scsi_dev_desc[scsi_max_devs].product[0],&tempbuff[16],16);
-			scsi_ident_cpy(&scsi_dev_desc[scsi_max_devs].revision[0],&tempbuff[32],4);
+			scsi_ident_cpy((unsigned char *)&scsi_dev_desc[scsi_max_devs].vendor[0],
+				       &tempbuff[8], 8);
+			scsi_ident_cpy((unsigned char *)&scsi_dev_desc[scsi_max_devs].product[0],
+				       &tempbuff[16], 16);
+			scsi_ident_cpy((unsigned char *)&scsi_dev_desc[scsi_max_devs].revision[0],
+				       &tempbuff[32], 4);
 			scsi_dev_desc[scsi_max_devs].target=pccb->target;
 			scsi_dev_desc[scsi_max_devs].target=pccb->target;
 			scsi_dev_desc[scsi_max_devs].lun=pccb->lun;
 			scsi_dev_desc[scsi_max_devs].lun=pccb->lun;
 
 
@@ -608,5 +609,3 @@ U_BOOT_CMD(
 	"scsiboot- boot from SCSI device\n",
 	"scsiboot- boot from SCSI device\n",
 	"loadAddr dev:part\n"
 	"loadAddr dev:part\n"
 );
 );
-
-#endif

+ 0 - 4
common/cmd_spi.c

@@ -29,8 +29,6 @@
 #include <command.h>
 #include <command.h>
 #include <spi.h>
 #include <spi.h>
 
 
-#if defined(CONFIG_CMD_SPI)
-
 /*-----------------------------------------------------------------------
 /*-----------------------------------------------------------------------
  * Definitions
  * Definitions
  */
  */
@@ -139,5 +137,3 @@ U_BOOT_CMD(
 	"<bit_len> - Number of bits to send (base 10)\n"
 	"<bit_len> - Number of bits to send (base 10)\n"
 	"<dout>    - Hexadecimal string that gets sent\n"
 	"<dout>    - Hexadecimal string that gets sent\n"
 );
 );
-
-#endif

+ 0 - 4
common/cmd_universe.c

@@ -28,8 +28,6 @@
 
 
 #include <universe.h>
 #include <universe.h>
 
 
-#if defined(CONFIG_CMD_UNIVERSE)
-
 #define PCI_VENDOR PCI_VENDOR_ID_TUNDRA
 #define PCI_VENDOR PCI_VENDOR_ID_TUNDRA
 #define PCI_DEVICE PCI_DEVICE_ID_TUNDRA_CA91C042
 #define PCI_DEVICE PCI_DEVICE_ID_TUNDRA_CA91C042
 
 
@@ -386,5 +384,3 @@ U_BOOT_CMD(
 	"                                      02 -> D16 Data Width\n"
 	"                                      02 -> D16 Data Width\n"
 	"                                      03 -> D32 Data Width\n"
 	"                                      03 -> D32 Data Width\n"
 );
 );
-
-#endif

+ 0 - 10
common/cmd_usb.c

@@ -29,9 +29,6 @@
 #include <command.h>
 #include <command.h>
 #include <asm/byteorder.h>
 #include <asm/byteorder.h>
 #include <part.h>
 #include <part.h>
-
-#if defined(CONFIG_CMD_USB)
-
 #include <usb.h>
 #include <usb.h>
 
 
 #ifdef CONFIG_USB_STORAGE
 #ifdef CONFIG_USB_STORAGE
@@ -608,12 +605,6 @@ int do_usb (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 	return 1;
 	return 1;
 }
 }
 
 
-
-#endif
-
-
-#if defined(CONFIG_CMD_USB)
-
 #ifdef CONFIG_USB_STORAGE
 #ifdef CONFIG_USB_STORAGE
 U_BOOT_CMD(
 U_BOOT_CMD(
 	usb,	5,	1,	do_usb,
 	usb,	5,	1,	do_usb,
@@ -645,4 +636,3 @@ U_BOOT_CMD(
 	"usb  info [dev] - show available USB devices\n"
 	"usb  info [dev] - show available USB devices\n"
 );
 );
 #endif
 #endif
-#endif

+ 161 - 22
common/fdt_support.c

@@ -44,6 +44,32 @@ struct fdt_header *fdt;
 
 
 /********************************************************************/
 /********************************************************************/
 
 
+/**
+ * fdt_find_and_setprop: Find a node and set it's property
+ *
+ * @fdt: ptr to device tree
+ * @node: path of node
+ * @prop: property name
+ * @val: ptr to new value
+ * @len: length of new property value
+ * @create: flag to create the property if it doesn't exist
+ *
+ * Convenience function to directly set a property given the path to the node.
+ */
+int fdt_find_and_setprop(void *fdt, const char *node, const char *prop,
+			 const void *val, int len, int create)
+{
+	int nodeoff = fdt_path_offset(fdt, node);
+
+	if (nodeoff < 0)
+		return nodeoff;
+
+	if ((!create) && (fdt_get_property(fdt, nodeoff, prop, 0) == NULL))
+		return 0; /* create flag not set; so exit quietly */
+
+	return fdt_setprop(fdt, nodeoff, prop, val, len);
+}
+
 int fdt_chosen(void *fdt, ulong initrd_start, ulong initrd_end, int force)
 int fdt_chosen(void *fdt, ulong initrd_start, ulong initrd_end, int force)
 {
 {
 	int   nodeoffset;
 	int   nodeoffset;
@@ -58,34 +84,23 @@ int fdt_chosen(void *fdt, ulong initrd_start, ulong initrd_end, int force)
 	}
 	}
 
 
 	if (initrd_start && initrd_end) {
 	if (initrd_start && initrd_end) {
-		struct fdt_reserve_entry re;
-		int  used;
-		int  total;
+		uint64_t addr, size;
+		int  total = fdt_num_mem_rsv(fdt);
 		int  j;
 		int  j;
 
 
-		err = fdt_num_reservemap(fdt, &used, &total);
-		if (err < 0) {
-			printf("fdt_chosen: %s\n", fdt_strerror(err));
-			return err;
-		}
-		if (used >= total) {
-			printf("WARNING: "
-				"no room in the reserved map (%d of %d)\n",
-				used, total);
-			return -1;
-		}
 		/*
 		/*
 		 * Look for an existing entry and update it.  If we don't find
 		 * Look for an existing entry and update it.  If we don't find
 		 * the entry, we will j be the next available slot.
 		 * the entry, we will j be the next available slot.
 		 */
 		 */
-		for (j = 0; j < used; j++) {
-			err = fdt_get_reservemap(fdt, j, &re);
-			if (re.address == initrd_start) {
+		for (j = 0; j < total; j++) {
+			err = fdt_get_mem_rsv(fdt, j, &addr, &size);
+			if (addr == initrd_start) {
+				fdt_del_mem_rsv(fdt, j);
 				break;
 				break;
 			}
 			}
 		}
 		}
-		err = fdt_replace_reservemap_entry(fdt, j,
-			initrd_start, initrd_end - initrd_start + 1);
+
+		err = fdt_add_mem_rsv(fdt, initrd_start, initrd_end - initrd_start + 1);
 		if (err < 0) {
 		if (err < 0) {
 			printf("fdt_chosen: %s\n", fdt_strerror(err));
 			printf("fdt_chosen: %s\n", fdt_strerror(err));
 			return err;
 			return err;
@@ -95,7 +110,7 @@ int fdt_chosen(void *fdt, ulong initrd_start, ulong initrd_end, int force)
 	/*
 	/*
 	 * Find the "chosen" node.
 	 * Find the "chosen" node.
 	 */
 	 */
-	nodeoffset = fdt_find_node_by_path (fdt, "/chosen");
+	nodeoffset = fdt_path_offset (fdt, "/chosen");
 
 
 	/*
 	/*
 	 * If we have a "chosen" node already the "force the writing"
 	 * If we have a "chosen" node already the "force the writing"
@@ -182,7 +197,7 @@ int fdt_env(void *fdt)
 	 * See if we already have a "u-boot-env" node, delete it if so.
 	 * See if we already have a "u-boot-env" node, delete it if so.
 	 * Then create a new empty node.
 	 * Then create a new empty node.
 	 */
 	 */
-	nodeoffset = fdt_find_node_by_path (fdt, "/u-boot-env");
+	nodeoffset = fdt_path_offset (fdt, "/u-boot-env");
 	if (nodeoffset >= 0) {
 	if (nodeoffset >= 0) {
 		err = fdt_del_node(fdt, nodeoffset);
 		err = fdt_del_node(fdt, nodeoffset);
 		if (err < 0) {
 		if (err < 0) {
@@ -304,7 +319,7 @@ int fdt_bd_t(void *fdt)
 	 * See if we already have a "bd_t" node, delete it if so.
 	 * See if we already have a "bd_t" node, delete it if so.
 	 * Then create a new empty node.
 	 * Then create a new empty node.
 	 */
 	 */
-	nodeoffset = fdt_find_node_by_path (fdt, "/bd_t");
+	nodeoffset = fdt_path_offset (fdt, "/bd_t");
 	if (nodeoffset >= 0) {
 	if (nodeoffset >= 0) {
 		err = fdt_del_node(fdt, nodeoffset);
 		err = fdt_del_node(fdt, nodeoffset);
 		if (err < 0) {
 		if (err < 0) {
@@ -348,4 +363,128 @@ int fdt_bd_t(void *fdt)
 }
 }
 #endif /* ifdef CONFIG_OF_HAS_BD_T */
 #endif /* ifdef CONFIG_OF_HAS_BD_T */
 
 
+void do_fixup_by_path(void *fdt, const char *path, const char *prop,
+		      const void *val, int len, int create)
+{
+#if defined(DEBUG)
+	int i;
+	debug("Updating property '%s/%s' = ", node, prop);
+	for (i = 0; i < len; i++)
+		debug(" %.2x", *(u8*)(val+i));
+	debug("\n");
+#endif
+	int rc = fdt_find_and_setprop(fdt, path, prop, val, len, create);
+	if (rc)
+		printf("Unable to update property %s:%s, err=%s\n",
+			path, prop, fdt_strerror(rc));
+}
+
+void do_fixup_by_path_u32(void *fdt, const char *path, const char *prop,
+			  u32 val, int create)
+{
+	val = cpu_to_fdt32(val);
+	do_fixup_by_path(fdt, path, prop, &val, sizeof(val), create);
+}
+
+void do_fixup_by_prop(void *fdt,
+		      const char *pname, const void *pval, int plen,
+		      const char *prop, const void *val, int len,
+		      int create)
+{
+	int off;
+#if defined(DEBUG)
+	int i;
+	debug("Updating property '%s/%s' = ", node, prop);
+	for (i = 0; i < len; i++)
+		debug(" %.2x", *(u8*)(val+i));
+	debug("\n");
+#endif
+	off = fdt_node_offset_by_prop_value(fdt, -1, pname, pval, plen);
+	while (off != -FDT_ERR_NOTFOUND) {
+		if (create || (fdt_get_property(fdt, off, prop, 0) != NULL))
+			fdt_setprop(fdt, off, prop, val, len);
+		off = fdt_node_offset_by_prop_value(fdt, off, pname, pval, plen);
+	}
+}
+
+void do_fixup_by_prop_u32(void *fdt,
+			  const char *pname, const void *pval, int plen,
+			  const char *prop, u32 val, int create)
+{
+	val = cpu_to_fdt32(val);
+	do_fixup_by_prop(fdt, pname, pval, plen, prop, &val, 4, create);
+}
+
+void do_fixup_by_compat(void *fdt, const char *compat,
+			const char *prop, const void *val, int len, int create)
+{
+	int off = -1;
+#if defined(DEBUG)
+	int i;
+	debug("Updating property '%s/%s' = ", node, prop);
+	for (i = 0; i < len; i++)
+		debug(" %.2x", *(u8*)(val+i));
+	debug("\n");
+#endif
+	off = fdt_node_offset_by_compatible(fdt, -1, compat);
+	while (off != -FDT_ERR_NOTFOUND) {
+		if (create || (fdt_get_property(fdt, off, prop, 0) != NULL))
+			fdt_setprop(fdt, off, prop, val, len);
+		off = fdt_node_offset_by_compatible(fdt, off, compat);
+	}
+}
+
+void do_fixup_by_compat_u32(void *fdt, const char *compat,
+			    const char *prop, u32 val, int create)
+{
+	val = cpu_to_fdt32(val);
+	do_fixup_by_compat(fdt, compat, prop, &val, 4, create);
+}
+
+void fdt_fixup_ethernet(void *fdt, bd_t *bd)
+{
+	int node;
+	const char *path;
+
+	node = fdt_path_offset(fdt, "/aliases");
+	if (node >= 0) {
+#if defined(CONFIG_HAS_ETH0)
+		path = fdt_getprop(fdt, node, "ethernet0", NULL);
+		if (path) {
+			do_fixup_by_path(fdt, path, "mac-address",
+				bd->bi_enetaddr, 6, 0);
+			do_fixup_by_path(fdt, path, "local-mac-address",
+				bd->bi_enetaddr, 6, 1);
+		}
+#endif
+#if defined(CONFIG_HAS_ETH1)
+		path = fdt_getprop(fdt, node, "ethernet1", NULL);
+		if (path) {
+			do_fixup_by_path(fdt, path, "mac-address",
+				bd->bi_enet1addr, 6, 0);
+			do_fixup_by_path(fdt, path, "local-mac-address",
+				bd->bi_enet1addr, 6, 1);
+		}
+#endif
+#if defined(CONFIG_HAS_ETH2)
+		path = fdt_getprop(fdt, node, "ethernet2", NULL);
+		if (path) {
+			do_fixup_by_path(fdt, path, "mac-address",
+				bd->bi_enet2addr, 6, 0);
+			do_fixup_by_path(fdt, path, "local-mac-address",
+				bd->bi_enet2addr, 6, 1);
+		}
+#endif
+#if defined(CONFIG_HAS_ETH3)
+		path = fdt_getprop(fdt, node, "ethernet3", NULL);
+		if (path) {
+			do_fixup_by_path(fdt, path, "mac-address",
+				bd->bi_enet3addr, 6, 0);
+			do_fixup_by_path(fdt, path, "local-mac-address",
+				bd->bi_enet3addr, 6, 1);
+		}
+#endif
+	}
+}
+
 #endif /* CONFIG_OF_LIBFDT */
 #endif /* CONFIG_OF_LIBFDT */

+ 156 - 126
common/miiphyutil.c

@@ -49,10 +49,10 @@
 struct mii_dev {
 struct mii_dev {
 	struct list_head link;
 	struct list_head link;
 	char *name;
 	char *name;
-	int (* read)(char *devname, unsigned char addr,
-			unsigned char reg, unsigned short *value);
-	int (* write)(char *devname, unsigned char addr,
-			unsigned char reg, unsigned short value);
+	int (*read) (char *devname, unsigned char addr,
+		     unsigned char reg, unsigned short *value);
+	int (*write) (char *devname, unsigned char addr,
+		      unsigned char reg, unsigned short value);
 };
 };
 
 
 static struct list_head mii_devs;
 static struct list_head mii_devs;
@@ -62,21 +62,21 @@ static struct mii_dev *current_mii;
  *
  *
  * Initialize global data. Need to be called before any other miiphy routine.
  * Initialize global data. Need to be called before any other miiphy routine.
  */
  */
-void miiphy_init()
+void miiphy_init ()
 {
 {
-		INIT_LIST_HEAD(&mii_devs);
-		current_mii = NULL;
+	INIT_LIST_HEAD (&mii_devs);
+	current_mii = NULL;
 }
 }
 
 
 /*****************************************************************************
 /*****************************************************************************
  *
  *
  * Register read and write MII access routines for the device <name>.
  * Register read and write MII access routines for the device <name>.
  */
  */
-void miiphy_register(char *name,
-		int (* read)(char *devname, unsigned char addr,
-			unsigned char reg, unsigned short *value),
-		int (* write)(char *devname, unsigned char addr,
-			unsigned char reg, unsigned short value))
+void miiphy_register (char *name,
+		      int (*read) (char *devname, unsigned char addr,
+				   unsigned char reg, unsigned short *value),
+		      int (*write) (char *devname, unsigned char addr,
+				    unsigned char reg, unsigned short value))
 {
 {
 	struct list_head *entry;
 	struct list_head *entry;
 	struct mii_dev *new_dev;
 	struct mii_dev *new_dev;
@@ -84,63 +84,64 @@ void miiphy_register(char *name,
 	unsigned int name_len;
 	unsigned int name_len;
 
 
 	/* check if we have unique name */
 	/* check if we have unique name */
-	list_for_each(entry, &mii_devs) {
-		miidev = list_entry(entry, struct mii_dev, link);
-		if (strcmp(miidev->name, name) == 0) {
-			printf("miiphy_register: non unique device name '%s'\n",
-					name);
+	list_for_each (entry, &mii_devs) {
+		miidev = list_entry (entry, struct mii_dev, link);
+		if (strcmp (miidev->name, name) == 0) {
+			printf ("miiphy_register: non unique device name "
+				"'%s'\n", name);
 			return;
 			return;
 		}
 		}
 	}
 	}
 
 
 	/* allocate memory */
 	/* allocate memory */
-	name_len = strlen(name);
-	new_dev = (struct mii_dev *)malloc(sizeof(struct mii_dev) + name_len + 1);
+	name_len = strlen (name);
+	new_dev =
+	    (struct mii_dev *)malloc (sizeof (struct mii_dev) + name_len + 1);
 
 
-	if(new_dev == NULL) {
-		printf("miiphy_register: cannot allocate memory for '%s'\n",
-				name);
+	if (new_dev == NULL) {
+		printf ("miiphy_register: cannot allocate memory for '%s'\n",
+			name);
 		return;
 		return;
 	}
 	}
-	memset(new_dev, 0, sizeof(struct mii_dev) + name_len);
+	memset (new_dev, 0, sizeof (struct mii_dev) + name_len);
 
 
 	/* initalize mii_dev struct fields */
 	/* initalize mii_dev struct fields */
-	INIT_LIST_HEAD(&new_dev->link);
+	INIT_LIST_HEAD (&new_dev->link);
 	new_dev->read = read;
 	new_dev->read = read;
 	new_dev->write = write;
 	new_dev->write = write;
 	new_dev->name = (char *)(new_dev + 1);
 	new_dev->name = (char *)(new_dev + 1);
-	strncpy(new_dev->name, name, name_len);
+	strncpy (new_dev->name, name, name_len);
 	new_dev->name[name_len] = '\0';
 	new_dev->name[name_len] = '\0';
 
 
-	debug("miiphy_register: added '%s', read=0x%08lx, write=0x%08lx\n",
-			new_dev->name, new_dev->read, new_dev->write);
+	debug ("miiphy_register: added '%s', read=0x%08lx, write=0x%08lx\n",
+	       new_dev->name, new_dev->read, new_dev->write);
 
 
 	/* add it to the list */
 	/* add it to the list */
-	list_add_tail(&new_dev->link, &mii_devs);
+	list_add_tail (&new_dev->link, &mii_devs);
 
 
 	if (!current_mii)
 	if (!current_mii)
 		current_mii = new_dev;
 		current_mii = new_dev;
 }
 }
 
 
-int miiphy_set_current_dev(char *devname)
+int miiphy_set_current_dev (char *devname)
 {
 {
 	struct list_head *entry;
 	struct list_head *entry;
 	struct mii_dev *dev;
 	struct mii_dev *dev;
 
 
-	list_for_each(entry, &mii_devs) {
-		dev = list_entry(entry, struct mii_dev, link);
+	list_for_each (entry, &mii_devs) {
+		dev = list_entry (entry, struct mii_dev, link);
 
 
-		if (strcmp(devname, dev->name) == 0) {
+		if (strcmp (devname, dev->name) == 0) {
 			current_mii = dev;
 			current_mii = dev;
 			return 0;
 			return 0;
 		}
 		}
 	}
 	}
 
 
-	printf("No such device: %s\n", devname);
+	printf ("No such device: %s\n", devname);
 	return 1;
 	return 1;
 }
 }
 
 
-char *miiphy_get_current_dev()
+char *miiphy_get_current_dev ()
 {
 {
 	if (current_mii)
 	if (current_mii)
 		return current_mii->name;
 		return current_mii->name;
@@ -156,8 +157,8 @@ char *miiphy_get_current_dev()
  * Returns:
  * Returns:
  *   0 on success
  *   0 on success
  */
  */
-int miiphy_read(char *devname, unsigned char addr, unsigned char reg,
-		unsigned short *value)
+int miiphy_read (char *devname, unsigned char addr, unsigned char reg,
+		 unsigned short *value)
 {
 {
 	struct list_head *entry;
 	struct list_head *entry;
 	struct mii_dev *dev;
 	struct mii_dev *dev;
@@ -165,22 +166,22 @@ int miiphy_read(char *devname, unsigned char addr, unsigned char reg,
 	int read_ret = 0;
 	int read_ret = 0;
 
 
 	if (!devname) {
 	if (!devname) {
-		printf("NULL device name!\n");
+		printf ("NULL device name!\n");
 		return 1;
 		return 1;
 	}
 	}
 
 
-	list_for_each(entry, &mii_devs) {
-		dev = list_entry(entry, struct mii_dev, link);
+	list_for_each (entry, &mii_devs) {
+		dev = list_entry (entry, struct mii_dev, link);
 
 
-		if (strcmp(devname, dev->name) == 0) {
+		if (strcmp (devname, dev->name) == 0) {
 			found_dev = 1;
 			found_dev = 1;
-			read_ret = dev->read(devname, addr, reg, value);
+			read_ret = dev->read (devname, addr, reg, value);
 			break;
 			break;
 		}
 		}
 	}
 	}
 
 
 	if (found_dev == 0)
 	if (found_dev == 0)
-		printf("No such device: %s\n", devname);
+		printf ("No such device: %s\n", devname);
 
 
 	return ((found_dev) ? read_ret : 1);
 	return ((found_dev) ? read_ret : 1);
 }
 }
@@ -193,8 +194,8 @@ int miiphy_read(char *devname, unsigned char addr, unsigned char reg,
  * Returns:
  * Returns:
  *   0 on success
  *   0 on success
  */
  */
-int miiphy_write(char *devname, unsigned char addr, unsigned char reg,
-		unsigned short value)
+int miiphy_write (char *devname, unsigned char addr, unsigned char reg,
+		  unsigned short value)
 {
 {
 	struct list_head *entry;
 	struct list_head *entry;
 	struct mii_dev *dev;
 	struct mii_dev *dev;
@@ -202,22 +203,22 @@ int miiphy_write(char *devname, unsigned char addr, unsigned char reg,
 	int write_ret = 0;
 	int write_ret = 0;
 
 
 	if (!devname) {
 	if (!devname) {
-		printf("NULL device name!\n");
+		printf ("NULL device name!\n");
 		return 1;
 		return 1;
 	}
 	}
 
 
-	list_for_each(entry, &mii_devs) {
-		dev = list_entry(entry, struct mii_dev, link);
+	list_for_each (entry, &mii_devs) {
+		dev = list_entry (entry, struct mii_dev, link);
 
 
-		if (strcmp(devname, dev->name) == 0) {
+		if (strcmp (devname, dev->name) == 0) {
 			found_dev = 1;
 			found_dev = 1;
-			write_ret = dev->write(devname, addr, reg, value);
+			write_ret = dev->write (devname, addr, reg, value);
 			break;
 			break;
 		}
 		}
 	}
 	}
 
 
 	if (found_dev == 0)
 	if (found_dev == 0)
-		printf("No such device: %s\n", devname);
+		printf ("No such device: %s\n", devname);
 
 
 	return ((found_dev) ? write_ret : 1);
 	return ((found_dev) ? write_ret : 1);
 }
 }
@@ -226,23 +227,22 @@ int miiphy_write(char *devname, unsigned char addr, unsigned char reg,
  *
  *
  * Print out list of registered MII capable devices.
  * Print out list of registered MII capable devices.
  */
  */
-void miiphy_listdev(void)
+void miiphy_listdev (void)
 {
 {
 	struct list_head *entry;
 	struct list_head *entry;
 	struct mii_dev *dev;
 	struct mii_dev *dev;
 
 
-	puts("MII devices: ");
-	list_for_each(entry, &mii_devs) {
-		dev = list_entry(entry, struct mii_dev, link);
-		printf("'%s' ", dev->name);
+	puts ("MII devices: ");
+	list_for_each (entry, &mii_devs) {
+		dev = list_entry (entry, struct mii_dev, link);
+		printf ("'%s' ", dev->name);
 	}
 	}
-	puts("\n");
+	puts ("\n");
 
 
 	if (current_mii)
 	if (current_mii)
-		printf("Current device: '%s'\n", current_mii->name);
+		printf ("Current device: '%s'\n", current_mii->name);
 }
 }
 
 
-
 /*****************************************************************************
 /*****************************************************************************
  *
  *
  * Read the OUI, manufacture's model number, and revision number.
  * Read the OUI, manufacture's model number, and revision number.
@@ -254,9 +254,7 @@ void miiphy_listdev(void)
  * Returns:
  * Returns:
  *   0 on success
  *   0 on success
  */
  */
-int miiphy_info (char *devname,
-		 unsigned char addr,
-		 unsigned int *oui,
+int miiphy_info (char *devname, unsigned char addr, unsigned int *oui,
 		 unsigned char *model, unsigned char *rev)
 		 unsigned char *model, unsigned char *rev)
 {
 {
 	unsigned int reg = 0;
 	unsigned int reg = 0;
@@ -288,13 +286,12 @@ int miiphy_info (char *devname,
 #ifdef DEBUG
 #ifdef DEBUG
 	printf ("PHY_PHYIDR[1,2] @ 0x%x = 0x%08x\n", addr, reg);
 	printf ("PHY_PHYIDR[1,2] @ 0x%x = 0x%08x\n", addr, reg);
 #endif
 #endif
-	*oui   =                 ( reg >> 10);
-	*model = (unsigned char) ((reg >>  4) & 0x0000003F);
-	*rev   = (unsigned char) ( reg        & 0x0000000F);
+	*oui = (reg >> 10);
+	*model = (unsigned char)((reg >> 4) & 0x0000003F);
+	*rev = (unsigned char)(reg & 0x0000000F);
 	return (0);
 	return (0);
 }
 }
 
 
-
 /*****************************************************************************
 /*****************************************************************************
  *
  *
  * Reset the PHY.
  * Reset the PHY.
@@ -345,104 +342,138 @@ int miiphy_reset (char *devname, unsigned char addr)
 	return (0);
 	return (0);
 }
 }
 
 
-
 /*****************************************************************************
 /*****************************************************************************
  *
  *
- * Determine the ethernet speed (10/100).
+ * Determine the ethernet speed (10/100/1000).  Return 10 on error.
  */
  */
 int miiphy_speed (char *devname, unsigned char addr)
 int miiphy_speed (char *devname, unsigned char addr)
 {
 {
-	unsigned short reg;
+	u16 bmcr, anlpar;
 
 
 #if defined(CONFIG_PHY_GIGE)
 #if defined(CONFIG_PHY_GIGE)
-	if (miiphy_read (devname, addr, PHY_1000BTSR, &reg)) {
-		printf ("PHY 1000BT Status read failed\n");
-	} else {
-		if (reg != 0xFFFF) {
-			if ((reg & (PHY_1000BTSR_1000FD | PHY_1000BTSR_1000HD)) !=0) {
-				return (_1000BASET);
-			}
-		}
+	u16 btsr;
+
+	/*
+	 * Check for 1000BASE-X.  If it is supported, then assume that the speed
+	 * is 1000.
+	 */
+	if (miiphy_is_1000base_x (devname, addr)) {
+		return _1000BASET;
+	}
+	/*
+	 * No 1000BASE-X, so assume 1000BASE-T/100BASE-TX/10BASE-T register set.
+	 */
+	/* Check for 1000BASE-T. */
+	if (miiphy_read (devname, addr, PHY_1000BTSR, &btsr)) {
+		printf ("PHY 1000BT status");
+		goto miiphy_read_failed;
+	}
+	if (btsr != 0xFFFF &&
+	    (btsr & (PHY_1000BTSR_1000FD | PHY_1000BTSR_1000HD))) {
+		return _1000BASET;
 	}
 	}
 #endif /* CONFIG_PHY_GIGE */
 #endif /* CONFIG_PHY_GIGE */
 
 
 	/* Check Basic Management Control Register first. */
 	/* Check Basic Management Control Register first. */
-	if (miiphy_read (devname, addr, PHY_BMCR, &reg)) {
-		puts ("PHY speed read failed, assuming 10bT\n");
-		return (_10BASET);
+	if (miiphy_read (devname, addr, PHY_BMCR, &bmcr)) {
+		printf ("PHY speed");
+		goto miiphy_read_failed;
 	}
 	}
 	/* Check if auto-negotiation is on. */
 	/* Check if auto-negotiation is on. */
-	if ((reg & PHY_BMCR_AUTON) != 0) {
+	if (bmcr & PHY_BMCR_AUTON) {
 		/* Get auto-negotiation results. */
 		/* Get auto-negotiation results. */
-		if (miiphy_read (devname, addr, PHY_ANLPAR, &reg)) {
-			puts ("PHY AN speed read failed, assuming 10bT\n");
-			return (_10BASET);
-		}
-		if ((reg & PHY_ANLPAR_100) != 0) {
-			return (_100BASET);
-		} else {
-			return (_10BASET);
+		if (miiphy_read (devname, addr, PHY_ANLPAR, &anlpar)) {
+			printf ("PHY AN speed");
+			goto miiphy_read_failed;
 		}
 		}
+		return (anlpar & PHY_ANLPAR_100) ? _100BASET : _10BASET;
 	}
 	}
 	/* Get speed from basic control settings. */
 	/* Get speed from basic control settings. */
-	else if (reg & PHY_BMCR_100MB) {
-		return (_100BASET);
-	} else {
-		return (_10BASET);
-	}
+	return (bmcr & PHY_BMCR_100MB) ? _100BASET : _10BASET;
 
 
+      miiphy_read_failed:
+	printf (" read failed, assuming 10BASE-T\n");
+	return _10BASET;
 }
 }
 
 
-
 /*****************************************************************************
 /*****************************************************************************
  *
  *
- * Determine full/half duplex.
+ * Determine full/half duplex.  Return half on error.
  */
  */
 int miiphy_duplex (char *devname, unsigned char addr)
 int miiphy_duplex (char *devname, unsigned char addr)
 {
 {
-	unsigned short reg;
+	u16 bmcr, anlpar;
 
 
 #if defined(CONFIG_PHY_GIGE)
 #if defined(CONFIG_PHY_GIGE)
-	if (miiphy_read (devname, addr, PHY_1000BTSR, &reg)) {
-		printf ("PHY 1000BT Status read failed\n");
-	} else {
-		if ( (reg != 0xFFFF) &&
-		     (reg & (PHY_1000BTSR_1000FD | PHY_1000BTSR_1000HD)) ) {
-			if ((reg & PHY_1000BTSR_1000FD) !=0) {
-				return (FULL);
-			} else {
-				return (HALF);
-			}
+	u16 btsr;
+
+	/* Check for 1000BASE-X. */
+	if (miiphy_is_1000base_x (devname, addr)) {
+		/* 1000BASE-X */
+		if (miiphy_read (devname, addr, PHY_ANLPAR, &anlpar)) {
+			printf ("1000BASE-X PHY AN duplex");
+			goto miiphy_read_failed;
+		}
+	}
+	/*
+	 * No 1000BASE-X, so assume 1000BASE-T/100BASE-TX/10BASE-T register set.
+	 */
+	/* Check for 1000BASE-T. */
+	if (miiphy_read (devname, addr, PHY_1000BTSR, &btsr)) {
+		printf ("PHY 1000BT status");
+		goto miiphy_read_failed;
+	}
+	if (btsr != 0xFFFF) {
+		if (btsr & PHY_1000BTSR_1000FD) {
+			return FULL;
+		} else if (btsr & PHY_1000BTSR_1000HD) {
+			return HALF;
 		}
 		}
 	}
 	}
 #endif /* CONFIG_PHY_GIGE */
 #endif /* CONFIG_PHY_GIGE */
 
 
 	/* Check Basic Management Control Register first. */
 	/* Check Basic Management Control Register first. */
-	if (miiphy_read (devname, addr, PHY_BMCR, &reg)) {
-		puts ("PHY duplex read failed, assuming half duplex\n");
-		return (HALF);
+	if (miiphy_read (devname, addr, PHY_BMCR, &bmcr)) {
+		puts ("PHY duplex");
+		goto miiphy_read_failed;
 	}
 	}
 	/* Check if auto-negotiation is on. */
 	/* Check if auto-negotiation is on. */
-	if ((reg & PHY_BMCR_AUTON) != 0) {
+	if (bmcr & PHY_BMCR_AUTON) {
 		/* Get auto-negotiation results. */
 		/* Get auto-negotiation results. */
-		if (miiphy_read (devname, addr, PHY_ANLPAR, &reg)) {
-			puts ("PHY AN duplex read failed, assuming half duplex\n");
-			return (HALF);
-		}
-
-		if ((reg & (PHY_ANLPAR_10FD | PHY_ANLPAR_TXFD)) != 0) {
-			return (FULL);
-		} else {
-			return (HALF);
+		if (miiphy_read (devname, addr, PHY_ANLPAR, &anlpar)) {
+			puts ("PHY AN duplex");
+			goto miiphy_read_failed;
 		}
 		}
+		return (anlpar & (PHY_ANLPAR_10FD | PHY_ANLPAR_TXFD)) ?
+		    FULL : HALF;
 	}
 	}
 	/* Get speed from basic control settings. */
 	/* Get speed from basic control settings. */
-	else if (reg & PHY_BMCR_DPLX) {
-		return (FULL);
-	} else {
-		return (HALF);
-	}
+	return (bmcr & PHY_BMCR_DPLX) ? FULL : HALF;
+
+      miiphy_read_failed:
+	printf (" read failed, assuming half duplex\n");
+	return HALF;
+}
 
 
+/*****************************************************************************
+ *
+ * Return 1 if PHY supports 1000BASE-X, 0 if PHY supports 10BASE-T/100BASE-TX/
+ * 1000BASE-T, or on error.
+ */
+int miiphy_is_1000base_x (char *devname, unsigned char addr)
+{
+#if defined(CONFIG_PHY_GIGE)
+	u16 exsr;
+
+	if (miiphy_read (devname, addr, PHY_EXSR, &exsr)) {
+		printf ("PHY extended status read failed, assuming no "
+			"1000BASE-X\n");
+		return 0;
+	}
+	return 0 != (exsr & (PHY_EXSR_1000XF | PHY_EXSR_1000XH));
+#else
+	return 0;
+#endif
 }
 }
 
 
 #ifdef CFG_FAULT_ECHO_LINK_DOWN
 #ifdef CFG_FAULT_ECHO_LINK_DOWN
@@ -455,7 +486,7 @@ int miiphy_link (char *devname, unsigned char addr)
 	unsigned short reg;
 	unsigned short reg;
 
 
 	/* dummy read; needed to latch some phys */
 	/* dummy read; needed to latch some phys */
-	(void)miiphy_read(devname, addr, PHY_BMSR, &reg);
+	(void)miiphy_read (devname, addr, PHY_BMSR, &reg);
 	if (miiphy_read (devname, addr, PHY_BMSR, &reg)) {
 	if (miiphy_read (devname, addr, PHY_BMSR, &reg)) {
 		puts ("PHY_BMSR read failed, assuming no link\n");
 		puts ("PHY_BMSR read failed, assuming no link\n");
 		return (0);
 		return (0);
@@ -469,5 +500,4 @@ int miiphy_link (char *devname, unsigned char addr)
 	}
 	}
 }
 }
 #endif
 #endif
-
 #endif /* CONFIG_MII */
 #endif /* CONFIG_MII */

+ 1 - 1
common/spartan2.c

@@ -516,7 +516,7 @@ static int Spartan2_ss_load (Xilinx_desc * desc, void *buf, size_t bsize)
 				(*fn->clk) (FALSE, TRUE, cookie);
 				(*fn->clk) (FALSE, TRUE, cookie);
 				CONFIG_FPGA_DELAY ();
 				CONFIG_FPGA_DELAY ();
 				/* Write data */
 				/* Write data */
-				(*fn->wr) ((val < 0), TRUE, cookie);
+				(*fn->wr) ((val & 0x80), TRUE, cookie);
 				CONFIG_FPGA_DELAY ();
 				CONFIG_FPGA_DELAY ();
 				/* Assert the clock */
 				/* Assert the clock */
 				(*fn->clk) (TRUE, TRUE, cookie);
 				(*fn->clk) (TRUE, TRUE, cookie);

+ 1 - 1
common/spartan3.c

@@ -521,7 +521,7 @@ static int Spartan3_ss_load (Xilinx_desc * desc, void *buf, size_t bsize)
 				(*fn->clk) (FALSE, TRUE, cookie);
 				(*fn->clk) (FALSE, TRUE, cookie);
 				CONFIG_FPGA_DELAY ();
 				CONFIG_FPGA_DELAY ();
 				/* Write data */
 				/* Write data */
-				(*fn->wr) ((val < 0), TRUE, cookie);
+				(*fn->wr) ((val & 0x80), TRUE, cookie);
 				CONFIG_FPGA_DELAY ();
 				CONFIG_FPGA_DELAY ();
 				/* Assert the clock */
 				/* Assert the clock */
 				(*fn->clk) (TRUE, TRUE, cookie);
 				(*fn->clk) (TRUE, TRUE, cookie);

+ 1 - 1
common/usb_kbd.c

@@ -257,7 +257,7 @@ static int usb_kbd_translate(unsigned char scancode,unsigned char modifier,int p
 		repeat_delay=REPEAT_DELAY;
 		repeat_delay=REPEAT_DELAY;
 	}
 	}
 	keycode=0;
 	keycode=0;
-	if((scancode>3) && (scancode<0x1d)) { /* alpha numeric values */
+	if((scancode>3) && (scancode<=0x1d)) { /* alpha numeric values */
 		keycode=scancode-4 + 0x61;
 		keycode=scancode-4 + 0x61;
 		if(caps_lock)
 		if(caps_lock)
 			keycode&=~CAPITAL_MASK; /* switch to capital Letters */
 			keycode&=~CAPITAL_MASK; /* switch to capital Letters */

+ 1 - 1
common/usb_storage.c

@@ -1195,7 +1195,7 @@ int usb_stor_get_info(struct usb_device *dev,struct us_data *ss,block_dev_desc_t
 	dev_desc->product[16] = 0;
 	dev_desc->product[16] = 0;
 	dev_desc->revision[4] = 0;
 	dev_desc->revision[4] = 0;
 #ifdef CONFIG_USB_BIN_FIXUP
 #ifdef CONFIG_USB_BIN_FIXUP
-	usb_bin_fixup(dev->descriptor, dev_desc->vendor, dev_desc->product);
+	usb_bin_fixup(dev->descriptor, (uchar *)dev_desc->vendor, (uchar *)dev_desc->product);
 #endif /* CONFIG_USB_BIN_FIXUP */
 #endif /* CONFIG_USB_BIN_FIXUP */
 	USB_STOR_PRINTF("ISO Vers %X, Response Data %X\n",usb_stor_buf[2],usb_stor_buf[3]);
 	USB_STOR_PRINTF("ISO Vers %X, Response Data %X\n",usb_stor_buf[2],usb_stor_buf[3]);
 	if(usb_test_unit_ready(pccb,ss)) {
 	if(usb_test_unit_ready(pccb,ss)) {

+ 3 - 4
config.mk

@@ -69,10 +69,6 @@ PLATFORM_CPPFLAGS+= -D__ARM__
 endif
 endif
 endif
 endif
 
 
-ifeq ($(ARCH),blackfin)
-PLATFORM_CPPFLAGS+= -D__BLACKFIN__
-endif
-
 ifdef	ARCH
 ifdef	ARCH
 sinclude $(TOPDIR)/$(ARCH)_config.mk	# include architecture dependend rules
 sinclude $(TOPDIR)/$(ARCH)_config.mk	# include architecture dependend rules
 endif
 endif
@@ -91,6 +87,9 @@ ifdef	BOARD
 sinclude $(TOPDIR)/board/$(BOARDDIR)/config.mk	# include board specific rules
 sinclude $(TOPDIR)/board/$(BOARDDIR)/config.mk	# include board specific rules
 endif
 endif
 
 
+# Load generated board configuration
+sinclude $(OBJTREE)/include/autoconf.mk
+
 #########################################################################
 #########################################################################
 
 
 CONFIG_SHELL	:= $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
 CONFIG_SHELL	:= $(shell if [ -x "$$BASH" ]; then echo $$BASH; \

+ 1 - 1
cpu/arm920t/s3c24x0/Makefile

@@ -26,7 +26,7 @@ include $(TOPDIR)/config.mk
 LIB	= $(obj)lib$(SOC).a
 LIB	= $(obj)lib$(SOC).a
 
 
 COBJS	= i2c.o interrupts.o serial.o speed.o \
 COBJS	= i2c.o interrupts.o serial.o speed.o \
-	  usb.o
+	  usb.o usb_ohci.o
 
 
 SRCS	:= $(SOBJS:.o=.S) $(COBJS:.o=.c)
 SRCS	:= $(SOBJS:.o=.S) $(COBJS:.o=.c)
 OBJS	:= $(addprefix $(obj),$(SOBJS) $(COBJS))
 OBJS	:= $(addprefix $(obj),$(SOBJS) $(COBJS))

Some files were not shown because too many files changed in this diff